File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -954,6 +954,20 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
954954 } => {
955955 // If we're excluding transitive dependencies, short-circuit.
956956 if self . dependency_mode . is_direct ( ) {
957+ // If a package has a marker, add a dependency from it to the
958+ // same package without markers.
959+ if marker. is_some ( ) {
960+ return Ok ( Dependencies :: Available ( vec ! [ (
961+ PubGrubPackage :: from( PubGrubPackageInner :: Package {
962+ name: name. clone( ) ,
963+ extra: extra. clone( ) ,
964+ marker: None ,
965+ url: url. clone( ) ,
966+ } ) ,
967+ Range :: singleton( version. clone( ) ) ,
968+ ) ] ) ) ;
969+ }
970+
957971 // If an extra is provided, wait for the metadata to be available, since it's
958972 // still required for generating the lock file.
959973 let dist = match url {
Original file line number Diff line number Diff line change @@ -5164,3 +5164,28 @@ fn target_no_build_isolation() -> Result<()> {
51645164
51655165 Ok ( ( ) )
51665166}
5167+
5168+ /// Ensure that we install packages with markers on them.
5169+ #[ test]
5170+ fn preserve_markers ( ) -> Result < ( ) > {
5171+ let context = TestContext :: new ( "3.12" ) ;
5172+
5173+ let requirements_txt = context. temp_dir . child ( "requirements.txt" ) ;
5174+ requirements_txt. write_str ( "anyio ; python_version > '3.7'" ) ?;
5175+
5176+ uv_snapshot ! ( sync_without_exclude_newer( & context)
5177+ . arg( "requirements.txt" ) , @r###"
5178+ success: true
5179+ exit_code: 0
5180+ ----- stdout -----
5181+
5182+ ----- stderr -----
5183+ Resolved 1 package in [TIME]
5184+ Downloaded 1 package in [TIME]
5185+ Installed 1 package in [TIME]
5186+ + anyio==4.4.0
5187+ "###
5188+ ) ;
5189+
5190+ Ok ( ( ) )
5191+ }
You can’t perform that action at this time.
0 commit comments