|
| 1 | +# Development |
| 2 | + |
| 3 | +[poetry] is a required package to develop. |
| 4 | + |
| 5 | +`git clone https://github.com/tmux-python/libtmux.git` |
| 6 | + |
| 7 | +`cd libtmux` |
| 8 | + |
| 9 | +`poetry install -E "docs test coverage lint format"` |
| 10 | + |
| 11 | +Makefile commands prefixed with `watch_` will watch files and rerun. |
| 12 | + |
| 13 | +## Tests |
| 14 | + |
| 15 | +`poetry run py.test` |
| 16 | + |
| 17 | +Helpers: `make test` |
| 18 | +Rerun tests on file change: `make watch_test` (requires [entr(1)]) |
| 19 | + |
| 20 | +## Documentation |
| 21 | + |
| 22 | +Default preview server: http://localhost:8023 |
| 23 | + |
| 24 | +`cd docs/` and `make html` to build. `make serve` to start http server. |
| 25 | + |
| 26 | +Helpers: |
| 27 | +`make build_docs`, `make serve_docs` |
| 28 | + |
| 29 | +Rebuild docs on file change: `make watch_docs` (requires [entr(1)]) |
| 30 | + |
| 31 | +Rebuild docs and run server via one terminal: `make dev_docs` (requires above, and a |
| 32 | +`make(1)` with `-J` support, e.g. GNU Make) |
| 33 | + |
| 34 | +## Formatting / Linting |
| 35 | + |
| 36 | +The project uses [black] and [isort] (one after the other) and runs [flake8] via |
| 37 | +CI. See the configuration in `pyproject.toml` and `setup.cfg`: |
| 38 | + |
| 39 | +`make black isort`: Run `black` first, then `isort` to handle import nuances |
| 40 | +`make flake8`, to watch (requires `entr(1)`): `make watch_flake8` |
| 41 | + |
| 42 | +## Releasing |
| 43 | + |
| 44 | +As of 0.10, [poetry] handles virtualenv creation, package requirements, versioning, |
| 45 | +building, and publishing. Therefore there is no setup.py or requirements files. |
| 46 | + |
| 47 | +Update `__version__` in `__about__.py` and `pyproject.toml`:: |
| 48 | + |
| 49 | + git commit -m 'build(libtmux): Tag v0.1.1' |
| 50 | + git tag v0.1.1 |
| 51 | + git push |
| 52 | + git push --tags |
| 53 | + poetry build |
| 54 | + poetry deploy |
| 55 | + |
| 56 | +[poetry]: https://python-poetry.org/ |
| 57 | +[entr(1)]: http://eradman.com/entrproject/ |
| 58 | +[black]: https://github.com/psf/black |
| 59 | +[isort]: https://pypi.org/project/isort/ |
| 60 | +[flake8]: https://flake8.pycqa.org/ |
0 commit comments