@@ -14,29 +14,69 @@ def get_poetry_dependencies(
1414 if poetry_dependencies is None :
1515 return None
1616
17- def format_dependency_version (dependency : str , version_value : Any ):
17+ def format_dependency_version (dependency_name : str , dependency_value : Any ):
18+ sep = "@"
19+ value = ""
1820 suffix = ""
19- if isinstance (version_value , dict ):
20- version = version_value ["version" ]
21- markers = version_value .get ("markers" )
21+
22+ if isinstance (dependency_value , dict ):
23+ version = dependency_value .get ("version" )
24+ if version :
25+ sep = "=="
26+ value = version
27+ else :
28+ git_url = dependency_value .get ("git" )
29+ if git_url :
30+ value = (
31+ f"git+{ git_url } " if not git_url .startswith ("git@" ) else git_url
32+ )
33+ rev = (
34+ dependency_value .get ("branch" )
35+ or dependency_value .get ("rev" )
36+ or dependency_value .get ("tag" )
37+ )
38+ if rev :
39+ value = f"{ value } @{ rev } "
40+ subdirectory = dependency_value .get ("subdirectory" )
41+ if subdirectory :
42+ value = f"{ value } #subdirectory={ subdirectory } "
43+ else :
44+ path = dependency_value .get ("path" )
45+ if path :
46+ value = path
47+ dependency_name = ""
48+ sep = ""
49+ else :
50+ url = dependency_value .get ("url" )
51+ if url :
52+ value = url
53+ dependency_name = ""
54+ sep = ""
55+ else :
56+ raise Exception (
57+ f"Unsupported dependency specification: { dependency_name } = { dependency_value } "
58+ )
59+
60+ # markers - common for all
61+ markers = dependency_value .get ("markers" )
2262 if markers is not None :
2363 suffix = f";{ markers } "
2464 else :
25- version = version_value
65+ value = dependency_value
66+ sep = "=="
2667
27- sep = "=="
28- if version .startswith ("^" ):
68+ if value .startswith ("^" ):
2969 sep = ">="
30- version = version [1 :]
31- elif version .startswith ("~" ):
70+ value = value [1 :]
71+ elif value .startswith ("~" ):
3272 sep = "~="
33- version = version [1 :]
34- return f"{ dependency } ~={ version [1 :]} "
35- elif "<" in version or ">" in version :
73+ value = value [1 :]
74+ return f"{ dependency_name } ~={ value [1 :]} "
75+ elif "<" in value or ">" in value :
3676 sep = ""
37- version = version .replace (" " , "" )
77+ value = value .replace (" " , "" )
3878
39- return f"{ dependency } { sep } { version } { suffix } "
79+ return f"{ dependency_name } { sep } { value } { suffix } "
4080
4181 dependencies : set [str ] = {
4282 format_dependency_version (dependency , version )
0 commit comments