@@ -82,7 +82,10 @@ def poetry(fixture_root: Path, locker: Locker) -> Poetry:
8282
8383
8484def set_package_requires (
85- poetry : Poetry , skip : set [str ] | None = None , dev : set [str ] | None = None
85+ poetry : Poetry ,
86+ skip : set [str ] | None = None ,
87+ dev : set [str ] | None = None ,
88+ markers : dict [str , str ] | None = None ,
8689) -> None :
8790 skip = skip or set ()
8891 dev = dev or set ()
@@ -93,6 +96,8 @@ def set_package_requires(
9396 dep = pkg .to_dependency ()
9497 if pkg .name in dev :
9598 dep ._groups = frozenset (["dev" ])
99+ if markers and pkg .name in markers :
100+ dep ._marker = parse_marker (markers [pkg .name ])
96101 package .add_dependency (dep )
97102
98103 poetry ._package = package
@@ -151,21 +156,18 @@ def test_exporter_can_export_requirements_txt_with_standard_packages_and_markers
151156 "version" : "1.2.3" ,
152157 "optional" : False ,
153158 "python-versions" : "*" ,
154- "marker" : "python_version < '3.7'" ,
155159 },
156160 {
157161 "name" : "bar" ,
158162 "version" : "4.5.6" ,
159163 "optional" : False ,
160164 "python-versions" : "*" ,
161- "marker" : "extra =='foo'" ,
162165 },
163166 {
164167 "name" : "baz" ,
165168 "version" : "7.8.9" ,
166169 "optional" : False ,
167170 "python-versions" : "*" ,
168- "marker" : "sys_platform == 'win32'" ,
169171 },
170172 ],
171173 "metadata" : {
@@ -175,7 +177,12 @@ def test_exporter_can_export_requirements_txt_with_standard_packages_and_markers
175177 },
176178 }
177179 )
178- set_package_requires (poetry )
180+ markers = {
181+ "foo" : "python_version < '3.7'" ,
182+ "bar" : "extra =='foo'" ,
183+ "baz" : "sys_platform == 'win32'" ,
184+ }
185+ set_package_requires (poetry , markers = markers )
179186
180187 exporter = Exporter (poetry , NullIO ())
181188 exporter .export ("requirements.txt" , tmp_path , "requirements.txt" )
@@ -397,23 +404,29 @@ def test_exporter_can_export_requirements_txt_with_nested_packages_and_markers(
397404 "version" : "1.2.3" ,
398405 "optional" : False ,
399406 "python-versions" : "*" ,
400- "marker" : "python_version < '3.7'" ,
401- "dependencies" : {"b" : ">=0.0.0" , "c" : ">=0.0.0" },
407+ "dependencies" : {
408+ "b" : {
409+ "version" : ">=0.0.0" ,
410+ "markers" : "platform_system == 'Windows'" ,
411+ },
412+ "c" : {
413+ "version" : ">=0.0.0" ,
414+ "markers" : "sys_platform == 'win32'" ,
415+ },
416+ },
402417 },
403418 {
404419 "name" : "b" ,
405420 "version" : "4.5.6" ,
406421 "optional" : False ,
407422 "python-versions" : "*" ,
408- "marker" : "platform_system == 'Windows'" ,
409423 "dependencies" : {"d" : ">=0.0.0" },
410424 },
411425 {
412426 "name" : "c" ,
413427 "version" : "7.8.9" ,
414428 "optional" : False ,
415429 "python-versions" : "*" ,
416- "marker" : "sys_platform == 'win32'" ,
417430 "dependencies" : {"d" : ">=0.0.0" },
418431 },
419432 {
@@ -430,7 +443,9 @@ def test_exporter_can_export_requirements_txt_with_nested_packages_and_markers(
430443 },
431444 }
432445 )
433- set_package_requires (poetry , skip = {"b" , "c" , "d" })
446+ set_package_requires (
447+ poetry , skip = {"b" , "c" , "d" }, markers = {"a" : "python_version < '3.7'" }
448+ )
434449
435450 exporter = Exporter (poetry , NullIO ())
436451 exporter .export ("requirements.txt" , tmp_path , "requirements.txt" )
@@ -1196,7 +1211,6 @@ def test_exporter_can_export_requirements_txt_with_git_packages_and_markers(
11961211 "version" : "1.2.3" ,
11971212 "optional" : False ,
11981213 "python-versions" : "*" ,
1199- "marker" : "python_version < '3.7'" ,
12001214 "source" : {
12011215 "type" : "git" ,
12021216 "url" : "https://github.com/foo/foo.git" ,
@@ -1212,7 +1226,7 @@ def test_exporter_can_export_requirements_txt_with_git_packages_and_markers(
12121226 },
12131227 }
12141228 )
1215- set_package_requires (poetry )
1229+ set_package_requires (poetry , markers = { "foo" : "python_version < '3.7'" } )
12161230
12171231 exporter = Exporter (poetry , NullIO ())
12181232 exporter .export ("requirements.txt" , tmp_path , "requirements.txt" )
@@ -1383,7 +1397,6 @@ def test_exporter_can_export_requirements_txt_with_directory_packages_and_marker
13831397 "version" : "1.2.3" ,
13841398 "optional" : False ,
13851399 "python-versions" : "*" ,
1386- "marker" : "python_version < '3.7'" ,
13871400 "source" : {
13881401 "type" : "directory" ,
13891402 "url" : "sample_project" ,
@@ -1398,7 +1411,7 @@ def test_exporter_can_export_requirements_txt_with_directory_packages_and_marker
13981411 },
13991412 }
14001413 )
1401- set_package_requires (poetry )
1414+ set_package_requires (poetry , markers = { "foo" : "python_version < '3.7'" } )
14021415
14031416 exporter = Exporter (poetry , NullIO ())
14041417 exporter .export ("requirements.txt" , tmp_path , "requirements.txt" )
@@ -1466,7 +1479,6 @@ def test_exporter_can_export_requirements_txt_with_file_packages_and_markers(
14661479 "version" : "1.2.3" ,
14671480 "optional" : False ,
14681481 "python-versions" : "*" ,
1469- "marker" : "python_version < '3.7'" ,
14701482 "source" : {
14711483 "type" : "file" ,
14721484 "url" : "distributions/demo-0.1.0.tar.gz" ,
@@ -1481,7 +1493,7 @@ def test_exporter_can_export_requirements_txt_with_file_packages_and_markers(
14811493 },
14821494 }
14831495 )
1484- set_package_requires (poetry )
1496+ set_package_requires (poetry , markers = { "foo" : "python_version < '3.7'" } )
14851497
14861498 exporter = Exporter (poetry , NullIO ())
14871499 exporter .export ("requirements.txt" , tmp_path , "requirements.txt" )
0 commit comments