Welcome, and thank you for contributing to the project!
This project uses Poetry for project management. Some tasks have been standardized to execute via the Poe task runner.
We recommend that you install Poetry using pipx so that it's isolated from the sammo codebase.
pipx install poetry
Optional, but recommended: have poetry create a venv in the project folder rather than in its cache dir
poetry config virtualenvs.in-project true --local
conda create --name sammo python=3.11
conda activate sammo
Note: you can skip the poetry run
prefix for the rest of the commands if you use a conda env.
Check out and install the dev dependencies
# assume HTTPS, adjust for SSH
git clone https://github.com/microsoft/sammo.git
cd sammo
poetry install --with dev
Set up pre-commit hooks
poetry run pre-commit install
Show the configured tasks available through the Poe runner:
poetry run poe
The pytest tests can be run using the following command
poetry run poe test
arguments can be appended (ie for verbose mode)
poetry run poe test -v
poetry run poe type-check
This project uses Jupyter Book for documentation. The documentation configuration and contents are contained in the docs
folder.
To build the documentation, run the following command:
poetry run poe build-docs
to preview it using Python's built-in HTTP server, run:
poetry run poe serve-docs
This will open a server accessible at http://localhost:8000 to preview the documentation site. You can change the host and port as needed (these arguments just pass through to the call to http.server
):
poetry run poe serve-docs -b 0.0.0.0 8001
All changes must come through a pull request on a feature branch.
-
If there isn't an existing issue for your change, please make one
-
Ensure your local main branch is up to date
-
Create a new branch to hold your changes. Suggested branch naming convention is
<your github user>/<a short description of your changes>
. For examplepbourke/update-contributor-docs
. -
Run
poetry version
. If the current version is not a pre-release (ie 0.1.0.6 vs 0.1.0.6rc0), then bump to the next pre-release version:# example version bump $ poetry version sammo 0.1.0.6 $ poetry version 0.1.0.7rc0 Bumping version from 0.1.0.6 to 0.1.0.7rc0
-
Make your changes and commit to your feature branch.
-
Push to GitHub as appropriate (to your fork for non-maintainers)
-
Open a Pull Request to the project and reference the associated issue from your PR
-
GitHub Actions will run automated checks and tests
-
When you're ready, request review from the maintainers
The following instructions are for maintainers
- Each release should begin with a PR to (at the least) update the version from pre-release to final
- Decide on the new version number by following Semantic Versioning principles
- After the release PR is merged, the release can be made from the main branch. Each release is given a tag on the main branch with the version number (this happens automatically via the GH release mechanism)
- Go to the sammo project releases page and click "Draft a new release"
- Enter the new version number as the tag and release title and give a brief description
- Click "Publish release"
- A GitHub Actions release hook will run the automated checks and tests, publish the package to PyPI and publish the documentation to the GitHub Pages site
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
Please search for your issue before submitting a new one.
If nothing relevant shows up, please do open a new issue and provide as much detail as you can (ie: OS, python version, data formats, etc). Outputs of commands, error logs, source code snippets, etc are welcomed and will help to trace down the issue. Questions are also welcomed as they provide an opportunity for us to improve the documentation.