Development And Publishing ========================== Environment Setup ----------------- To create a local virtualenv, run:: make setup This will create a virtualenv at ``./venv``, install dependencies with pip, and install pyright using npm. To activate the environment in your shell:: . ./venv/bin/activate Alternately, run everything with the make tasks, which source the activate script before running commands. conda ~~~~~ To create a Conda environment, run:: conda env create npm i To update the environment, run:: conda env update npm i --update To activate the environment, run:: conda activate pyee The other Makefile tasks should operate normally if the environment is activated. Formatting, Linting and Testing ------------------------------- The basics are wrapped with a Makefile:: make format # runs black make lint # runs flake8 make test # runs pytest Generating Docs --------------- Docs for published projects are automatically generated by readthedocs, but you can also preview them locally by running:: make build_docs Then, you can serve them with Python's dev server with:: make serve_docs Publishing ---------- Do a Final Check ~~~~~~~~~~~~~~~~ Make sure that formatting looks good and that linting and testing are passing. Update the Changelog ~~~~~~~~~~~~~~~~~~~~ Update the CHANGELOG.rst file to detail the changes being rolled into the new version. Update the Version in setup.py ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This project *used* to use ``vcversioner`` and versioning of the package would automatically leverage the appropriate git tag, but that is no longer the case. I do my best to follow `semver ` when updating versions. Add a Git Tag ~~~~~~~~~~~~~ This project uses git tags to tag versions:: git tag -a {version} -m 'Release {version}' You don't need to prefix the version with a ``v``. Build and Publish ~~~~~~~~~~~~~~~~~ To package everything, run:: make package To publish:: make publish Push the Tag to GitHub ~~~~~~~~~~~~~~~~~~~~~~ :: git push origin main --tags Check on RTD ~~~~~~~~~~~~ RTD should build automatically but I find there's a delay so I like to kick it off manually. Log into `RTD `, log in, then go to `the pyee project page ` and build latest and stable. Announce on Twitter ~~~~~~~~~~~~~~~~~~~ It's not official, but I like to announce the release on Twitter.