poetry is a required package to develop.
$ git clone https://github.com/vcs-python/libvcs.git
$ cd libvcs
$ poetry install -E "docs test coverage lint format"
Makefile commands prefixed with
watch_ will watch files and rerun.
$ poetry run py.test
make test Rerun tests on file change:
make watch_test (requires entr(1))
Default preview server: http://localhost:8068
sphinx-autobuild will automatically build the docs, watch for file changes and launch a server.
From home directory:
make start_docs From inside
Manual documentation (the hard way)#
cd docs/ and
make html to build.
make serve to start http server.
Rebuild docs on file change:
make watch_docs (requires entr(1))
Rebuild docs and run server via one terminal:
make dev_docs (requires above, and a
-J support, e.g. GNU Make)
make black isort: Run
isortto handle import nuances
flake8 provides fast, reliable, barebones styling and linting.
$ poetry run flake8
If you setup manually:
$ make flake8
$ make watch_flake8
[flake8] in setup.cfg.
[flake8] exclude = .*/,.tox,*.egg,src/libvcs/__*__.py, select = E,W,F,N max-line-length = 88 # Stuff we ignore thanks to black: https://github.com/ambv/black/issues/429 ignore = E203,W503
mypy is used for static type checking.
$ poetry run mypy .
If you setup manually:
$ mypy .
$ make mypy
$ make watch_mypy
Since this software used in production projects, we don’t want to release breaking changes.
Choose what the next version is. Assuming it’s version 0.9.0, it could be:
0.9.0post0: postrelease, if there was a packaging issue
0.9.1: bugfix / security / tweak
0.10.0: breaking changes, new features
Let’s assume we pick 0.9.1
CHANGES: Assure any PRs merged since last release are mentioned. Give a thank you to the
contributor. Set the header with the new version and the date. Leave the “current” header and
Insert changes/features/fixes for next release here at the top::
current ------- - *Insert changes/features/fixes for next release here* libvcs 0.9.1 (2020-10-12) ------------------------- - :issue:`1`: Fix bug
__about__.py - Set version
$ git commit -m 'Tag v0.9.1'
$ git tag v0.9.1
git push and
git push --tags, CI will automatically build and deploy to PyPI.
As of 0.10, poetry handles virtualenv creation, package requirements, versioning, building, and publishing. Therefore there is no setup.py or requirements files.
git commit -m 'build(libvcs): Tag v0.1.1' git tag v0.1.1 git push git push --tags poetry build poetry publish