Skip to content

Latest commit

 

History

History
111 lines (94 loc) · 5.5 KB

CONTRIBUTING.md

File metadata and controls

111 lines (94 loc) · 5.5 KB

Contributing

Tyrannosaurus is licensed under the Apache License, version 2.0. New issues and pull requests are welcome. Feel free to direct a question to the authors by creating an issue with the question tag. Contributors are asked to abide by both the GitHub community guidelines and the Contributor Code of Conduct, version 2.0.

Commit messages

Don’t worry about this too much. Follows Conventional Commits and the Angular commit guidelines, along with Semantic Versioning and Keep a Changelog.

Angular-style commit messages should get mapped to changelog sections and issue labels. In this table, Breaking refers to the BREAKING CHANGE prefix in the commit body (2nd section). Refactor can get mapped differently depending on whether any public API is changed or removed. Some commits can trigger multiple changelog items (e.g. under both Changed and Removed). We deviate slightly from semantic versioning by allowing some essentially non-breaking bug fixes to trigger minor version bumps. This could be, for example, a thrown exception or incorrect return value a caller could reasonably depend on the incorrect behavior.

Commit prefix Section semver issue label(s)
Breaking (body) N/A major breaking
feat: Added minor new feature or enhancement
docs: Fixed patch documentation
fix: (1) Fixed patch bug
fix: (2) Fixed minor bug
refactor: (1) Changed major cleanup and/or enhancement
refactor: (2) Removed major cleanup and/or enhancement
refactor: (3) ignored patch cleanup
build: Fixed patch infrastructure
test: ignored patch tests
ci: ignored never infrastructure
style: ignored never cleanup

Pull requests

Please update CHANGELOG.md and add your name to the contributors in pyproject.toml so that you’re credited. Run poetry lock and tyrannosaurus sync to sync metadata. Feel free to make a draft pull request and solicit feedback from the authors.

Publishing a new version

  1. Bump the version in tool.poetry.version in pyproject.toml, following the rules described below.
  2. Run tyrannosaurus sync so that the Poetry lock file is up-to-date and metadata are synced to pyproject.toml.
  3. Create a new release with both the name and tag set to something like v1.4.13 (keep the v).
  4. An hour later, check that the publish on release creation workflow passes and that the PyPi, Docker Hub, and GitHub Package versions are updated as shown in the shields on the readme.
  5. Check for a pull request from regro-cf-autotick-bot on the feedstock. If you have not changed the dependencies or version ranges, go ahead and merge it. Otherwise, update the recipe with those changes under run:, also updating {% set version and sha256 with the changes from regro-cf-autotick-bot. You can alternatively re-run tyrannosaurus recipe to generate a new recipe and copy it to the feedstock.
  6. Twenty minutes later, verify that the Conda-Forge shield is updated.

Versioning

Versioning is a subset of Semantic Versioning. Git tags and GitHub releases use this notation, prefixed with v (e.g. v0.1.1).

  • Stable releases MUST use: major "." minor "." patch ["+" platform].
  • Pre-alpha releases MUST use: major "." minor "." patch "-" build "+" [platform "."], where build increments per tag starting at 0.
  • Alpha, beta, and RC releases, if used, increment per tag starting at 1 (e.g. alpha1). Alpha/beta/RC MUST NOT be used out of order (e.g. NOT alpha1, beta1, alpha2). If major version > 0, releases lacking a build tag SHOULD be preceded by at least one alpha, beta, or RC release.
  • If major version = 0, unstable releases MAY include a build tag.

In EBNF:

version    = major , "." , minor , "." , patch , ["-" , build] , ["+" , platform] ;
major      = number ;
minor      = number ;
patch      = number ;
build      = number | (("alpha" | "beta" | "rc") , positive) ;
platform   = os | arch | (os , "." , arch) ;
os         = tag ;
arch       = tag ;

-- where (with regex):
tag        = [a-z]+ [a-z0-9]+
positive   = [1-9]  [0-9]+
number     = [0-9]+

Illustration – example release history:

  1. 0.1.0
  2. 0.1.1
  3. 0.2.0-0 +1ca8da40
  4. 0.2.0-1 +f1c045ae
  5. 0.2.0
  6. 1.0.0-0 +10f011ca
  7. 0.2.1
  8. 1.0.0-rc1+aa40c1cf
  9. 1.0.0 +win11.1ca8da40