Xdev Packages

As a result of our work, it is common for Xdev to create stand-alone packages for general use. Some of these packages can be found on the Package Metrics page. So that we can better maintain these packages, we employ as much automation as possible. Thus, any new package is expected to employ the following services to ensure enough automation that we can continue to minimally maintain our past work. The following services are commonly deployed on all of our packages.

Automatic Versioning

To make versioning of our packages easy and consistent, all GitHub packages should enable something like setuptools-scm to make versioning of the software consistent with git tag names.

Package Services

Below are some of the services that we expect you to use to aid in our package publication and maintenance.


All of our installable packages are expected to be published on PyPI. The GitHub PyPI Publish Action pypa/gh-action-pypi-publish should be deployed on all GitHub repositories to ensure that every GitHub release triggers the publication of a new version of the software on PyPI.


While PyPI publication is required, we also highly recommend publishing the same package on Conda Forge. You can use the grayskull package to easily create a new Conda Forge recipe for you. Once the first conda-forge feedstock has been created and accepted on Conda Forge, it will automatically publish new versions of the package on Conda Forge when new versions have been published on PyPI.

Read the Docs

We routinely use the Read the Docs service to publish our package documentation. All packages should publish documentation that is complete and useful, and we recommend RTD for that purpose.

Package Ownership

In addition to the package repository on GitHub, it is important that all members of the Xdev Team have administrative ownership of each package service account. That is, ownership of the Read the Docs project for a given package should be shared by all members of the team, not be a sole individual.