@@ -84,6 +84,30 @@ behaviours when asked to handle legacy packages and metadata that
84
84
predate the modern interoperability standards and fall into the subset
85
85
of packages that are incompatible with those standards.
86
86
87
+
88
+ .. _distutils :
89
+
90
+ distutils
91
+ =========
92
+
93
+ The original Python packaging system, added to the standard library in
94
+ Python 2.0 and removed in 3.12.
95
+
96
+ Due to the challenges of maintaining a packaging system
97
+ where feature updates are tightly coupled to language runtime updates,
98
+ direct usage of :ref: `distutils ` has been actively discouraged, with
99
+ :ref: `Setuptools ` being the preferred replacement. :ref: `Setuptools `
100
+ not only provides features that plain :ref: `distutils ` doesn't offer
101
+ (such as dependency declarations and entry point declarations), it
102
+ also provides a consistent build interface and feature set across all
103
+ supported Python versions.
104
+
105
+ Consequently, :ref: `distutils ` was deprecated in Python 3.10 by :pep: `632 ` and
106
+ has been :doc: `removed <python:whatsnew/3.12 >` from the standard library in
107
+ Python 3.12. Setuptools bundles the standalone copy of distutils, and it is
108
+ injected even on Python < 3.12 if you import setuptools first or use pip.
109
+
110
+
87
111
.. _flit :
88
112
89
113
flit
@@ -452,6 +476,19 @@ problem of installing scientific software, and making package
452
476
distribution stateless, cached, and branchable. It is used by some
453
477
researchers but has been lacking in maintenance since 2016.
454
478
479
+ .. _maturin :
480
+
481
+ Maturin
482
+ =======
483
+
484
+ `Docs <https://www.maturin.rs >`__ |
485
+ `GitHub <https://github.com/PyO3/maturin >`__
486
+
487
+ Maturin is a build backend for Rust extension modules, also written in
488
+ Rust. It supports building wheels for python 3.7+ on Windows, Linux, macOS and
489
+ FreeBSD, can upload them to PyPI and has basic PyPy and GraalPy support.
490
+
491
+
455
492
.. _meson-python :
456
493
457
494
meson-python
@@ -472,7 +509,7 @@ of most complex build configurations.
472
509
multibuild
473
510
==========
474
511
475
- `GitHub <https://github.com/matthew-brett /multibuild >`__
512
+ `GitHub <https://github.com/multi-build /multibuild >`__
476
513
477
514
Multibuild is a set of CI scripts for building and testing Python :term: `wheels <Wheel> ` for
478
515
Linux, macOS, and (less flexibly) Windows. Also see :ref: `cibuildwheel `.
@@ -595,14 +632,29 @@ scikit-build
595
632
`GitHub <https://github.com/scikit-build/scikit-build/ >`__ |
596
633
`PyPI <https://pypi.org/project/scikit-build >`__
597
634
598
- Scikit-build is an improved build system generator for CPython
599
- C/C++/Fortran/Cython extensions that integrates with :ref: `setuptools `, :ref: `wheel `
600
- and :ref: `pip `. It internally uses `cmake <https://pypi.org/project/cmake >`__ (available
601
- on PyPI) to provide better support for additional compilers, build systems,
602
- cross compilation, and locating dependencies and their associated
603
- build requirements. To speed up and parallelize the build of large projects,
604
- the user can install `ninja <https://pypi.org/project/ninja >`__ (also available
605
- on PyPI).
635
+ Scikit-build is a :ref: `setuptools ` wrapper for CPython that builds
636
+ C/C++/Fortran/Cython extensions It uses
637
+ `cmake <https://pypi.org/project/cmake >`__ (available on PyPI) to provide
638
+ better support for additional compilers, build systems, cross compilation, and
639
+ locating dependencies and their associated build requirements. To speed up and
640
+ parallelize the build of large projects, the user can install `ninja
641
+ <https://pypi.org/project/ninja> `__ (also available on PyPI).
642
+
643
+ .. _scikit-build-core :
644
+
645
+ scikit-build-core
646
+ =================
647
+
648
+ `Docs <https://scikit-build-core.readthedocs.io/en/latest/ >`__ |
649
+ `GitHub <https://github.com/scikit-build/scikit-build-core/ >`__ |
650
+ `PyPI <https://pypi.org/project/scikit-build-core >`__
651
+
652
+ Scikit-build-core is a build backend for CPython C/C++/Fortran/Cython
653
+ extensions. It enables users to write extensions with `cmake
654
+ <https://pypi.org/project/cmake> `__ (available on PyPI) to provide better
655
+ support for additional compilers, build systems, cross compilation, and
656
+ locating dependencies and their associated build requirements. CMake/Ninja
657
+ are automatically downloaded from PyPI if not available on the system.
606
658
607
659
.. _shiv :
608
660
@@ -671,26 +723,6 @@ cases, end users won't use this module, but rather it will be used during the
671
723
build of the Python distribution.
672
724
673
725
674
- .. _distutils :
675
-
676
- distutils
677
- =========
678
-
679
- The original Python packaging system, added to the standard library in
680
- Python 2.0.
681
-
682
- Due to the challenges of maintaining a packaging system
683
- where feature updates are tightly coupled to language runtime updates,
684
- direct usage of :ref: `distutils ` has been actively discouraged, with
685
- :ref: `Setuptools ` being the preferred replacement. :ref: `Setuptools `
686
- not only provides features that plain :ref: `distutils ` doesn't offer
687
- (such as dependency declarations and entry point declarations), it
688
- also provides a consistent build interface and feature set across all
689
- supported Python versions.
690
-
691
- Consequently, :ref: `distutils ` was deprecated in Python 3.10 by :pep: `632 ` and
692
- has been :doc: `removed <python:whatsnew/3.12 >` from the standard library in Python 3.12.
693
-
694
726
.. _venv :
695
727
696
728
venv
0 commit comments