Skip to content

Doesn't add package files when installing from sdist on PyPy #2490

Closed
@edgarrmondragon

Description

@edgarrmondragon

System

Description

uv doesn't add all package files when installing from an sdist, while virtualenv+pip do it correctly:

uv

$ uv venv venv --python pypy3.10
Using Python 3.10.13 interpreter at: /Users/edgarramirez/.pyenv/versions/pypy3.10-7.3.15/bin/pypy3.10
Creating virtualenv at: venv
Activate with: source venv/bin/activate

$ source venv/bin/activate

$ (venv) uv -vv pip install deptry==0.14.0 --no-binary 'deptry'
Output

uv::requirements::from_source source=deptry==0.14.0
    0.000287s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /Users/edgarramirez/Code/contrib/deptry/venv
    0.000675s DEBUG uv_interpreter::interpreter Cached interpreter info for Python 3.10.13, skipping probing: /Users/edgarramirez/Code/contrib/deptry/venv/bin/python
    0.000687s DEBUG uv::commands::pip_install Using Python 3.10.13 environment at /Users/edgarramirez/Code/contrib/deptry/venv/bin/python
    0.001129s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries 
 uv_resolver::resolver::solve 
      0.005233s   0ms DEBUG uv_resolver::resolver Solving with target Python version 3.10.13
   uv_resolver::resolver::choose_version package=root
   uv_resolver::resolver::get_dependencies package=root, version=0a0.dev0
        0.005291s   0ms DEBUG uv_resolver::resolver Adding direct dependency: deptry==0.14.0
   uv_resolver::resolver::choose_version package=deptry
     uv_resolver::resolver::package_wait package_name=deptry
 uv_resolver::resolver::process_request request=Versions deptry
   uv_client::registry_client::simple_api package=deptry
     uv_client::cached_client::get_cacheable 
       uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/deptry.rkyv
 uv_resolver::resolver::process_request request=Prefetch deptry ==0.14.0
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/deptry.rkyv"
          0.006364s   0ms DEBUG uv_client::cached_client Found stale response for: https://pypi.org/simple/deptry/
          0.006375s   0ms DEBUG uv_client::cached_client Sending revalidation request for: https://pypi.org/simple/deptry/
       uv_client::cached_client::revalidation_request url="https://pypi.org/simple/deptry/"
            0.006391s   0ms DEBUG uv_auth::middleware No credentials found for: https://pypi.org/simple/deptry/
          0.514199s 508ms DEBUG uv_client::cached_client Found not-modified response for: https://pypi.org/simple/deptry/
       uv_client::cached_client::refresh_cache file=/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/deptry.rkyv
   uv_resolver::version_map::from_metadata 
   uv_distribution::distribution_database::get_or_build_wheel_metadata dist=deptry==0.14.0
     uv_client::registry_client::wheel_metadata built_dist=deptry==0.14.0
       uv_client::cached_client::get_serde 
         uv_client::cached_client::get_cacheable 
           uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/deptry/deptry-0.14.0-cp38-abi3-macosx_10_12_x86_64.msgpack
        0.518327s 513ms DEBUG uv_resolver::resolver Searching for a compatible version of deptry (==0.14.0)
        0.518344s 513ms DEBUG uv_resolver::resolver Selecting: deptry==0.14.0 (deptry-0.14.0-cp38-abi3-macosx_10_12_x86_64.whl)
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/deptry/deptry-0.14.0-cp38-abi3-macosx_10_12_x86_64.msgpack"
   uv_resolver::resolver::get_dependencies package=deptry, version=0.14.0
     uv_resolver::resolver::distributions_wait package_id=deptry-0.14.0
              0.518703s   0ms DEBUG uv_client::cached_client Found fresh response for: https://files.pythonhosted.org/packages/58/d5/f2ba32ecf0e6d4d152f188211cd7aa7098e41d7baa69032b03081dd97b45/deptry-0.14.0-cp38-abi3-macosx_10_12_x86_64.whl.metadata
        0.518788s   0ms DEBUG uv_resolver::resolver Adding transitive dependency: chardet>=4.0.0
        0.518801s   0ms DEBUG uv_resolver::resolver Adding transitive dependency: click>=8.0.0, <9
        0.518809s   0ms DEBUG uv_resolver::resolver Adding transitive dependency: pathspec>=0.9.0
        0.518818s   0ms DEBUG uv_resolver::resolver Adding transitive dependency: tomli>=2.0.1
   uv_resolver::resolver::choose_version package=chardet
     uv_resolver::resolver::package_wait package_name=chardet
 uv_resolver::resolver::process_request request=Versions chardet
   uv_client::registry_client::simple_api package=chardet
     uv_client::cached_client::get_cacheable 
       uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/chardet.rkyv
 uv_resolver::resolver::process_request request=Versions click
   uv_client::registry_client::simple_api package=click
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/chardet.rkyv"
     uv_client::cached_client::get_cacheable 
       uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/click.rkyv
 uv_resolver::resolver::process_request request=Versions pathspec
   uv_client::registry_client::simple_api package=pathspec
     uv_client::cached_client::get_cacheable 
       uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/pathspec.rkyv
 uv_resolver::resolver::process_request request=Versions tomli
   uv_client::registry_client::simple_api package=tomli
     uv_client::cached_client::get_cacheable 
       uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/tomli.rkyv
 uv_resolver::resolver::process_request request=Prefetch tomli >=2.0.1
 uv_resolver::resolver::process_request request=Prefetch pathspec >=0.9.0
 uv_resolver::resolver::process_request request=Prefetch click >=8.0.0, <9
 uv_resolver::resolver::process_request request=Prefetch chardet >=4.0.0
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/click.rkyv"
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/tomli.rkyv"
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/simple-v3/pypi/pathspec.rkyv"
          0.519406s   0ms DEBUG uv_client::cached_client Found fresh response for: https://pypi.org/simple/chardet/
   uv_resolver::version_map::from_metadata 
   uv_distribution::distribution_database::get_or_build_wheel_metadata dist=chardet==5.2.0
     uv_client::registry_client::wheel_metadata built_dist=chardet==5.2.0
       uv_client::cached_client::get_serde 
         uv_client::cached_client::get_cacheable 
           uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/chardet/chardet-5.2.0-py3-none-any.msgpack
        0.519577s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of chardet (>=4.0.0)
        0.519588s   0ms DEBUG uv_resolver::resolver Selecting: chardet==5.2.0 (chardet-5.2.0-py3-none-any.whl)
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/chardet/chardet-5.2.0-py3-none-any.msgpack"
   uv_resolver::resolver::get_dependencies package=chardet, version=5.2.0
     uv_resolver::resolver::distributions_wait package_id=chardet-5.2.0
              0.519875s   0ms DEBUG uv_client::cached_client Found fresh response for: https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl.metadata
   uv_resolver::resolver::choose_version package=click
     uv_resolver::resolver::package_wait package_name=click
          0.520004s   0ms DEBUG uv_client::cached_client Found fresh response for: https://pypi.org/simple/tomli/
   uv_resolver::version_map::from_metadata 
          0.520072s   1ms DEBUG uv_client::cached_client Found fresh response for: https://pypi.org/simple/pathspec/
   uv_resolver::version_map::from_metadata 
   uv_distribution::distribution_database::get_or_build_wheel_metadata dist=tomli==2.0.1
     uv_client::registry_client::wheel_metadata built_dist=tomli==2.0.1
       uv_client::cached_client::get_serde 
         uv_client::cached_client::get_cacheable 
           uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/tomli/tomli-2.0.1-py3-none-any.msgpack
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/tomli/tomli-2.0.1-py3-none-any.msgpack"
   uv_distribution::distribution_database::get_or_build_wheel_metadata dist=pathspec==0.12.1
     uv_client::registry_client::wheel_metadata built_dist=pathspec==0.12.1
       uv_client::cached_client::get_serde 
         uv_client::cached_client::get_cacheable 
           uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/pathspec/pathspec-0.12.1-py3-none-any.msgpack
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/pathspec/pathspec-0.12.1-py3-none-any.msgpack"
          0.520379s   1ms DEBUG uv_client::cached_client Found fresh response for: https://pypi.org/simple/click/
   uv_resolver::version_map::from_metadata 
              0.520542s   0ms DEBUG uv_client::cached_client Found fresh response for: https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl.metadata
              0.520584s   0ms DEBUG uv_client::cached_client Found fresh response for: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl.metadata
   uv_distribution::distribution_database::get_or_build_wheel_metadata dist=click==8.1.7
     uv_client::registry_client::wheel_metadata built_dist=click==8.1.7
       uv_client::cached_client::get_serde 
         uv_client::cached_client::get_cacheable 
           uv_client::cached_client::read_and_parse_cache file=/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/click/click-8.1.7-py3-none-any.msgpack
        0.520693s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of click (>=8.0.0, <9)
        0.520704s   0ms DEBUG uv_resolver::resolver Selecting: click==8.1.7 (click-8.1.7-py3-none-any.whl)
 uv_client::cached_client::from_path_sync path="/Users/edgarramirez/Library/Caches/uv/wheels-v0/pypi/click/click-8.1.7-py3-none-any.msgpack"
   uv_resolver::resolver::get_dependencies package=click, version=8.1.7
     uv_resolver::resolver::distributions_wait package_id=click-8.1.7
              0.520950s   0ms DEBUG uv_client::cached_client Found fresh response for: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl.metadata
   uv_resolver::resolver::choose_version package=pathspec
     uv_resolver::resolver::package_wait package_name=pathspec
        0.521011s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of pathspec (>=0.9.0)
        0.521021s   0ms DEBUG uv_resolver::resolver Selecting: pathspec==0.12.1 (pathspec-0.12.1-py3-none-any.whl)
   uv_resolver::resolver::get_dependencies package=pathspec, version=0.12.1
     uv_resolver::resolver::distributions_wait package_id=pathspec-0.12.1
   uv_resolver::resolver::choose_version package=tomli
     uv_resolver::resolver::package_wait package_name=tomli
        0.521069s   0ms DEBUG uv_resolver::resolver Searching for a compatible version of tomli (>=2.0.1)
        0.521078s   0ms DEBUG uv_resolver::resolver Selecting: tomli==2.0.1 (tomli-2.0.1-py3-none-any.whl)
   uv_resolver::resolver::get_dependencies package=tomli, version=2.0.1
     uv_resolver::resolver::distributions_wait package_id=tomli-2.0.1
Resolved 5 packages in 516ms
    0.521871s DEBUG uv_installer::plan Requirement already cached: chardet==5.2.0
    0.522039s DEBUG uv_installer::plan Requirement already cached: click==8.1.7
    0.525213s DEBUG uv_installer::plan Requirement already cached: deptry==0.14.0
    0.525461s DEBUG uv_installer::plan Requirement already cached: pathspec==0.12.1
    0.525615s DEBUG uv_installer::plan Requirement already cached: tomli==2.0.1
 uv_installer::installer::install num_wheels=5
Installed 5 packages in 8ms
 + chardet==5.2.0
 + click==8.1.7
 + deptry==0.14.0
 + pathspec==0.12.1
 + tomli==2.0.1

$ (venv) tree venv/lib/pypy3.10/site-packages/deptry
venv/lib/pypy3.10/site-packages/deptry
└── rust.pypy310-pp73-darwin.so

Note

This leads to import errors. For example

Traceback (most recent call last):
  File "/home/runner/work/citric/citric/.nox/deps-pypy3-10/bin/deptry", line 5, in <module>
    from deptry.cli import deptry
ModuleNotFoundError: No module named 'deptry.cli'

virtualenv + pip

$ virtualenv venv --python $(pyenv which pypy3.10)
created virtual environment PyPy3.10.13.final.0-64 in 249ms
  creator PyPy3Posix(dest=/Users/edgarramirez/Code/contrib/deptry/venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/edgarramirez/Library/Application Support/virtualenv)
    added seed packages: pip==24.0, setuptools==69.1.0, wheel==0.42.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

$ source venv/bin/activate

$ (venv) pip install deptry==0.14.0 --no-binary 'deptry' --no-cache
Output

Collecting deptry==0.14.0
  Downloading deptry-0.14.0.tar.gz (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.0/116.0 kB 391.3 kB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting chardet>=4.0.0 (from deptry==0.14.0)
  Downloading chardet-5.2.0-py3-none-any.whl.metadata (3.4 kB)
Collecting click<9,>=8.0.0 (from deptry==0.14.0)
  Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting pathspec>=0.9.0 (from deptry==0.14.0)
  Downloading pathspec-0.12.1-py3-none-any.whl.metadata (21 kB)
Collecting tomli>=2.0.1 (from deptry==0.14.0)
  Downloading tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB)
Downloading chardet-5.2.0-py3-none-any.whl (199 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 199.4/199.4 kB 3.3 MB/s eta 0:00:00
Downloading click-8.1.7-py3-none-any.whl (97 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 84.1 MB/s eta 0:00:00
Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)
Downloading tomli-2.0.1-py3-none-any.whl (12 kB)
Building wheels for collected packages: deptry
  Building wheel for deptry (pyproject.toml) ... done
  Created wheel for deptry: filename=deptry-0.14.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl size=2118674 sha256=e159eed0504b5cd9c730a9bbac41de342265c81206e49a1b3d353bd180473c98
  Stored in directory: /private/var/folders/k7/l2cj2kv14x9dg7ljk_p20y7w0000gn/T/pip-ephem-wheel-cache-j5e_kjsv/wheels/0d/d4/c2/a1a72fd0512f7e13c795e7cda6795b0d3428626c1e90afa1ce
Successfully built deptry
Installing collected packages: tomli, pathspec, click, chardet, deptry
Successfully installed chardet-5.2.0 click-8.1.7 deptry-0.14.0 pathspec-0.12.1 tomli-2.0.1

$ tree venv/lib/pypy3.10/site-packages/deptry -L 1
venv/lib/pypy3.10/site-packages/deptry
├── __init__.py
├── __main__.py
├── __pycache__
├── cli.py
├── config.py
├── core.py
├── dependency.py
├── dependency_getter
├── dependency_specification_detector.py
├── deprecate
├── exceptions.py
├── imports
├── module.py
├── python_file_finder.py
├── reporters
├── rust.pyi
├── rust.pypy310-pp73-darwin.so
├── stdlibs.py
├── utils.py
└── violations

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinggreat writeupA wonderful example of a quality contribution 💜installerRelated to package installation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions