pyOpenSci Python Open Source Package Development Guide#
Welcome, Python open source enthusiast!#
Here you will find guidelines for what we look for in your scientific Python package when reviewing. You will also find best practice recommendations and curated lists of community resources surrounding packaging and package documentation.
pyOpenSci’s packaging goals#
Our goal is to help the community make decisions around how to create scientific Python packages. We are working towards a shared vision of packaging that helps users better understand where to start.
How this guide is created#
This guide is created by pyOpenSci through an extensive review process. Each page in the guide has been reviewed by experts in the broader Python packaging landscape including people from :
conda & conda-forge
the python packaging authority
core Python developers
core scientific Python developers
and others with expertise in packaging, package documentation, usability and other related knowledge areas
View all of the people who have contributed to this guide here.
We use this guide as a foundation for our open peer review process of scientific software.
Who this guidebook is for#
We assume that you are here because you are:
Looking for guidance on creating a Python package.
Looking for resources associated with Python packaging.
Considering submitting a package to pyOpenSci and want to understand what we are looking for when we review your package
Well, friend, you’ve come to the right place!

Many love to use Python because it is a clean language to learn. It also is incredibly flexible allowing it to be used across numerous domains. Source: xkcd comics.#
What you will find in this guidebook#
This guidebook contains:
Explanation for “Good enough” minimum requirements associated with being reviewed by pyOpenSci
Explanation of better and best practices in case you want to set the bar higher for your package (which we hope you will)!
A curated list of resources to help you get your package into documented, usable and tested shape.
Where this guide is headed#
Most of the sections in this guide will ultimately include Good/Better/Best recommendations for Python open source software packaging.
Good meets the requirements. Going beyond the minimum can make package maintenance easier-to-use for new users, easier-to contribute for new contributors and easier-to-maintain for you.
This guide is now a work in progress. If you have ideas of things you’d like to see here, we invite you to open an issue on GitHub that details any changes or additions that you’d like to see..