# A "dev-shell" for Python projects ;)
[![Test](https://github.com/jedie/dev-shell/actions/workflows/test.yml/badge.svg?branch=bugfix-path)](https://github.com/jedie/dev-shell/actions/workflows/test.yml)
[![codecov](https://codecov.io/gh/jedie/dev-shell/branch/main/graph/badge.svg)](https://codecov.io/gh/jedie/dev-shell)
[![ddev-shell @ PyPi](https://img.shields.io/pypi/v/dev-shell?label=dev-shell%20%40%20PyPi)
![Python Versions](https://img.shields.io/pypi/pyversions/dev-shell)
![License GPL V3+](https://img.shields.io/pypi/l/dev-shell)](https://pypi.org/project/dev-shell/)
This small project is intended to improve the start-up for collaborators.
The idea is to make the project setup as simple as possible. Just clone the sources and start a script and you're done ;)
Why in hell not just a `Makefile`? Because it doesn't out-of-the-box under Windows and MacOS, the dev-shell does ;)
Run Tests? Just start the script and call the "run test command".
The "dev-shell" is the base to create a CLI and a shell. It also shows how to make a project bootstrap as simply as possible, e.g.:
```bash
~$ git clone https://github.com/jedie/dev-shell.git
~$ cd dev-shell
~/dev-shell$ ./devshell.py pytest
```
## How it works
First start of the Python script [./devshell.py](https://github.com/jedie/dev-shell/blob/main/devshell.py) will bootstrap:
* Generate a Python virtual environment (in short: `venv`)
* Install poetry
* Install project dependencies and the project himself
The output on first bootstrap start looks like:
```bash
~/dev-shell$ ./devshell.py
Create venv here: ~/dev-shell/.venv
Collecting pip
...
Successfully installed pip-21.0.1
Collecting poetry
...
Installing dependencies from lock file
Package operations: 31 installs, 1 update, 0 removals
...
Installing the current project: dev-shell (0.0.1alpha0)
+ .venv/bin/python .venv/bin/devshell
Developer shell - dev_shell - v0.2.0
Documented commands (use 'help -v' for verbose/'help <topic>' for details):
dev-shell commands
==================
fix_code_style linting list_venv_packages publish pytest update
...
(dev_shell) quit
~/dev-shell$
```
The first bootstrap start takes a few seconds. Each later startup detects the existing virtualenv and is very fast:
```bash
~/dev-shell$ ./devshell.py
Developer shell - dev_shell - v0.2.0
(dev_shell) help
```
Info: The `.venv` will be automatically updated via `poetry install` call if the `poetry.lock` file has been changed.
A call with `--update` will force to call some create/update steps, e.g.:
```bash
~/dev-shell$ ./devshell.py --update
```
You can also just delete `/.venv/` and start `devshell.py` again ;)
(Using `--update` is not to be confused with the call of "update" command.)
## compatibility
| dev-shell version | OS | Python version |
|-------------------|-------------------------|---------------------|
| >=v0.7.0 | Linux + MacOS + Windows | 3.11, 3.10, 3.9 |
| >=v0.5.0 | Linux + MacOS + Windows | 3.10, 3.9, 3.8, 3.7 |
| >=v0.0.1 | Linux + MacOS + Windows | 3.9, 3.8, 3.7 |
See also github test configuration: [.github/workflows/test.yml](https://github.com/jedie/dev-shell/blob/main/.github/workflows/test.yml)
## History
* [*dev*](https://github.com/jedie/dev-shell/compare/v0.8.0...main)
* TBC
* [0.8.0 - 2024-04-09](https://github.com/jedie/dev-shell/compare/v0.7.0...v0.8.0)
* Remove "gnureadline" as dependency
* update boot script
* update requirements
* [0.7.0 - 2023-04-25](https://github.com/jedie/dev-shell/compare/v0.6.1...v0.7.0)
* Update test matrix
* update requirements
* [0.6.1 - 2022-09-02](https://github.com/jedie/dev-shell/compare/v0.6.0...v0.6.1)
* Set default subprocess timeout to 5 Min.
* Skip buggy Poetry v1.2.0
* Update requirements
* [0.6.0 - 2022-07-19](https://github.com/jedie/dev-shell/compare/v0.5.0...v0.6.0)
* Add "pyupgrade" as shell command
* [0.5.0 - 2022-05-29](https://github.com/jedie/dev-shell/compare/v0.4.0...v0.5.0)
* Add "tox" and "poetry" commands to call them installed in created ```.venv```
* Update requirements
* [v0.4.0 - 2022-02-28](https://github.com/jedie/dev-shell/compare/v0.3.0...v0.4.0)
* Update to new cmd2, colorama and pytest versions
* [v0.3.0 - 2022-01-30](https://github.com/jedie/dev-shell/compare/v0.2.4...v0.3.0)
* Remove "flynt" form linting/fix code style
* [v0.2.4 - 2022-01-30](https://github.com/jedie/dev-shell/compare/v0.2.3...v0.2.4)
* Update requirements
* Use darker as code formatter and pytest-darker for linting
* [v0.2.3 - 2021-11-15](https://github.com/jedie/dev-shell/compare/v0.2.2...v0.2.3)
* Update requirements
* [Flynt arguments can be changes via CommandSet](https://github.com/jedie/dev-shell/issues/29)
* [v0.2.2 - 2021-04-13](https://github.com/jedie/dev-shell/compare/v0.2.1...v0.2.2)
* Include bootstrap file, to it's possible to use it in external projects, too.
* [v0.2.1 - 2021-04-12](https://github.com/jedie/dev-shell/compare/v0.2.0...v0.2.1)
* Handle if "poetry-publish" is not installed, so a project that used "dev-shell" must not install it.
* [v0.2.0 - 2021-04-11](https://github.com/jedie/dev-shell/compare/v0.1.0...v0.2.0)
* Rename: "dev-shell.py => devshell.py" because of better autocomplete
* Add `DevShellConfig.base_path` and use it in own commands like, `pytest`, `linting` etc. (So they are usable in external project, too.)
* recognize "--update" and "--help" arguments better in `./devshell.py` calls.
* Update `setuptools` on `.venv` creation, too.
* Fix Bugs/tests under Windows
* [v0.1.0 - 2021-03-22](https://github.com/jedie/dev-shell/compare/v0.0.2...v0.1.0)
* Fix CI usage: Exit with correct return code if tests failed
* Better "run as CLI" implementation via new `run_cmd2_app()`
* Bugfix errors that only occur on Windows.
* Simplify `devshell.py` boot script and fix raise error if `ensurepip` missing
* [v0.0.2 - 2021-03-19](https://github.com/jedie/dev-shell/compare/v0.0.1...v0.0.2)
* refactor colorful shortcuts
* display subprocess calls with separated colors
* [v0.0.1 - 2021-03-19](https://github.com/jedie/dev-shell/compare/ad5dca...v0.0.1)
* first "useable" version
## Project links
* Github: https://github.com/jedie/dev-shell/
* PyPi: https://pypi.org/project/dev-shell/
Raw data
{
"_id": null,
"home_page": "https://github.com/jedie/dev-shell",
"name": "dev-shell",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Jens Diemer",
"author_email": "python@jensdiemer.de",
"download_url": "https://files.pythonhosted.org/packages/3b/96/719977eef904a2042fdebf5f80e7a74e06a6f5b0d9f73689129595315501/dev_shell-0.8.0.tar.gz",
"platform": null,
"description": "# A \"dev-shell\" for Python projects ;)\n\n[![Test](https://github.com/jedie/dev-shell/actions/workflows/test.yml/badge.svg?branch=bugfix-path)](https://github.com/jedie/dev-shell/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/jedie/dev-shell/branch/main/graph/badge.svg)](https://codecov.io/gh/jedie/dev-shell)\n\n[![ddev-shell @ PyPi](https://img.shields.io/pypi/v/dev-shell?label=dev-shell%20%40%20PyPi)\n![Python Versions](https://img.shields.io/pypi/pyversions/dev-shell)\n![License GPL V3+](https://img.shields.io/pypi/l/dev-shell)](https://pypi.org/project/dev-shell/)\n\nThis small project is intended to improve the start-up for collaborators.\n\nThe idea is to make the project setup as simple as possible. Just clone the sources and start a script and you're done ;)\n\nWhy in hell not just a `Makefile`? Because it doesn't out-of-the-box under Windows and MacOS, the dev-shell does ;)\n\nRun Tests? Just start the script and call the \"run test command\".\n\nThe \"dev-shell\" is the base to create a CLI and a shell. It also shows how to make a project bootstrap as simply as possible, e.g.:\n\n```bash\n~$ git clone https://github.com/jedie/dev-shell.git\n~$ cd dev-shell\n~/dev-shell$ ./devshell.py pytest\n```\n\n\n## How it works\n\nFirst start of the Python script [./devshell.py](https://github.com/jedie/dev-shell/blob/main/devshell.py) will bootstrap:\n\n* Generate a Python virtual environment (in short: `venv`)\n* Install poetry\n* Install project dependencies and the project himself\n\nThe output on first bootstrap start looks like:\n\n```bash\n~/dev-shell$ ./devshell.py\nCreate venv here: ~/dev-shell/.venv\nCollecting pip\n...\nSuccessfully installed pip-21.0.1\nCollecting poetry\n...\nInstalling dependencies from lock file\n\nPackage operations: 31 installs, 1 update, 0 removals\n\n...\n\nInstalling the current project: dev-shell (0.0.1alpha0)\n\n\n+ .venv/bin/python .venv/bin/devshell\n\n\nDeveloper shell - dev_shell - v0.2.0\n\n\nDocumented commands (use 'help -v' for verbose/'help <topic>' for details):\n\ndev-shell commands\n==================\nfix_code_style linting list_venv_packages publish pytest update\n\n...\n\n(dev_shell) quit\n~/dev-shell$\n```\n\nThe first bootstrap start takes a few seconds. Each later startup detects the existing virtualenv and is very fast:\n\n```bash\n~/dev-shell$ ./devshell.py\n\nDeveloper shell - dev_shell - v0.2.0\n\n(dev_shell) help\n```\n\nInfo: The `.venv` will be automatically updated via `poetry install` call if the `poetry.lock` file has been changed.\n\nA call with `--update` will force to call some create/update steps, e.g.:\n\n```bash\n~/dev-shell$ ./devshell.py --update\n```\n\nYou can also just delete `/.venv/` and start `devshell.py` again ;)\n\n(Using `--update` is not to be confused with the call of \"update\" command.)\n\n\n## compatibility\n\n| dev-shell version | OS | Python version |\n|-------------------|-------------------------|---------------------|\n| >=v0.7.0 | Linux + MacOS + Windows | 3.11, 3.10, 3.9 |\n| >=v0.5.0 | Linux + MacOS + Windows | 3.10, 3.9, 3.8, 3.7 |\n| >=v0.0.1 | Linux + MacOS + Windows | 3.9, 3.8, 3.7 |\n\nSee also github test configuration: [.github/workflows/test.yml](https://github.com/jedie/dev-shell/blob/main/.github/workflows/test.yml)\n\n## History\n\n* [*dev*](https://github.com/jedie/dev-shell/compare/v0.8.0...main)\n * TBC\n* [0.8.0 - 2024-04-09](https://github.com/jedie/dev-shell/compare/v0.7.0...v0.8.0)\n * Remove \"gnureadline\" as dependency\n * update boot script\n * update requirements\n* [0.7.0 - 2023-04-25](https://github.com/jedie/dev-shell/compare/v0.6.1...v0.7.0)\n * Update test matrix\n * update requirements\n* [0.6.1 - 2022-09-02](https://github.com/jedie/dev-shell/compare/v0.6.0...v0.6.1)\n * Set default subprocess timeout to 5 Min.\n * Skip buggy Poetry v1.2.0\n * Update requirements\n* [0.6.0 - 2022-07-19](https://github.com/jedie/dev-shell/compare/v0.5.0...v0.6.0)\n * Add \"pyupgrade\" as shell command\n* [0.5.0 - 2022-05-29](https://github.com/jedie/dev-shell/compare/v0.4.0...v0.5.0)\n * Add \"tox\" and \"poetry\" commands to call them installed in created ```.venv```\n * Update requirements\n* [v0.4.0 - 2022-02-28](https://github.com/jedie/dev-shell/compare/v0.3.0...v0.4.0)\n * Update to new cmd2, colorama and pytest versions\n* [v0.3.0 - 2022-01-30](https://github.com/jedie/dev-shell/compare/v0.2.4...v0.3.0)\n * Remove \"flynt\" form linting/fix code style\n* [v0.2.4 - 2022-01-30](https://github.com/jedie/dev-shell/compare/v0.2.3...v0.2.4)\n * Update requirements\n * Use darker as code formatter and pytest-darker for linting\n* [v0.2.3 - 2021-11-15](https://github.com/jedie/dev-shell/compare/v0.2.2...v0.2.3)\n * Update requirements\n * [Flynt arguments can be changes via CommandSet](https://github.com/jedie/dev-shell/issues/29)\n* [v0.2.2 - 2021-04-13](https://github.com/jedie/dev-shell/compare/v0.2.1...v0.2.2)\n * Include bootstrap file, to it's possible to use it in external projects, too.\n* [v0.2.1 - 2021-04-12](https://github.com/jedie/dev-shell/compare/v0.2.0...v0.2.1)\n * Handle if \"poetry-publish\" is not installed, so a project that used \"dev-shell\" must not install it.\n* [v0.2.0 - 2021-04-11](https://github.com/jedie/dev-shell/compare/v0.1.0...v0.2.0)\n * Rename: \"dev-shell.py => devshell.py\" because of better autocomplete\n * Add `DevShellConfig.base_path` and use it in own commands like, `pytest`, `linting` etc. (So they are usable in external project, too.)\n * recognize \"--update\" and \"--help\" arguments better in `./devshell.py` calls.\n * Update `setuptools` on `.venv` creation, too.\n * Fix Bugs/tests under Windows\n* [v0.1.0 - 2021-03-22](https://github.com/jedie/dev-shell/compare/v0.0.2...v0.1.0)\n * Fix CI usage: Exit with correct return code if tests failed\n * Better \"run as CLI\" implementation via new `run_cmd2_app()`\n * Bugfix errors that only occur on Windows.\n * Simplify `devshell.py` boot script and fix raise error if `ensurepip` missing\n* [v0.0.2 - 2021-03-19](https://github.com/jedie/dev-shell/compare/v0.0.1...v0.0.2)\n * refactor colorful shortcuts\n * display subprocess calls with separated colors\n* [v0.0.1 - 2021-03-19](https://github.com/jedie/dev-shell/compare/ad5dca...v0.0.1)\n * first \"useable\" version\n\n## Project links\n\n* Github: https://github.com/jedie/dev-shell/\n* PyPi: https://pypi.org/project/dev-shell/\n\n",
"bugtrack_url": null,
"license": "GNU General Public License v3.0",
"summary": "Developer shell for easy startup...",
"version": "0.8.0",
"project_urls": {
"Homepage": "https://github.com/jedie/dev-shell"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "669bb6abf5b25c0e4c11e446ce178c56a7ddd14c871af75486a256b88cbe85bf",
"md5": "0eb1c590ccdaa8c4be3bb445cfc5a2fd",
"sha256": "1cd01a88975705b66fb1c12cb940aaad4f0a152b2a7d38ff5775306624e7315d"
},
"downloads": -1,
"filename": "dev_shell-0.8.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0eb1c590ccdaa8c4be3bb445cfc5a2fd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 33023,
"upload_time": "2024-04-09T09:27:05",
"upload_time_iso_8601": "2024-04-09T09:27:05.189515Z",
"url": "https://files.pythonhosted.org/packages/66/9b/b6abf5b25c0e4c11e446ce178c56a7ddd14c871af75486a256b88cbe85bf/dev_shell-0.8.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3b96719977eef904a2042fdebf5f80e7a74e06a6f5b0d9f73689129595315501",
"md5": "4b50026fa97218af993d1a52b8a98fb0",
"sha256": "c15e9ebbef641f0e828c2d32bf3abef816120e6006565d6b4b082276945b85f9"
},
"downloads": -1,
"filename": "dev_shell-0.8.0.tar.gz",
"has_sig": false,
"md5_digest": "4b50026fa97218af993d1a52b8a98fb0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 29305,
"upload_time": "2024-04-09T09:27:06",
"upload_time_iso_8601": "2024-04-09T09:27:06.563145Z",
"url": "https://files.pythonhosted.org/packages/3b/96/719977eef904a2042fdebf5f80e7a74e06a6f5b0d9f73689129595315501/dev_shell-0.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-09 09:27:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jedie",
"github_project": "dev-shell",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "dev-shell"
}