Why bother?

You might be wondering, why use this package at all? Isn’t setup.py or setup.cfg good enough? And honestly… yes, it is. For now.

To briefly summarize a very long story, setuptools (the code that handles setup.py and setup.cfg is a very large, complex, and old piece of software, and while it’s very useful in many cases, there are other cases where people don’t want to use it. So the Python community has agreed on a set of standards to allow other projects to do what setuptools does, namely building a Python package into something that you can upload to PyPI. One of those standards, the one that matters for us, is PEP 621, which defines how core project metadata (some of the information that people would normally put in setup.cfg or as keyword arguments to setup()) should be stored in a new standard file called pyproject.toml. And now that that standard exists, setuptools is strongly encouraging people to use it.

This project was born in a conversation on Mastodon when we realized that as far as we know, there’s no existing tool to generically convert setuptools configuration data to pyproject.toml. There are some tools that work on setup.cfg:

but that doesn’t help all the projects which pass keyword arguments to the setup() call in setup.py. This project is our attempt to make the process of migrating from the “old way” setup.py to the “new way” pyproject.toml as convenient as possible.