{"id":15019709,"url":"https://github.com/janik6n/jetzt","last_synced_at":"2025-12-14T18:04:17.723Z","repository":{"id":51399105,"uuid":"97131321","full_name":"janik6n/jetzt","owner":"janik6n","description":"Light-weight project manager for Python projects.","archived":false,"fork":false,"pushed_at":"2021-05-12T03:14:36.000Z","size":103,"stargazers_count":9,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-31T02:36:24.126Z","etag":null,"topics":["flask","jupyter","linux","macos","project-management","python","python-development","python-packages","python3","scaffold","tools","utility","virtualenv"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/janik6n.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-13T14:24:20.000Z","updated_at":"2023-05-14T15:26:07.000Z","dependencies_parsed_at":"2022-09-10T14:11:06.180Z","dependency_job_id":null,"html_url":"https://github.com/janik6n/jetzt","commit_stats":null,"previous_names":["janikarh/jetzt"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janik6n%2Fjetzt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janik6n%2Fjetzt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janik6n%2Fjetzt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janik6n%2Fjetzt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/janik6n","download_url":"https://codeload.github.com/janik6n/jetzt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237990670,"owners_count":19398475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","jupyter","linux","macos","project-management","python","python-development","python-packages","python3","scaffold","tools","utility","virtualenv"],"created_at":"2024-09-24T19:53:55.180Z","updated_at":"2025-10-24T14:32:18.182Z","avatar_url":"https://github.com/janik6n.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jetzt\n\n[![version](https://img.shields.io/pypi/v/jetzt.svg?style=flat)](https://pypi.org/project/jetzt/)\n[![platform](https://img.shields.io/pypi/pyversions/jetzt.svg?style=flat)](https://pypi.org/project/jetzt/)\n[![wheel](https://img.shields.io/pypi/wheel/jetzt.svg?style=flat)](https://pypi.org/project/jetzt/)\n[![downloads](https://img.shields.io/pypi/dm/jetzt.svg?style=flat)](https://pypi.org/project/jetzt/)\n[![license](https://img.shields.io/github/license/janikarh/jetzt.svg?style=flat)](https://github.com/janikarh/jetzt/blob/master/LICENSE)\n\nLight-weight project manager for Python projects.\n\nThis is a tiny tool built to automate repetitive manual tasks, when creating a new Python development project and managing project dependencies. What you will end up with, when using *jetzt*?\n\n1. A new **project directory** under your *current directory*.\n1. A new *virtualenv* named `venv` under the project directory with the System-level installed Python 3.6+ version.\n1. The virtualenv will have `pip` and `setuptools` installed and updated to latest available versions.\n1. Additional packages will be installed based on the selected project type.\n1. Depending on the project type, other resources may be created to initialize a new project (all from within this repo).\n\n## Prerequisites\n\nThis has been tested on the following setups:\n\n1. MacOS Sierra 10.12.6 and newer\n    1. Python 3.6+ (installed via *Homebrew*)\n    1. Zsh shell (with oh-my-zsh)\n1. Fedora 29\n    1. Python 3.6+\n    1. Bash and Bourne shells\n\nThings should probably work nicely on older releases of macOS / OS X and on various Linux distros too. **Python 3.6+ is expected.**\n\n[A changelog](https://github.com/janikarh/jetzt/blob/master/CHANGELOG.md) is maintained.\n\n- [Create new project](#create-new-project)\n- [Manage Python dependencies](#manage-python-dependencies)\n  - [Install a dependency](#install-a-dependency)\n  - [List installed dependencies](#list-installed-dependencies)\n  - [List outdated dependencies](#list-outdated-dependencies)\n  - [Update outdated dependency](#update-outdated-dependency)\n  - [Remove installed dependency](#remove-installed-dependency)\n  - [Reinstall all dependencies](#reinstall-all-dependencies)\n  - [Create requirements files](#create-requirements-files)\n\n## Create new project\n\nRun `jetzt --scaffold` in the directory, where you want to place your project directory, and follow the prompt.\n\n### Scaffolding options\n\nYou have couple of options for a new project.\n\nEach project will have the following packages installed as *development dependencies*:\n\n- flake8\n- pytest\n- jetzt\n\nThese will be listed in `requirements-dev.txt`.\n\nA metadata file `jetzt_metadata.json` is maintained, and this will be used to manage the project metadata, including installed dependencies. This should be committed to git along with the rest of the project files.\n\n#### Python - [Blank]\n\nThis scaffolding option is meant to be a good starting point for a generic Python project. This option will not install any additional packages.\n\n#### Python - Flask\n\nThis scaffolding option is meant to be a good starting point for a new Flask-based webapp / API project. This option will install the following packages:\n\n- Flask\n\nThese will be listed in `requirements.txt`.\n\n#### Python - Jupyter\n\nThis scaffolding option is meant to be a good starting point for a new data science / analytics project. This option will install the following packages:\n\n- jupyter + ipykernel\n- pandas\n- matplotlib\n- seaborn\n\nThese will be listed in `requirements.txt`.\n\nAlso a `data`-directory will be created, and [this notebook](https://github.com/janikarh/jetzt/blob/master/jetzt/seeds/python_jupyter/starting-point.ipynb) will be copied to the project root (the notebook is included in the installation package).\n\nAfter scaffolding, start a jupyter server by running `jupyter-notebook` in the project root directory.\n\n## Manage Python dependencies\n\nAll dependency management takes place within a *virtualenv* (created with `jetzt --scaffold`), so **make sure you have activated the project's environment before running these commands with `source venv/bin/activate`**. There is naturally the standard way of using *pip* to install dependencies, and manually add them to `requirements.txt`, etc.\n\n*Jetzt* includes an option to install and manage the dependencies for you. Please continue reading.\n\n### Install a dependency\n\nTo install a package `requests`, run `jetzt --install` and follow the prompt. You have an option to install the package as *a production dependency* or as *a development dependency*. What does all this mean, you might ask? Jetzt will:\n\n1. Install the package *requests* (latest available version).\n2. Add the package `requests` to `jetzt_metadata.json` with a version requirement set to minimum of the currently installed version. The packages, which *requests* depends on, are *not* added. You can install a dependency as a `DEV` dependency too.\n\n**At the moment, you can only install one package at a time.**\n\nExample of a defined dependency with a version (as a installation requirement, or as seen in `jetzt_metadata.json`):\n\n```\nrequests\u003e=2.21.0\n```\n\n**Version pinning:** To install a specific version of a package, add the version, just as you would with pip. For example: `requests==2.20.1`. This will pin the version like so:\n\n```\nrequests==2.20.1\n```\n\n### List installed dependencies\n\nTo list installed dependencies, run `jetzt --list`.\n\n\n### List outdated dependencies\n\nTo list outdated dependencies, run `jetzt --outdated`.\n\n### Update outdated dependency\n\nTo update an outdated dependency, run `jetzt --update`. This will allow you to choose an outdated dependency to update. After the update, the command will update the outdated dependency list automatically.\n\n### Remove installed dependency\n\nTo remove an installed dependency, run `jetzt --remove`. This will list all installed dependencies, and let's you choose which one you want to remove. After the update, the command will update the outdated dependency list automatically.\n\n### Reinstall all dependencies\n\nTo reinstall all dependencies (excluding editable), run `jetzt --reinstall`. The dependency versions are pinned temporarily for installation, so yo will end up with the same version as before the reinstallation. *Make sure, you are in active virtualenv.*\n\n### Create requirements files\n\nRun `jetzt --create-requirements` to generate standard `requirements.txt` and `requirements-dev.txt` based on `jetzt_metadata.json`.\n\n## License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanik6n%2Fjetzt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanik6n%2Fjetzt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanik6n%2Fjetzt/lists"}