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

GitHub last commit pre-commit Security Status Static Analysis Status

Table of Contents

Indices