To start, you need to setup your local machine.
You need to setup virtual environment, simplest way is to run from project root directory:
$ . ./setup_dev_env.sh
$ source venv/bin/activate
This will create a new venv and run pip install -r requirements-dev.txt
.
Last line shows how to activate the environment.
To ensure code quality we use pre-commit hook with several checks. Setup it by:
pre-commit install
All updated files will be reformatted and linted before the commit.
To reformat and lint all files in the project, use:
pre-commit run --all-files
The used linters are configured in .pre-commit-config.yaml
. You can use pre-commit autoupdate
to bump tools to the latest versions.
When you install project's package add below code (before imports) in your notebook:
# Load the "autoreload" extension
%load_ext autoreload
# Change mode to always reload modules: you change code in src, it gets loaded
%autoreload 2
Read more about different modes in documentation.
All code should be in src/
to make reusability and review straightforward, keep notebooks simple for exploratory data analysis.
See also Cookiecutter Data Science opinion.
In docs/
directory are Sphinx RST/Markdown files.
To build documentation locally, in your configured environment, you can use build_docs.sh
script:
$ ./build_docs.sh
Then open public/index.html
file.
Please read the official Sphinx documentation for more details.
By default Github Actions pipelines have documentation
workflow which will build sphinx documentation automatically on main branch - and it will push it to a branch - it can be hosted on Github Pages if you enable it.
To access it, you need to enable it, on Github repository -> Settings -> Pages page select Deploy from a branch and select gh-pages. Link will appear here after deployment.
WARNING: Only on Github Enterprise you can make it private so only people with repository access can view it.
Please read more about it here.
To bump version of the library please use bump2version
which will update all version strings.
NOTE: Configuration is in .bumpversion.cfg
and this is a main file defining version which should be updated only with bump2version.
For convenience there is bash script which will create commit, to use it call:
# to create a new commit by increasing one semvar:
$ ./bump_version.sh minor
$ ./bump_version.sh major
$ ./bump_version.sh patch
# to see what is going to change run:
$ ./bump_version.sh --dry-run major
Script updates VERSION file and setup.cfg automatically uses that version.
You can configure it to update version string in other files as well - please check out the bump2version configuration file.
Follow these steps to build your Python package and upload a new version to PyPI:
-
Commit the latest changes Ensure all your recent changes are committed to your local repository.
-
Bump the package version Run the version bump script:
./bump_version.sh {minor/major/patch}
-
Commit the version bump Add and commit the version change to your repository.
-
Remove the
dist
directory Delete the existingdist
directory to clean previous builds. -
Build the package Create the source and wheel distributions using the
build
package:python -m build
-
Publish the package Upload the new version to PyPI using Twine:
twine upload dist/*
-
Push to the remote GitHub repository Push all your commits to the remote repository.