Skip to content

pip-compile fails to parse a pyproject.toml with self-references when supplied as a relative path #2215

@merelcht

Description

@merelcht

With the latest pip-tools version 7.5.0 the pip-compile command fails when Click is one of the project dependencies.

Whereas with the previous versions it just runs fine.

Environment Versions

  1. OS Type: Both Unix and Windows (see broken pip-compile builds here https://github.com/kedro-org/kedro/actions/runs/16662774430/job/47182583460)
  2. Python version: $ python -V: all versions from 3.9-3.12
  3. pip version: $ pip --version: pip 25.2
  4. pip-tools version: $ pip-compile --version 7.5.0

Steps to replicate

  1. Clone out the kedro repository: https://github.com/kedro-org/kedro
  2. Install the kedro dependencies : make install-test-requirements
    make install-pre-commit, uv pip install "pip-tools>=6.5"
  3. Run pip-compile

Expected result

A successful pip-compile e.g.:

# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile
#
antlr4-python3-runtime==4.9.3
    # via omegaconf
appdirs==1.4.4
    # via kedro-telemetry
arrow==1.3.0
    # via cookiecutter
attrs==25.3.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
binaryornot==0.4.4
    # via cookiecutter
build==1.2.2.post1
    # via
    #   kedro
    #   kedro (pyproject.toml)
cachetools==6.1.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
certifi==2025.7.14
    # via requests
chardet==5.2.0
    # via binaryornot
charset-normalizer==3.4.2
    # via requests
click==8.1.8
    # via
    #   cookiecutter
    #   kedro
    #   kedro (pyproject.toml)
cookiecutter==2.6.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
dynaconf==3.2.11
    # via
    #   kedro
    #   kedro (pyproject.toml)
fsspec==2025.7.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
gitdb==4.0.12
    # via gitpython
gitpython==3.1.45
    # via
    #   kedro
    #   kedro (pyproject.toml)
idna==3.10
    # via requests
importlib-metadata==8.7.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
importlib-resources==6.5.2
    # via
    #   kedro
    #   kedro (pyproject.toml)
jinja2==3.1.6
    # via cookiecutter
kedro==1.0.0
    # via kedro-telemetry
kedro-telemetry==0.6.3
    # via
    #   kedro
    #   kedro (pyproject.toml)
markdown-it-py==3.0.0
    # via rich
markupsafe==3.0.2
    # via jinja2
mdurl==0.1.2
    # via markdown-it-py
more-itertools==10.7.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
omegaconf==2.3.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
packaging==25.0
    # via build
parse==1.20.2
    # via
    #   kedro
    #   kedro (pyproject.toml)
pluggy==1.6.0
    # via
    #   kedro
    #   kedro (pyproject.toml)
pygments==2.19.2
    # via rich
pyproject-hooks==1.2.0
    # via build
python-dateutil==2.9.0.post0
    # via arrow
python-slugify==8.0.4
    # via cookiecutter
pyyaml==6.0.2
    # via
    #   cookiecutter
    #   kedro
    #   kedro (pyproject.toml)
    #   omegaconf
requests==2.32.4
    # via
    #   cookiecutter
    #   kedro-telemetry
rich==14.1.0
    # via
    #   cookiecutter
    #   kedro
    #   kedro (pyproject.toml)
six==1.17.0
    # via python-dateutil
smmap==5.0.2
    # via gitdb
text-unidecode==1.3
    # via python-slugify
toml==0.10.2
    # via
    #   kedro
    #   kedro (pyproject.toml)
types-python-dateutil==2.9.0.20250708
    # via arrow
typing-extensions==4.14.1
    # via
    #   kedro
    #   kedro (pyproject.toml)
urllib3==2.5.0
    # via requests
zipp==3.23.0
    # via importlib-metadata

Actual result

{25-08-01 10:03}M-HLJY4F7K07:~/Projects/kedro@main Merel_Theisen% pip-compile
Traceback (most recent call last):
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/bin/pip-compile", line 10, in <module>
    sys.exit(cli())
             ^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/click/core.py", line 1161, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/click/core.py", line 1082, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/click/core.py", line 1443, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/click/core.py", line 788, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/piptools/scripts/compile.py", line 371, in cli
    metadata = build_project_metadata(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/piptools/build.py", line 159, in build_project_metadata
    project_metadata = maybe_statically_parse_project_metadata(src_file)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/site-packages/piptools/build.py", line 106, in maybe_statically_parse_project_metadata
    requirement.url = src_file.parent.as_uri()
                      ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Merel_Theisen/anaconda3/envs/kedro/lib/python3.11/pathlib.py", line 566, in as_uri
    raise ValueError("relative path can't be expressed as a file URI")
ValueError: relative path can't be expressed as a file URI

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions