Skip to main content

Scripts that help release new versions of software.

Project description

bugyi.release_tools

Scripts that help release new versions of software.

Badges 📛

project status badges:

CI Workflow Coverage Documentation Status Package Health

version badges:

Project Version Python Versions Cookiecutter: cc-python Docker: bbugyi/python

tools / frameworks used by test suite (i.e. used by make test):

Framework: pytest Framework: doctest Runner: tox Types: typeguard Mocks: pytest-mock Snapshots: syrupy

linters used to maintain code quality (i.e. used by make lint):

Linter: pylint Linter: flake8 Types: mypy Docstrings: pydocstyle Code Style: black Imports: isort

tools / frameworks used to render documentation (i.e used by make build-docs):

Rendered By: sphinx Hosted On: readthedocs Types: sphinx-autodoc-typehints Markdown: m2r2

miscellaneous tools used to maintain this project:

Cookiecutter Updates: cruft Requirements: pip-tools Releases: bump2version Versioning: setuptools_scm

Useful Links 🔗

Generic cc-python Documentation 📄

🔢 Basic Usage

Before making a PR please run the following

  • Optional one time setup: run make use-docker if you need to build/test this with docker
  • make lint to check for any format or convention issues
  • make test to run all tests

❓ How do I ...?

🔧 See available make targets

To see available make targets, simply run make.

🐳 Switch to and from using Docker

To start using Docker, run make use-docker. Every subsequent make command you run will then be run inside the associated container whenever appropriate.

To stop using Docker, run make remove-docker. Every subsequent make command you run will then be run inside your native virtual environment whenever appropriate.

🛠 Add a new pip dependency

New dependencies need to be added to requirements.in. Your requirements.txt will then automatically be updated to reflect those changes the next time a relevant make target is run. Alternatively, you can run make update-requirements.

Note:

  • Before any make command is run, requirements are synced so that the development environment matches your requirements.txt exactly i.e. extra packages that are not present in the requirements.txt are removed and any missing packages are installed. This helps providing a consistent environment across platforms, and ensures that whenever requirements change, only minimal updates are performed.
  • Check out pip-tools for more information.
🙈 Ignore linting violations

For flake8 violations, you can:

  • ignore a rule for a single line of code using a #noqa comment e.g.
x = 1 # noqa: WPS111
  • ignore a rule for an entire file by adding it to flake8.per-file-ignores inside setup.cfg.
  • exclude an entire file from flake8 checks by adding it to flake8.exclude inside setup.cfg.
  • ignore a rule for all files by adding it to the flake8.ignore list inside setup.cfg.

For mypy violations, you can:

  • ignore type checking for a single line of code using a # type: ignore comment.
  • ignore type checking for an entire file by putting a # type: ignore comment at the top of a module (before any statements, including imports or docstrings).

For pydocstyle violations, you can:

  • ignore a rule for a single line of code using a # noqa comment (this can be combined with flake8 exclusions).
  • exclude an entire file from pydocstyle checks by excluding it from pydocstyle.match inside setup.cfg.
  • ignore a rule for all files by adding it to the pydocstyle.ignore list inside setup.cfg.

For coverage violations, you can:

  • exclude a single line of code using a # pragma: no cover comment.
  • exclude an entire file from coverage checks by adding it to the coverage:run.omit list inside setup.cfg.
  • exclude all lines matching a given pattern by adding it to the coverage:report.exclude_lines list inside setup.cfg.
🧪 Run specific tests

First, get a shell inside your development environment by running make dev-shell.

You can then use the pytest -k option to select tests based on their names, e.g.

python -m pytest -k "included_test"

You can also use "and", "or" and "not" keywords e.g.

python -m pytest -k "included_test or not excluded"
📄 Build and view docs from a local version

You can generate docs locally by running make build-docs. You can then see the generated docs by running

cd docs/build
python -m http.server

and going to http://localhost:8000/

🍪 Update my project to match the cookiecutter which generated it

This project is enabled with cruft to be able to update the template with any improvements made in the cc-python cookie cutter which generated it.

  • make check-cc will report if this project is up to date or out of sync with the cookiecutter.
  • make update-cc will update this project to be in sync with the cc-python cookiecutter. This can give improvements or new features which are added to the template after this project was created. Note one should do this on a clean branch. After running this it is a good idea to run make all to rebuild everything and ensure things still work after the update.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bugyi.release_tools-0.1.0.tar.gz (26.3 kB view hashes)

Uploaded Source

Built Distribution

bugyi.release_tools-0.1.0-py3-none-any.whl (6.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page