Skip to content

Latest commit

 

History

History
173 lines (117 loc) · 5.26 KB

CONTRIBUTING.md

File metadata and controls

173 lines (117 loc) · 5.26 KB

Contributor Guide

Thank you for your interest in improving this project. This project is open-source under the MIT license and welcomes contributions in the form of bug reports, feature requests, and pull requests.

Here is a list of important resources for contributors:

How to report a bug

Report bugs on the Issue Tracker.

When filing an issue, make sure to answer these questions:

  • Which operating system and Python version are you using?
  • Which version of this project are you using?
  • What did you do?
  • What did you expect to see?
  • What did you see instead?

The best way to get your bug fixed is to provide a test case, and/or steps to reproduce the issue.

Please label your bug report with the bug label.

How to request a feature

Request features on the Issue Tracker.

How to set up your development environment

If you're interested in contributing code, you can start by checking out this repository https://github.com/flexion/devops-deployment-metrics. Take a look through the issues and see if there are any tasks you are interested in working on. Indicate you are working on a task by adding your GitHub @name after the task in the issue. Definition of Done items are often a great starting point for contributing in a meaningful way while getting integrated into team practices. Using SSH keys to check out the repository is ideal, as we require contributors to sign their commits.

You need Python 3.9+ and the following tools:

Install the package with development requirements:

poetry install

You can now run an interactive Python session, or the command-line interface:

poetry run python
poetry run devops-deployment-metrics

Git pre-commit hooks

In order to ensure a consistent style for a number of different artifact types within this repository, all developers should install, initialize, and run pre-commit in their development environment. Committing code and documentation that does not pass the pre-commit checks is strongly discouraged. Instructions for doing so are below, with more details at https://pre-commit.com/#install:

You can install pre-commit with pip: pip install pre-commit

Or on a Mac you can use homebrew: brew install pre-commit

After installation, set up the git hook scripts by running the following from the root of the repository: pre-commit install

The pre-commit hooks will then run as a part of git commits, but you can also optionally run them against all files: pre-commit run --all-files

How to test the project

Run the full test suite:

nox

List the available Nox sessions:

nox --list-sessions

You can also run a specific Nox session. For example, invoke the unit test suite like this:

nox --session=tests

Unit tests are located in the tests directory, and are written using the pytest testing framework.

How to submit changes

Open a pull request to submit changes to this project.

Your pull request needs to meet the following guidelines for acceptance:

  • The Nox test suite must pass without errors and warnings.
  • Include unit tests. This project maintains 100% code coverage.
  • If your changes add functionality, update the documentation accordingly.

Feel free to submit early, though—we can always iterate on this.

To run linting and code formatting checks before committing your change, you can install pre-commit as a Git hook by running the following command:

nox --session=pre-commit -- install

It is recommended to open an issue before starting work on anything. This will allow a chance to talk it over with the owners and validate your approach.

You can run pre-commit with this command:

nox -s pre-commit

Benchmarking

We have implemented simple benchmarking with pytest-benchmark. If you add tests and want to make sure your methods are not suffering performance degradations when they change, please add benchmarking.

def test_my_function(benchmark: Any):
    result = benchmark(my_function, *args)
    assert result == expected_result

Run the benchmark:

nox -s benchmark

Contributors are required to sign commits

GitHub has made it simple for contributors to sign commits with their existing SSH keys. 1Password 8 has some sugar that simplifies this. Contributors should already be using SSH keys to push to GitHub.