🎉 Thank you for taking the time to contribute to pyinfra! 🎉

Third party pull requests help expand pyinfra’s functionality and are essential to it’s continued growth. This guide should help get you started adding additional operations/facts to pyinfra.

Dev Setup

# Create a virtualenv with your tool of choice
# python -m venv / pyenv virtualenv / virtualenv

# Clone the repo
git clone

# Install the package in editable mode with development requirements
cd pyinfra
pip install -e '.[dev]'


Use pytest to run tests, or pytest --cov to run with coverage. Pull requests are expected to be tested and not drop overall project coverage by >1%.

Generate Documentation

To generate:

sphinx-build -a docs/ docs/build/

To view (localhost:8000):

python -m http.server -d docs/build/

Code Style

  • 100 max line length
  • no hanging indents
  • single quotes everywhere possible