mirror of https://github.com/astral-sh/uv
<!-- Thank you for contributing to uv! To help us out with reviewing, please consider the following: - Does this pull request include a summary of the change? (See below.) - Does this pull request include a descriptive title? - Does this pull request include references to any relevant issues? --> ## Summary Fixes #12606. Two options considered, thanks to @zanieb's guidance are: 1. Special-casing on parse error and encountering the `environment.yml` filename, possibly at `RequirementsTxt::parse` 2. Adding a new `RequirementsSource::EnvironmentYml` variant and erroring on `RequirementSpecification::from_source` I went with the latter for the following reasons: - This edge case is explicitly modelled within the type system. However, it changes the semantics of `RequirementsSource` to also model _unsupported_ sources. - (**Separation of concerns**) The special-casing would occur in the `uv-requirements-txt` crate, which seems to be relatively deep in the guts of the codebase. In my opinion, maintainers working in `uv-requirements-txt` would reasonably assume the input file to be a `requirements.txt` file, instead of having to be concerned with it being another file format (`environment.yml`, `pyproject.toml`, etc.) <!-- What's the purpose of the change? What does it do, and why? --> ## Test Plan Manually tested as follows: ```sh >>> cargo run -- pip install -r environment.yml error: Conda environment file `environment.yml` is not supported >>> cargo run -- add -r environment.yml error: Conda environment file `environment.yml` is not supported ``` If you can point me to the appropriate test module, I can write up tests for these to use `insta`. <!-- How was it tested? --> |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||