File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1791,6 +1791,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
17911791 ) ;
17921792
17931793 requirements
1794+ . filter ( |requirement| !self . excludes . contains ( & requirement. name ) )
17941795 . flat_map ( move |requirement| {
17951796 PubGrubDependency :: from_requirement (
17961797 & self . conflicts ,
Original file line number Diff line number Diff line change @@ -4306,6 +4306,34 @@ fn override_dependency_from_specific_uv_toml() -> Result<()> {
43064306 Ok(())
43074307}
43084308
4309+ /// Check that `exclude-dependencies` in `uv.toml` applies to direct requirements.
4310+ #[test]
4311+ fn exclude_direct_dependency_from_uv_toml() -> Result<()> {
4312+ let context = uv_test::test_context!("3.12");
4313+ let requirements_in = context.temp_dir.child("requirements.in");
4314+ requirements_in.write_str("werkzeug")?;
4315+
4316+ let uv_toml = context.temp_dir.child("uv.toml");
4317+ uv_toml.write_str(
4318+ r#"
4319+ exclude-dependencies = ["werkzeug"]
4320+ "#,
4321+ )?;
4322+
4323+ uv_snapshot!(context.filters(), context.pip_compile()
4324+ .arg("requirements.in")
4325+ .arg("--no-header"), @"
4326+ success: true
4327+ exit_code: 0
4328+ ----- stdout -----
4329+
4330+ ----- stderr -----
4331+ Resolved in [TIME]
4332+ ");
4333+
4334+ Ok(())
4335+ }
4336+
43094337/// Black==23.10.1 depends on tomli>=1.1.0 for Python versions below 3.11. Demonstrate that we can
43104338/// override it with a multi-line override.
43114339#[test]
Original file line number Diff line number Diff line change @@ -8136,27 +8136,27 @@ fn install_with_overrides_from_stdin() -> Result<()> {
81368136 Ok ( ( ) )
81378137}
81388138
8139- /// Install with excludes from stdin.
8139+ /// Install with a direct exclusion from stdin.
81408140#[ test]
81418141#[ expect( clippy:: disallowed_types) ]
81428142fn install_with_excludes_from_stdin ( ) -> Result < ( ) > {
81438143 let context = uv_test:: test_context!( "3.12" ) ;
81448144
81458145 let excludes_txt = context. temp_dir . child ( "excludes.txt" ) ;
8146- excludes_txt. write_str ( "anyio>4.0.0 " ) ?;
8146+ excludes_txt. write_str ( "anyio" ) ?;
81478147
81488148 uv_snapshot ! ( context. pip_install( )
81498149 . arg( "anyio==4.0.1" )
81508150 . arg( "--exclude" )
81518151 . arg( "-" )
81528152 . stdin( std:: fs:: File :: open( excludes_txt) ?) , @"
8153- success: false
8154- exit_code: 1
8153+ success: true
8154+ exit_code: 0
81558155 ----- stdout -----
81568156
81578157 ----- stderr -----
8158- × No solution found when resolving dependencies:
8159- ╰─▶ Because there is no version of anyio==4.0.1 and you require anyio==4.0.1, we can conclude that your requirements are unsatisfiable.
8158+ Resolved in [TIME]
8159+ Checked in [TIME]
81608160 "
81618161 ) ;
81628162
You can’t perform that action at this time.
0 commit comments