@@ -66,36 +66,43 @@ Build backends
66
66
Popular :term: `build backends <build backend> ` for pure-Python packages include,
67
67
in alphabetical order:
68
68
69
- - Flit-core _ ( developed with but separate from :ref: `Flit `). It is meant to be a
70
- minimal and opinionated build backend. It is not extensible .
69
+ - Flit-core _ -- developed with but separate from :ref: `Flit `. A minimal and
70
+ opinionated build backend. It does not support plugins .
71
71
72
- - Hatchling _, which is developed along with :ref: `Hatch `, but is separate and can
73
- be used without Hatch. Hatchling is extensible through a plugin system.
72
+ - Hatchling _ -- developed with but separate from :ref: `Hatch `. Supports plugins.
74
73
75
- - PDM-backend _ (developed with but separate from :ref: `PDM `). It provides build
76
- hooks for extensibility.
74
+ - PDM-backend _ -- developed with but separate from :ref: `PDM `. Supports plugins.
77
75
78
- - Poetry-core _ ( developed with but separate from :ref: `Poetry `). It is extensible
79
- through plugins.
76
+ - Poetry-core _ -- developed with but separate from :ref: `Poetry `. Supports
77
+ plugins.
80
78
81
- - :ref: `setuptools ` (which used to be the only build backend). It can be
82
- configured using modern standards like the :ref: `[project] table in
83
- pyproject.toml <writing-pyproject-toml>`, but can also be extended and
84
- customized via :file: `setup.py `.
79
+ Unlike other backends on this list, Poetry-core does not support the standard
80
+ :ref: `[project] table <writing-pyproject-toml >` (it uses a different format,
81
+ in the ``[tool.poetry] `` table).
82
+
83
+ - :ref: `setuptools `, which used to be the only build backend. Supports plugins.
85
84
86
85
If you use setuptools, please be aware that some features that predate
87
- standardisation efforts are now deprecated and only *temporarily kept * for compatibility.
88
- For example, do **not ** use ``python setup.py `` invocations
89
- (cf. :ref: `setup-py-deprecated `), the ``setup_requires `` argument to
90
- ``setup() `` (use the :ref: `[build-system] table
91
- <pyproject-guide-build-system-table>` of :file: `pyproject.toml ` instead), or
86
+ standardisation efforts are now deprecated and only *temporarily kept *
87
+ for compatibility.
88
+
89
+ In particular, do **not ** use direct ``python setup.py `` invocations. On the
90
+ other hand, configuring setuptools with a :file: `setup.py ` file is still fully
91
+ supported, although it is recommended to use the modern :ref: `[project] table
92
+ in pyproject.toml <writing-pyproject-toml>` whenever possible and keep
93
+ :file: `setup.py ` only if programmatic configuration is needed. See
94
+ :ref: `setup-py-deprecated `.
95
+
96
+ Other examples of deprecated features you should **not ** use include the
97
+ ``setup_requires `` argument to ``setup() `` (use the :ref: `[build-system] table
98
+ <pyproject-guide-build-system-table>` in :file: `pyproject.toml ` instead), and
92
99
the ``easy_install `` command (cf. :ref: `pip vs easy_install `).
93
100
94
101
Do **not ** use :ref: `distutils `, which is deprecated, and has been removed from
95
102
the standard library in Python 3.12, although it still remains available from
96
103
setuptools.
97
104
98
- For packages with :term: `extension modules <extension module> `, you may use
105
+ For packages with :term: `extension modules <extension module> `, it is best to use
99
106
a build system with dedicated support for the language the extension is written in,
100
107
for example:
101
108
0 commit comments