mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 19:08:04 +00:00
Annotate sources of requirements (#3269)
## Summary Fixes https://github.com/astral-sh/uv/issues/1343. This is kinda a first draft at the moment, but does at least mostly work locally (barring some bits of the test suite that seem to not work for me in general). ## Test Plan Mostly running the existing tests and checking the revised output is sane ## Outstanding issues Most of these come down to "AFAIK, the existing tools don't support these patterns, but `uv` does" and so I'm not sure there's an existing good answer here! Most of the answers so far are "whatever was easiest to build" - [x] ~~Is "-r pyproject.toml" correct? Should it show something else or get skipped entirely~~ No it wasn't. Fixed in3044fa8b86
- [ ] If the requirements file is stdin, that just gets skipped. Should it be recorded? - [ ] Overrides get shown as "--override<override.txt>". Correct? - [x] ~~Some of the tests (e.g. `dependency_excludes_non_contiguous_range_of_compatible_versions`) make assumptions about the order of package versions being outputted, which this PR breaks. I'm not sure if the text is fairly arbitrary and can be replaced or whether the behaviour needs fixing?~~ - fixed by removing the custom pubgrub PartialEq/Hash - [ ] Are all the `TrackedFromStr` et al changes needed, or is there an easier way? I don't think so, I think it's necessary to track these sort of things fairly comprehensively to make this feature work, and this sort of invasive change feels necessary, but happy to be proved wrong there :) - [x] ~~If you have a requirement coming in from two or more different requirements files only one turns up. I've got a closed-source example for this (can go into more detail if needed), mostly consisting of a complicated set of common deps creating a larger set. It's a rarer case, but worth considering.~~042432b200
- [ ] Doesn't add annotations for `setup.py` yet - This is pretty hard, as the correct location to insert the path is `crates/pypi-types/src/metadata.rs`'s `parse_pkg_info`, which as it's based off a source distribution has entirely thrown away such matters as "where did this package requirement get built from". Could add "`built package name`" as a dep, but that's a little odd.
This commit is contained in:
parent
367958e6b2
commit
bc963d13cb
42 changed files with 1295 additions and 331 deletions
|
@ -342,6 +342,7 @@ impl<'a> SitePackages<'a> {
|
|||
Requirement::from_pep508(dependency)?,
|
||||
),
|
||||
hashes: vec![],
|
||||
path: None,
|
||||
};
|
||||
if seen.insert(dependency.clone()) {
|
||||
stack.push(dependency);
|
||||
|
@ -406,6 +407,7 @@ impl<'a> SitePackages<'a> {
|
|||
Requirement::from_pep508(dependency)?,
|
||||
),
|
||||
hashes: vec![],
|
||||
path: None,
|
||||
};
|
||||
if seen.insert(dependency.clone()) {
|
||||
stack.push(dependency);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue