Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setuptools_scm seems to be used even though it's not mentioned in pyproject.toml nor installed #976

Closed
rvsasseen opened this issue Nov 15, 2023 · 5 comments

Comments

@rvsasseen
Copy link

rvsasseen commented Nov 15, 2023

I'm setting up a new project using pyproject.toml rather than setup.py/setup.cfg which is used for most projects at my company. I am finding that setuptools_scm seems to be used even though it's not mentioned in pyproject.toml nor installed. I say that because only files that are checked into git are getting put into the distribution. I don't understand why that is happening. I've seen your issues like #190 and #561, but those suggest that that would happen if setuptools_scm is installed in the python environment, but not if it's not.

The following output is from a newly created conda environment where I do "python -m build", with setuptools_scm not installed. I get the same behavior from "python -m build" locally on my Mac and on Linux in our GitLab CI server. (CI is run in a docker container, and does not involve a conda env.)

$ conda list
# packages in environment at /Users/sasseen/miniforge3/envs/tmp1:
#
# Name                    Version                   Build  Channel
build                     1.0.3                    pypi_0    pypi
bzip2                     1.0.8                h93a5062_5    conda-forge
ca-certificates           2023.7.22            hf0a4a13_0    conda-forge
libexpat                  2.5.0                hb7217d7_1    conda-forge
libffi                    3.4.2                h3422bc3_5    conda-forge
libsqlite                 3.44.0               h091b4b1_0    conda-forge
libzlib                   1.2.13               h53f4e23_5    conda-forge
ncurses                   6.4                  h463b476_2    conda-forge
openssl                   3.1.4                h0d3ecfb_0    conda-forge
packaging                 23.2                     pypi_0    pypi
pip                       23.3.1             pyhd8ed1ab_0    conda-forge
pyproject-hooks           1.0.0                    pypi_0    pypi
python                    3.12.0          h47c9636_0_cpython    conda-forge
readline                  8.2                  h92ec313_1    conda-forge
setuptools                68.2.2             pyhd8ed1ab_0    conda-forge
tk                        8.6.13               h5083fa2_1    conda-forge
tzdata                    2023c                h71feb2d_0    conda-forge
wheel                     0.41.3             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h57fd34a_0    conda-forge

$ pip list
Package         Version
--------------- -------
build           1.0.3
packaging       23.2
pip             23.3.1
pyproject_hooks 1.0.0
setuptools      68.2.2
wheel           0.41.3

I originally started out with setuptools_scm mentioned both in the requires and as a section in pyproject.toml, but have experimented with variations where I leave those out. (The original pyproject.toml I borrowed from another project had setuptools_scm listed in the requires, so I was exploring what that was about.) No matter what, only files checked into git get put into the sdist and wheel.

[build-system]
requires = [
    "setuptools",
#     "setuptools_scm",                                                         
]
build-backend = "setuptools.build_meta"

# [tool.setuptools_scm]                                                         
# nothing here anyway

A couple more things. First, with or without setuptools_scm being mentioned or installed, I get warnings like

warning: no previously-included files found matching '.gitlab-ci.yml'

for files listed as exclude in MANIFEST.in. I expect that's not really related to setuptools_scm, though.

Second, with it being mentioned and/or installed, I get "errors" like

ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any

(during building of the wheel) but they don't seem to cause any real problems.

@rvsasseen
Copy link
Author

rvsasseen commented Nov 16, 2023

Sorry, the above is not reported entirely accurately. I figured out most of what was going on.

The main thing was that in between my "python -m build" commands, while I was varying pyproject.toml to include or not include mention of setuptools_scm, I was not deleting the src/myrootpackage.egg-info directory. As a result, state was being carried over between build commands unexpectedly, affecting the contents of the built sdist and wheel.

Another thing that was a bit unexpected is that while use of setuptools_scm seems to include additional files from SCM in the build result, it does not prevent files that are NOT in SCM from being included in the build result if setuptools wants to put them in the build -- for example, non-checked-in python files sitting next to checked-in ones in the python source areas.

@odimko
Copy link

odimko commented Jun 6, 2024

@rvsasseen , thanks for your follow-up. could you please explain how you fixed the error below?

ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any

@rvsasseen
Copy link
Author

rvsasseen commented Jun 6, 2024

Well, I ended up not using setuptools_scm in the project, so that's mostly how I "fixed" that error. I'm still interested in its ability to get the version number from SCM, but I don't actually need that now, so I have not pursued getting setuptools_scm to work on any projects yet. Sorry I can't be more help there.

@rvsasseen
Copy link
Author

You might try doing "rm -rf build src/myrootpackage.egg-info" to clean up your build artifacts and see if that helps.

@odimko
Copy link

odimko commented Jun 7, 2024

@rvsasseen thanks a lot for your answer! i'll give it a try.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants