Skip to content

Config file discovery doesn't work as intended #2096

Open
@un-def

Description

@un-def

As it stated in the documentation, pip-tools look for the configuration file “in the same directory as your requirements input files”. However, due to the way click works, it's not true:

  1. --config (and --no-config) is declared as eager: https://github.com/jazzband/pip-tools/blob/7.4.1/piptools/scripts/options.py#L317-L333
  2. --config's callback override_defaults_from_config_file tries to get the src_files param value to compute the config path relative to the source files: https://github.com/jazzband/pip-tools/blob/7.4.1/piptools/utils.py#L543
  3. But since callbacks of eager options are called before other options are processed, src_files is always empty. From the click documentation: “All eager parameters are evaluated before all non-eager parameters, but again in the order as they were provided on the command line by the user.”
  4. select_config_file falls back to the current working dir as a config file location: https://github.com/jazzband/pip-tools/blob/7.4.1/piptools/utils.py#L627-L630

Environment Versions

  1. Linux
  2. Python version: Python 3.12.3
  3. pip version: pip 24.0
  4. pip-tools version: pip-compile, version 7.4.1

Steps to replicate

  1. Create the requirements directory requirements/ with requirements.in.
  2. Create the configuration file .pip-tools.toml or pyproject.toml with generate-hashes = true.
  3. Run pip compile requirements/requirements.in.

Expected result

requirements/requirements.txt contains hashes.

Actual result

requirements/requirements.txt has no hashes; the configuration file is ignored.

Activity

added
bugSomething is not working
duplicateDuplicate of an existing issue/PR
configRelated to pip-tools' configuration
on May 31, 2024
chrysle

chrysle commented on May 31, 2024

@chrysle
Contributor

Thanks for raising this issue! Note this was already discovered and the same fix suggested in #1902.

I proposed it in #2048 some time ago, unfortunately it seems to have been forgotten. Thanks for providing the tests though, I might transfer them there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is not workingconfigRelated to pip-tools' configurationduplicateDuplicate of an existing issue/PR

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @un-def@chrysle

      Issue actions

        Config file discovery doesn't work as intended · Issue #2096 · jazzband/pip-tools