Contributing
Tensora is free and open source software developed under an MIT license. Development occurs at the GitHub project. Contributions, big and small, are welcome.
Bug reports and feature requests may be made directly on the issues tab.
To make a pull request, you will need to fork the repo, clone the repo, make the changes, run the tests, push the changes, and open a PR.
Cloning the repo
To make a local copy of Tensora, clone the repository with git:
git clone https://github.com/drhagen/tensora.git
Installing from source
Tensora uses uv for project and environment management with Hatchling as its build backend. In whatever environment you prefer, ensure uv is installed and then use uv to install Tensora and its dependencies:
uv sync
Testing
Tensora uses pytest to run the tests in the tests/
directory. The test command is encapsulated with Nox:
uv run nox -s test test_taco test_cffi test_numpy
This will try to test with all compatible Python versions that nox
can find. To run the tests with only a particular version, run something like this:
uv run nox -s test-3.10 test_taco-3.10 test_cffi-3.10 test_numpy-3.10
It is good to run the tests locally before making a PR, but it is not necessary to have all Python versions run. It is rare for a failure to appear in a single version, and the CI will catch it anyway.
Code quality
Tensora uses Ruff to ensure a minimum standard of code quality. The code quality commands are encapsulated with Nox:
uv run nox -s format
uv run nox -s lint
Generating the docs
Tensora uses MkDocs to generate HTML docs from Markdown. For development purposes, they can be served locally without needing to build them first:
uv run mkdocs serve
To deploy the current docs to GitHub Pages, Tensora uses the MkDocs gh-deploy
command that builds the static site on the gh-pages
branch, commits, and pushes to the origin:
uv run mkdocs gh-deploy
Making a release
- Bump
- Increment version in
pyproject.toml
- Run
uv lock
- Commit with message "Bump version number to X.Y.Z"
- Push commit to GitHub
- Check CI to ensure all tests pass
- Increment version in
- Tag
- Document
- Create GitHub release with name "Tensora X.Y.Z" and major changes in body
- If appropriate, deploy updated docs