Skip to content

Commit 3916011

Browse files
Support git, path, url Poetry-style dependencies in pyproject.toml (#4554)
Fix #4547
1 parent be58db6 commit 3916011

File tree

1 file changed

+54
-14
lines changed

1 file changed

+54
-14
lines changed

sdk/python/packages/flet-cli/src/flet_cli/utils/project_dependencies.py

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)