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
sage -t --long --random-seed=7248854323037540409093786245466017113 /usr/lib/python3.12/site-packages/sage_setup/clean.py
**********************************************************************
File "/usr/lib/python3.12/site-packages/sage_setup/clean.py", line 92, in sage_setup.clean._find_stale_files
Failed example:
for f in files('sagemath-standard'):
dir = os.path.dirname(str(f))
extra_files[dir] = extra_files.get(dir, [])
extra_files[dir].append(str(f))
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/sage/doctest/forker.py", line 715, in _run
self.compile_and_execute(example, compiler, test.globs)
File "/usr/lib/python3.12/site-packages/sage/doctest/forker.py", line 1147, in compile_and_execute
exec(compiled, globs)
File "<doctest sage_setup.clean._find_stale_files[7]>", line 1, in <module>
for f in files('sagemath-standard'):
TypeError: 'NoneType' object is not iterable
**********************************************************************
Full relevant code
sage: from importlib.metadata import files
sage: for f in files('sagemath-standard'):
....: dir = os.path.dirname(str(f))
....: extra_files[dir] = extra_files.get(dir, [])
....: extra_files[dir].append(str(f))
Discussion: so sage-on-gentoo installs a sagemath-standard-$version.dist-info directory and vanilla keeps the .egg file generated by sdist process. In the dist-info folder, sage-on-gentoo does not have a RECORD file (and vanilla has SOURCES.txt inside the .egg folder). The RECORD file is not compulsory but is usually produced by some of the python builders or the python installer. In our case setuptools does not produce a RECORD file but if you use pip to make a wheel, pip will add the appropriate RECORD file. When pip is used as a package manager, it needs RECORD to keep track of the installed files(you would think it is stored somewhere independently, but python provides for the existence of that file). Of course Linux distributions do not need this file because they track what is installed in some other ways. However, distributions that use pip to produce their packages will have a "RECORD" file as part of their installation.
What to do? It is unclear which part of the packaging is responsible for producing the metadata. Some other building backends will produce a RECORD file (example alabaster uses flit-core and does have a RECORD file). So, we cannot just go and say to gpep517 you need to finalise the build process by generating your own metadata because setuptools is not doing the full job. On the other hand, pip seems to do that as routine whatever the backend.
The text was updated successfully, but these errors were encountered:
How did you discover this? I don't see it when running the testsuite, nor when doctesting the file individually. It does appear when running the indicated code from the sage prompt, i.e. there are no files in sagemath-standard.
sage: from importlib.metadata import files
sage: files('sagemath-standard')
sage:
This is a good one.
Full relevant code
Documentation of
importlib.metadata.files
https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.Distribution.filesDiscussion: so sage-on-gentoo installs a
sagemath-standard-$version.dist-info
directory and vanilla keeps the .egg file generated by sdist process. In the dist-info folder, sage-on-gentoo does not have aRECORD
file (and vanilla has SOURCES.txt inside the .egg folder). The RECORD file is not compulsory but is usually produced by some of the python builders or the python installer. In our case setuptools does not produce a RECORD file but if you use pip to make a wheel, pip will add the appropriate RECORD file. When pip is used as a package manager, it needs RECORD to keep track of the installed files(you would think it is stored somewhere independently, but python provides for the existence of that file). Of course Linux distributions do not need this file because they track what is installed in some other ways. However, distributions that use pip to produce their packages will have a "RECORD" file as part of their installation.What to do? It is unclear which part of the packaging is responsible for producing the metadata. Some other building backends will produce a RECORD file (example alabaster uses flit-core and does have a RECORD file). So, we cannot just go and say to gpep517 you need to finalise the build process by generating your own metadata because setuptools is not doing the full job. On the other hand, pip seems to do that as routine whatever the backend.
The text was updated successfully, but these errors were encountered: