You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This project currently uses deprecated features of setuptools, some of which may be removed in the future.
Installing by running setup.py directly, as the instructions in README.md say to do and as is done in test_installation, is deprecated. Actual breakage due to this begins in Python 3.12, where although setuptools is still supported as a build backend and nontrivial logic can still be used in setup.py, global and virtual environments do not automatically have the setuptools package. (See the ensurepip item in the list of removals in 3.12.) This is the cause of Python 3.12: ModuleNotFoundError: No module named 'setuptools' #1640. But the deprecation is not new as of Python 3.12. The following message appears during installation (with any Python version provided the installed setuptools version is not very old, but I used Python 3.11.5):
/home/ek/repos-wsl/GitPython/.venv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!
********************************************************************************
Please avoid running ``setup.py`` directly.
Instead, use pypa/build, pypa/installer or other
standards-based tools.
See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
********************************************************************************
!!
This could be worked around without a fix by adding setuptools as a development dependency, but an actual fix is straightforward, and there are some further benefits to using pip install . to install locally, including that -e can easily be passed to make the installation editable.
Building by running setup.py directly is, if I understand correctly, also deprecated. This is a less serious problem, but a true fix for this is also straightforward: the build module can be added as a development dependency and used for building the sdist and wheel in Makefile. The setuptools documentation recommends using build.
This is already not achieving what appears intended or least hoped for (see Readme claims test dependencies are installed automatically #1652), and one reasonable way to fix this is to remove that argument altogether. But both the reliance on a deprecated feature and the absence of an automated way to install test dependencies as a group (without pip install -r commands) could be remedied by using a testextra rather than tests_require.
Although I worry a bit about broad scope, it seems to me that it is natural to fix #1640, #1651, #1652, and this issue (which itself overlaps with #1640 and #1652, though is not limited to them) in a single pull request. I say this because there is significant overlap in the changes, and because decisions made in review should probably take the considerations of all these issues into account. I've opened #1654 for this.
Note that while it is today discouraged to implement nontrivial logic in setup.py, and recommended to use pyproject.toml and/or setup.cfg for what has traditionally been done in setup.py, I do not believe it is deprecated to make nontrivial use of setup.py as this project does. Although it would be beneficial to define build and installation rules declaratively, I think that would be a much bigger change than needed to fix this issue. I have not attempted to do anything like that at this time.
The text was updated successfully, but these errors were encountered:
This project currently uses deprecated features of
setuptools
, some of which may be removed in the future.Installing by running
setup.py
directly, as the instructions inREADME.md
say to do and as is done intest_installation
, is deprecated. Actual breakage due to this begins in Python 3.12, where althoughsetuptools
is still supported as a build backend and nontrivial logic can still be used insetup.py
, global and virtual environments do not automatically have thesetuptools
package. (See theensurepip
item in the list of removals in 3.12.) This is the cause of Python 3.12: ModuleNotFoundError: No module named 'setuptools' #1640. But the deprecation is not new as of Python 3.12. The following message appears during installation (with any Python version provided the installedsetuptools
version is not very old, but I used Python 3.11.5):This could be worked around without a fix by adding
setuptools
as a development dependency, but an actual fix is straightforward, and there are some further benefits to usingpip install .
to install locally, including that-e
can easily be passed to make the installation editable.Building by running
setup.py
directly is, if I understand correctly, also deprecated. This is a less serious problem, but a true fix for this is also straightforward: thebuild
module can be added as a development dependency and used for building the sdist and wheel inMakefile
. Thesetuptools
documentation recommends usingbuild
.The
tests_require
keyword argument is deprecated and intended for removal in a future version ofsetuptools
, as noted in thesetuptools.setup
keyword arguments documentation.This is already not achieving what appears intended or least hoped for (see Readme claims test dependencies are installed automatically #1652), and one reasonable way to fix this is to remove that argument altogether. But both the reliance on a deprecated feature and the absence of an automated way to install test dependencies as a group (without
pip install -r
commands) could be remedied by using atest
extra rather thantests_require
.Although I worry a bit about broad scope, it seems to me that it is natural to fix #1640, #1651, #1652, and this issue (which itself overlaps with #1640 and #1652, though is not limited to them) in a single pull request. I say this because there is significant overlap in the changes, and because decisions made in review should probably take the considerations of all these issues into account. I've opened #1654 for this.
Note that while it is today discouraged to implement nontrivial logic in
setup.py
, and recommended to usepyproject.toml
and/orsetup.cfg
for what has traditionally been done insetup.py
, I do not believe it is deprecated to make nontrivial use ofsetup.py
as this project does. Although it would be beneficial to define build and installation rules declaratively, I think that would be a much bigger change than needed to fix this issue. I have not attempted to do anything like that at this time.The text was updated successfully, but these errors were encountered: