Open un-def opened 1 month ago
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.
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:
--config
(and--no-config
) is declared as eager: https://github.com/jazzband/pip-tools/blob/7.4.1/piptools/scripts/options.py#L317-L333--config
's callbackoverride_defaults_from_config_file
tries to get thesrc_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#L543src_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.”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-L630Environment Versions
Python 3.12.3
pip 24.0
pip-compile, version 7.4.1
Steps to replicate
requirements/
withrequirements.in
..pip-tools.toml
orpyproject.toml
withgenerate-hashes = true
.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.