jaraco / pip-run

pip-run - dynamic dependency loader for Python
MIT License
130 stars 19 forks source link

Tests failing on Python 3.12 #73

Closed jaraco closed 1 year ago

jaraco commented 1 year ago

Starting with https://github.com/jaraco/pip-run/actions/runs/4942872046 (bca2e68ded483253f839468cf1a185d6b6cf1f79), tests started failing on Python 3.12 for all platforms, but only in CI. When testing locally, tests still pass on Python 3.12. The issue seems to be related to Setuptools not being available in test_pkg_loaded_from_url.

jaraco commented 1 year ago

Even installing the same Python version and Pip version, I'm unable to replicate the failure. I am able to replicate the failure, however, by uninstalling Setuptools.

jaraco commented 1 year ago

Deps when things passed:

attrs==22.2.0,autocommand==2.2.2,black==23.3.0,build==0.10.0,click==8.1.3,coverage==7.2.3,docutils==0.19,fastjsonschema==2.16.3,filelock==3.11.0,flake8==4.0.1,inflect==6.0.4,iniconfig==2.0.0,jaraco.context==4.3.0,jaraco.functools==3.6.0,jaraco.path==3.5.0,jaraco.test==5.3.0,jaraco.text==3.11.1,jsonschema==4.17.3,jupyter_core==5.3.0,mccabe==0.6.1,more-itertools==9.1.0,mypy==1.2.0,mypy-extensions==1.0.0,nbformat==5.8.0,packaging==23.1,path==16.6.0,pathspec==0.11.1,pip==23.0.1,pip-run @ file:///home/runner/work/pip-run/pip-run/.tox/.tmp/package/1/pip_run-10.0.7-0.editable-py3-none-any.whl,platformdirs==3.2.0,pluggy==1.0.0,pycodestyle==2.8.0,pydantic==1.10.7,pyflakes==2.4.0,Pygments==2.15.0,pyproject_hooks==1.0.0,pyrsistent==0.19.3,pytest==7.3.1,pytest-black==0.3.12,pytest-checkdocs==2.9.0,pytest-cov==4.0.0,pytest-enabler==2.1.0,pytest-mypy==0.10.3,setuptools==67.4.0,toml==0.10.2,traitlets==5.9.0,typing_extensions==4.5.0,wheel==0.38.4

And failed:

attrs==23.1.0,autocommand==2.2.2,black==23.3.0,build==0.10.0,click==8.1.3,coverage==7.2.5,docutils==0.20,fastjsonschema==2.16.3,filelock==3.12.0,inflect==6.0.4,iniconfig==2.0.0,jaraco.context==4.3.0,jaraco.functools==3.6.0,jaraco.path==3.5.0,jaraco.test==5.3.0,jaraco.text==3.11.1,jsonschema==4.17.3,jupyter_core==5.3.0,more-itertools==9.1.0,mypy==1.3.0,mypy-extensions==1.0.0,nbformat==5.8.0,packaging==23.1,path==16.6.0,pathspec==0.11.1,pip==23.1.2,pip-run @ file:///home/runner/work/pip-run/pip-run/.tox/.tmp/package/1/pip_run-0.1.dev1%2Bgbca2e68-0.editable-py3-none-any.whl#sha256=c881249ccd5ff6498957cd89016ca6b3c86c79d5e1fcc981a317a83fc318f45b,platformdirs==3.5.0,pluggy==1.0.0,pydantic==1.10.7,Pygments==2.15.1,pyproject_hooks==1.0.0,pyrsistent==0.19.3,pytest==7.3.1,pytest-black==0.3.12,pytest-checkdocs==2.9.0,pytest-cov==4.0.0,pytest-enabler==2.1.0,pytest-mypy==0.10.3,pytest-ruff==0.0.6,ruff==0.0.265,toml==0.10.2,traitlets==5.9.0,typing_extensions==4.5.0
jaraco commented 1 year ago

Here are the differences:

$ cmpreqs before.txt after.txt

Different dependencies
======================
Name          before.txt  after.txt
------------  ----------  ---------
attrs         22.2.0      23.1.0   
coverage      7.2.3       7.2.5    
docutils      0.19        0.20     
filelock      3.11.0      3.12.0   
mypy          1.2.0       1.3.0    
pip           23.0.1      23.1.2   
platformdirs  3.2.0       3.5.0    
pygments      2.15.0      2.15.1   

Equal dependencies
==================
Name               Version
-----------------  -------
autocommand        2.2.2  
black              23.3.0 
build              0.10.0 
click              8.1.3  
fastjsonschema     2.16.3 
inflect            6.0.4  
iniconfig          2.0.0  
jaraco.context     4.3.0  
jaraco.functools   3.6.0  
jaraco.path        3.5.0  
jaraco.test        5.3.0  
jaraco.text        3.11.1 
jsonschema         4.17.3 
jupyter_core       5.3.0  
more-itertools     9.1.0  
mypy-extensions    1.0.0  
nbformat           5.8.0  
packaging          23.1   
path               16.6.0 
pathspec           0.11.1 
pluggy             1.0.0  
pydantic           1.10.7 
pyproject_hooks    1.0.0  
pyrsistent         0.19.3 
pytest             7.3.1  
pytest-black       0.3.12 
pytest-checkdocs   2.9.0  
pytest-cov         4.0.0  
pytest-enabler     2.1.0  
pytest-mypy        0.10.3 
toml               0.10.2 
traitlets          5.9.0  
typing_extensions  4.5.0  

Only available on after.txt
===========================
Name         Version
-----------  -------
pytest-ruff  0.0.6  
ruff         0.0.265

Only available on before.txt
============================
Name         Version
-----------  -------
pyflakes     2.4.0  
wheel        0.38.4 
pycodestyle  2.8.0  
flake8       4.0.1  
setuptools   67.4.0 
mccabe       0.6.1  
jaraco commented 1 year ago

Interesting, so setuptools is actually missing from the later installs. Yet, when I tried to add setuptools to the environment explicitly (https://github.com/jaraco/pip-run/commit/d6783eadb1fb3713793998763201b4c32d766c21), it doesn't seem to have a restorative effect. Maybe that's because wheel also needs to be installed?

jaraco commented 1 year ago

Oh! I was able to replicate the issue by upgrading tox. So it seems that something between tox 4.4.12 and 4.5.1 may have affected the behavior of setuptools being installed.

jaraco commented 1 year ago

There's nothing in the tox history that seems relevant, so now I'm suspecting virtualenv.

jaraco commented 1 year ago

Indeed, virtualenv 20.23.0 declares the dropped support (in a feature release, no less).