@@ -455,21 +455,29 @@ def merge_args(args):
455455 }
456456
457457
458- def generate_requirements_file_from_pyproject (include_dependencies , extra_dependencies ):
458+ def generate_requirements_file_from_pyproject (include_dependencies , optional_dependencies ):
459459 import tempfile
460460
461461 directory = tempfile .mkdtemp (prefix = "liccheck_" )
462462 requirements_txt_file = directory + "/requirements.txt"
463463 with open (requirements_txt_file , "w" ) as f :
464- project = toml .load ("pyproject.toml" ).get ("project" , {})
465- dependencies = project .get ("dependencies" , []) if include_dependencies else []
466- optional_dependencies = (
467- project .get ("optional-dependencies" , {}) if extra_dependencies else {}
468- )
469- for extra_dependency in extra_dependencies :
470- if extra_dependency in optional_dependencies :
471- dependencies += optional_dependencies [extra_dependency ]
472- f .write (os .linesep .join (dependencies ))
464+ ptoml = toml .load ("pyproject.toml" )
465+ project = ptoml .get ("project" , {})
466+ poetry = ptoml .get ("tool" , {}).get ('poetry' , {})
467+ dependencies = set ()
468+ if include_dependencies :
469+ dependencies |= set (project .get ("dependencies" , []))
470+ dependencies |= set (d for d , v in poetry .get ("dependencies" , {}).items ()
471+ if d != 'python' and (not isinstance (v , dict ) or not v .get ('optional' )))
472+ if optional_dependencies :
473+ extra_dependency = project .get ("optional-dependencies" , {})
474+ extra_dependency .update (poetry .get ("extras" , {}))
475+ if '*' in optional_dependencies :
476+ optional_dependencies = extra_dependency .keys ()
477+ for opt in optional_dependencies :
478+ extralist = extra_dependency .get (opt , [])
479+ dependencies |= set (extralist )
480+ f .write (os .linesep .join (sorted (dependencies )))
473481 return requirements_txt_file
474482
475483
0 commit comments