Skip to main content

Allows using distutils2-like setup.cfg files for a package's metadata with a distribute/setuptools

Project description


d2to1 (the ‘d’ is for ‘distutils’) allows using distutils2-like setup.cfg files for a package’s metadata with a distribute/setuptools script. It works by providing a distutils2-formatted setup.cfg file containing all of a package’s metadata, and a very minimal which will slurp its arguments from the setup.cfg.


I’m currently in the progress of redoing the packaging of a sizeable number of projects. I wanted to use distutils2-like setup.cfg files for all these projects, as they will hopefully be the future, and I much prefer them overall to using an executable So forward-support for distutils2 is appealing both as future-proofing, and simply the aesthetics of using a flat text file to describe a project’s metadata.

However, I did not want any of these projects to require distutils2 for installation yet–it is too unstable, and not widely installed. So projects should still be installable using the familiar ./ install, for example. Furthermore, not all use cases required by some of these packages are fully supported by distutils2 yet. Hopefully they will be eventually, either through the distutils2 core or through extensions. But in the meantime d2to1 will try to keep up with the state of the art and “best practices” for distutils2 distributions, while adding support in areas that it’s lacking.


d2to1 requires a distribution to use distribute or setuptools. Your distribution must include a distutils2-like setup.cfg file, and a minimal script. For details on writing the setup.cfg, see the distutils2 documentation. The minimal should look something like this:

#!/usr/bin/env python

    from setuptools import setup
except ImportError:
    from distribute_setup import use_setuptools
    from setuptools import setup


Note that it’s important to specify d2to1=True or else the d2to1 functionality will not be enabled. It is also possible to set d2to1=’some_file.cfg’ to specify the (relative) path of the setup.cfg file to use. But in general this functionality should not be necessary.

It should also work fine if additional arguments are passed to setup(), but it should be noted that they will be clobbered by any options in the setup.cfg file.


  • The requires-dist option in setup.cfg is implemented through the distribute/setuptools install_requires option, rather than the broken “requires” keyword in normal distutils.

  • The version specifier scheme to be used with “requires-dist” is that used by distribute, and not the in the format expected by distutils2. For example, use “d2to1>=0.1” instead of “d2to1 (>0.1)”. This will be fixed in a future release.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

d2to1-0.1.tar.gz (5.7 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page