Skip to content

Development

Version Python versions Pull requests welcome

Python application Publish cffconvert

📥 Install for development

Clone the repository and go in the project folder:

git clone https://github.com/fair-workflows/nanopub
cd nanopub

To install the project for development you can either use venv to create a virtual environment yourself, or use hatch to automatically handle virtual environments for you.

Create the virtual environment in the project folder :

python3 -m venv .venv

Activate the virtual environment:

source .venv/bin/activate

Install all dependencies required for development:

pip install -e ".[dev,doc,test]"

Install pre-commit to enable automated formatting and linting of the code at each commit:

pre-commit install

Install Hatch, this will automatically handle virtual environments and make sure all dependencies are installed when you run a script in the project:

pip install hatch
Optionally you can improve hatch terminal completion

See the official documentation for more details. For ZSH you can run these commands:

_HATCH_COMPLETE=zsh_source hatch > ~/.hatch-complete.zsh
echo ". ~/.hatch-complete.zsh" >> ~/.zshrc

🧑‍💻 Development workflow

Try to sign a nanopublication with the code defined in scripts/dev.py to test your changes:

./scripts/dev.sh

The code will be automatically formatted when you commit your changes using pre-commit. But you can also run the script to format the code yourself:

./scripts/format.sh

Check the code for errors, and if it is in accordance with the PEP8 style guide, by running flake8 and mypy:

./scripts/lint.sh

Try to sign a nanopublication with the code defined in scripts/dev.py to test your changes:

hatch run dev

The code will be automatically formatted when you commit your changes using pre-commit. But you can also run the script to format the code yourself:

hatch run format

Check the code for errors, and if it is in accordance with the PEP8 style guide, by running flake8 and mypy:

hatch run lint

✅ Run the tests

Python application

Tests are automatically run by a GitHub Actions workflow when new code is pushed to the GitHub repository.

The tests use the nanopub-java tool for validating the signing process implemented in python produces similar nanopublications. This is automatically installed by the library, just make sure java is available where you run the tests.

Run the tests locally:

./scripts/test.sh

You can also run only a specific test:

./scripts/test.sh tests/test_nanopub.py::test_nanopub_sign_uri

Run the tests locally:

hatch run test

You can also run only a specific test:

hatch run test tests/test_nanopub.py::test_nanopub_sign_uri

📖 Generate docs

Publish docs

The documentation (this website) is automatically generated from the markdown files in the docs folder and python docstring comments, and published by a GitHub Actions workflow.

Serve the docs on http://localhost:8008

./scripts/docs.sh
hatch run docs

🏷️ Publish a new release

Publish to PyPI

  1. Increment the __version__ in nanopub/_version.py
  2. Push to GitHub
  3. Create a new release on GitHub
  4. A GitHub Action workflow will automatically publish the new version to PyPI