24

We have multiple python projects, and are considering converting them to use pyproject.toml instead of setup.py.

Is there a simple way to automate this?

sinoroc
  • 18,409
  • 2
  • 39
  • 70
user17304108
  • 341
  • 2
  • 6
  • I guess something like run `python setup.py egg_info`, figure out in which file the metadata is written, parse it and write it back to a `pyproject.toml` file. Should be relatively straightforward. And should be quite reliable unless the `setup.py` files do things they should not be doing. -- I thought I had seen a tool that does this but can not find it anymore, so maybe I hallucinated. – sinoroc Sep 20 '22 at 20:55

2 Answers2

19

While dealing with some pyproject.toml issues, I encountered this project:

https://pypi.org/project/ini2toml/

The projects description:

This project is experimental and under active development Issue reports and contributions are very welcome. The original purpose of this project is to help migrating setup.cfg files to PEP 621, but by extension it can also be used to convert any compatible .ini/.cfg file to .toml.

While this only helps to turn .cfg/.ini files to PEP 621 .toml, there is another project that turn setup.py files into cfg files.

https://github.com/gvalkov/setuptools-py2cfg

This script helps convert existing setup.py files to setup.cfg in the format expected by setuptools.

Combining these two processes by writing a script you could potentially come up with an automated way to transform the files. I have not tried this as of yet but would be interested if you could make this idea work :)

sicadu
  • 341
  • 2
  • 5
8

pdm supports importing metadata from various existing and older metadata files, including setup.py.

You can either:

  1. run pdm init on your project root (with the old metadata files) and follow the instructions, or
  2. run pdm import setup.py explicitly.

See Import project metadata from existing project files for more details.

FichteFoll
  • 663
  • 1
  • 6
  • 12