devshim¶
Overview¶
Non-intrusive, portable development support shim. Provides single point of entry to many common development tasks, everything from running multiple linters to running tests across multiple Python implementations and versions to building and publishing packages to PyPI.
Beware: Alpha software! This is currently used by some of my own projects, including python-lockup, but is not considered stable and production-ready yet. In particular, there is some work to make this fully portable on Windows.
Quick Tour¶
$ eval "$(/usr/bin/python3 develop.py ease)"
$ devshim --list
Subcommands:
bootstrap Bootstraps the development environment and utilities.
ease Prints shell functions for easier invocation.
push Pushes commits on current branch, plus all tags.
run Runs command in virtual environment.
test Runs the test suite in Python virtual environment.
build.python-venv Creates virtual environment for requested Python version.
build.release-branch Makes a new branch for development torwards a release.
change.version-patch Bumps to next patch level.
change.version-piece Bumps a piece of the current version.
change.version-stage Bumps to next release stage.
check.pip-install Checks import of current package after installation via Pip.
check.pypackages Checks for security issues in installed Python packages.
check.pypi-integrity Checks integrity of project packages on PyPI.
check.pypi-readme Checks that the README will render correctly on PyPI.
check.sphinx-urls Checks the HTTP URLs in the documentation for liveness.
clean.ALL (clean) Cleans all caches.
clean.pycaches Removes all caches of compiled CPython bytecode.
clean.pypackages Removes unused Python packages.
clean.tool-caches Clears the caches used by code generation and testing utilities.
freshen.ALL (freshen) Performs the various freshening tasks, cleaning first.
freshen.git-hooks Updates Git hooks to latest tagged release.
freshen.git-modules Performs recursive update of all Git modules.
freshen.pypackages Updates declared Python packages in Python virtual environment.
freshen.python Updates requested Python version, if newer one available.
install.git-hooks Installs hooks to check goodness of code before commit.
install.python Installs requested Python version.
lint.ALL (lint) Lints the source code.
lint.bandit Security checks the source code with Bandit.
lint.mypy Lints the source code with Mypy.
lint.pylint Lints the source code with Pylint.
lint.semgrep Lints the source code with Semgrep.
lint.yapf Checks code style of new changes.
make.ALL (make) Generates all of the artifacts.
make.coverage Combines multiple code coverage results into a single report.
make.html Generates documentation as HTML artifacts.
make.sdist Packages the Python sources for release.
make.wheel Packages a Python wheel for release.
publish.github-pages Publishes Sphinx HTML output to Github Pages for project.
publish.new-patch Unleashes a new patch upon the world.
publish.new-stage Unleashes a new stage upon the world.
publish.pypi Publishes current sdist and wheels to PyPI.
publish.test-pypi Publishes current sdist and wheels to Test PyPI.
show.python Lists names of default supported Python version.
More Flair¶
…than the required minimum