Skip to main content

A "dev-shell" for Python projects ;)

dev_shell @ PyPi Python Versions License GPL-3.0-or-later

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.:

At least uv is needed. Install e.g.: via pipx:

apt-get install pipx
pipx install uv

Clone the project and just start the CLI help commands. A virtual environment will be created/updated automatically.

~$ git clone https://codeberg.org/jedie/dev-shell.git
~$ cd dev-shell
~/dev-shell$ devshell.py --help
~/dev-shell$ devshell.py test

The output looks like:

Cmd2 Commands
─────────────
alias  help  history  macro  quit  set  shortcuts

dev-shell commands
──────────────────
coverage        install             publish    test    version
fix_code_style  list_venv_packages  pyupgrade  update

compatibility

dev-shell version OS Python version
>=v0.10.0 Linux + MacOS + Windows 3.14, 3.13, 3.12
>=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:

History

  • v0.12.0
    • 2026-09-15 - Give up GitHub -> Codeberg / OpenCommit / GitLab / Redicle
    • 2026-08-07 - Use always latest versions for local development
    • 2026-08-07 - remove obsolete v3.9 fallback
    • 2026-08-07 - update outdated command docstring
    • 2026-06-11 - Update README.md
  • v0.11.1
    • 2026-06-11 - fix _print_info() if Path instance pass as arguments
  • v0.11.0
    • 2026-06-11 - Remove uv.lock from this repo: It's a library not a project
    • 2026-06-11 - nox: reuse venv
    • 2026-06-11 - NEW: CategorizedCommandSet replacement for @cmd2.with_default_category()
    • 2026-06-11 - fix linting
    • 2026-06-11 - Update requirements
    • 2026-05-29 - Bump uv from 0.11.6 to 0.11.15
    • 2026-04-10 - Bump uv from 0.10.4 to 0.11.6
    • 2026-04-08 - Bump cryptography from 46.0.6 to 46.0.7
    • 2026-03-30 - Bump pygments from 2.19.2 to 2.20.0
    • 2026-03-29 - Bump cryptography from 46.0.5 to 46.0.6
  • v0.10.2
    • 2026-02-19 - apply manageprojects updates
    • 2026-02-19 - Bugfix colorful helpers if a Path instance should be printed.
Expand older history entries ...
  • v0.10.1
    • 2026-02-10 - Bugfix text color styles
  • v0.10.0
    • 2026-02-10 - Cleanup
    • 2026-02-09 - Update project
  • v0.9.1
    • 2025-03-11 - Fix usage as package in external projects
  • v0.9.0
    • 2025-03-11 - fix publish
    • 2025-03-11 - Replace poetry with uv
  • v0.8.0
    • 2024-04-09 - Bump version to v0.8.0
    • 2024-04-09 - Remove "gnureadline" as dependency and update boot script
    • 2024-04-09 - Remove "gnureadline" as dependency
    • 2023-07-09 - Update requirements
  • v0.7.0
    • 2023-04-25 - Bugfix RedirectStdOutErr
    • 2023-04-25 - Update test matrix
    • 2023-04-25 - Update requirements
    • 2022-09-19 - skip linting (we use darker)
    • 2022-09-19 - CI: cache packages
  • v0.6.1
    • 2022-09-02 - Update README.md
    • 2022-09-02 - v0.6.1 - update tests adn README
    • 2022-09-02 - remove "pytest-flake8" and "pytest-isort"
    • 2022-09-02 - update requirements
    • 2022-09-02 - Call "poetry update" with "-v"
    • 2022-09-02 - skip Poetry v1.2.0
    • 2022-09-02 - Set default timeout to 5Min.
  • v0.6.0
    • 2022-07-19 - updates
    • 2022-07-19 - dd "pyupgrade" as shell command
    • 2022-07-19 - Update README.md
    • 2022-07-19 - Update requirements
  • v0.5.0
    • 2022-05-29 - update flake8 config
    • 2022-05-29 - simplify isort config
    • 2022-05-29 - fix isort checks
    • 2022-05-29 - v0.5.0.rc1
    • 2022-05-29 - update tox settings
    • 2022-05-29 - line_length = 100
    • 2022-05-29 - call github tests via tox
    • 2022-05-29 - Add "tox" and "poetry" commands
    • 2022-05-29 - Test also with Python 3.10
    • 2022-05-29 - Update requirements
  • v0.4.0
    • 2022-02-28 - Release v0.4.0
    • 2022-02-28 - Update requirements
  • v0.3.0
    • 2022-01-30 - Remove "flynt" form linting/fix code style
  • v0.2.4
    • 2022-01-22 - Switch to darker and use pytest-darker
    • 2022-01-22 - update requirements
  • v0.2.3
    • 2021-11-15 - Fix #29 - Flynt args can be change via CommandSet
    • 2021-11-15 - update requirements
    • 2021-11-15 - Update test.yml
  • v0.2.2
    • 2021-04-12 - include source "bootstrap" file
  • v0.2.1
    • 2021-04-12 - Handle if "poetry-publish" is not installed
  • v0.2.0
    • 2021-04-11 - Fix flake8 call: Remove arguments and add .flake8 config file
    • 2021-04-11 - Update dependencies + add "update" command
    • 2021-04-11 - Release 0.2.0rc1
    • 2021-04-11 - Fix #24 test under windows
    • 2021-04-10 - The DocTest will not work on Windows. Replace it with a normal test ;)
    • 2021-04-10 - Bugfix error on Windows: File "C:\Users\sysop\PycharmProjects\dev-shell\dev_shell\utils\subprocess_utils.py", line 125, in prepare_popenargs command = shutil.which(command_path, path=bin_path) File "C:\Users\sysop\AppData\Local\Programs\Python\Python39\lib\shutil.py", line 1441, in which if any(cmd.lower().endswith(ext.lower()) for ext in pathext): File "C:\Users\sysop\AppData\Local\Programs\Python\Python39\lib\shutil.py", line 1441, in if any(cmd.lower().endswith(ext.lower()) for ext in pathext): AttributeError: 'WindowsPath' object has no attribute 'lower' EXCEPTION of type 'AttributeError' occurred with message: ''WindowsPath' object has no attribute 'lower''
    • 2021-04-10 - Replace "SubprocessMock" with a simple function
    • 2021-04-10 - Bugfix calls outside the project directory...
    • 2021-04-10 - Do linting via tests
    • 2021-04-10 - Update also "setuptools", too.
    • 2021-04-05 - fix tests
    • 2021-04-05 - code style
    • 2021-04-05 - recognize "--update" and "--help" calls better
    • 2021-04-05 - remove "max-parallel"
    • 2021-03-26 - Rename: "dev-shell.py => devshell.py" and add tests for it
    • 2021-03-26 - Auto update .venv if poetry.lock changed
    • 2021-03-22 - Update README.md
    • 2021-03-22 - Remove "path" argument from flynt and autopep8
  • v0.1.0
    • 2021-03-22 - release v0.1.0
    • 2021-03-22 - Better "run as CLI" implementation
    • 2021-03-22 - Update README.md
    • 2021-03-19 - Bugfix handle of sys.exit() and return code (Imporant for CI usage)
    • 2021-03-22 - Update test.yml
    • 2021-03-20 - +!.github
    • 2021-03-20 - Update dev-shell.py
    • 2021-03-20 - add gitignore
    • 2021-03-19 - Bugfix subprocess call: Don't feed shutil.which() with Path() instance
  • v0.0.2
    • 2021-03-19 - refactor colorful
  • v0.0.1
    • 2021-03-19 - activate codecov.io
    • 2021-03-19 - Run linters on github actions
    • 2021-03-19 - Bugfix linting
    • 2021-03-19 - bump to version v0.0.1
    • 2021-03-19 - refactor and add linting and "fix_code_style" commands
    • 2021-03-19 - fix code style
    • 2021-03-19 - subprocess utils: Search for command in PATH
    • 2021-03-19 - update requirements
    • 2021-03-19 - Create a generic CmdAppBaseTestCase
    • 2021-03-19 - code cleanup
    • 2021-03-19 - Update README.md
    • 2021-03-19 - Bugfix Python 3.7 subprocess calls with Path() instances
    • 2021-03-19 - Bugfixes for windows
    • 2021-03-19 - Test on macos, too - TODO: Add windows support
    • 2021-03-19 - Update README
    • 2021-03-18 - add readme
    • 2021-03-18 - bugfix github action
    • 2021-03-18 - Activate github actions
    • 2021-03-18 - make it alive
    • 2021-03-18 - init
    • 2021-03-18 - Initial commit

GitHub suspended me!

Important notice:


GitHub suspended my account sometime in late August 2026 ! There was no warning beforehand, nor any explanation of the reasons afterwards. Since then, I have had no access or control over my data on GitHub.

All my projects and everything about me have completely disappeared. Everything just results in a 404 "Not Found" error page.

A support request still hasn't been answered, even after several weeks (apart from a confirmation that the request was received).

For that reason, I have been looking for a new home for all my OpenSource projects. (Or rather, I am in the process of republishing all my projects elsewhere.)

Now you can find my on these places:

That is why there will probably be a lot of broken links pointing to my GitHub account for quite some time!

#GitHubSuspendedMe #GiveUpGitHub


Metadata

Release files for dev-shell 0.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dev-shell 0.12.0
File Size Uploaded
dev_shell-0.12.0.tar.gz 29.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dev-shell 0.12.0
File Interpreter ABI Platform
dev_shell-0.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 63.1 kB

Release files / dev_shell-0.12.0.tar.gz

Download URL dev_shell-0.12.0.tar.gz
Size 29.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f55bd931102a3b88a84400dad5f13f3d6b97d5ca33b20f9cd43b68f430539275
BLAKE2b-256 checksum
How to use checksums
053be64a8b273541e055a19a5854033f4fe19692e2fe442bb9fa5fb685ecca9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / dev_shell-0.12.0-py3-none-any.whl

Download URL dev_shell-0.12.0-py3-none-any.whl
Size 33.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
61ca648cee9fbba333db831f4dda940f503424df343fa955f09cfa32ba2f96b2
BLAKE2b-256 checksum
How to use checksums
278e276e3c66bbbe3f02e667ca4b9cf064d275bfaba69a470c1c1aa0e3a64677
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page