diff --git a/sdk/python/packages/flet-cli/src/flet_cli/utils/project_dependencies.py b/sdk/python/packages/flet-cli/src/flet_cli/utils/project_dependencies.py index 2cae6d72d..35df3b3c5 100644 --- a/sdk/python/packages/flet-cli/src/flet_cli/utils/project_dependencies.py +++ b/sdk/python/packages/flet-cli/src/flet_cli/utils/project_dependencies.py @@ -46,8 +46,7 @@ def format_dependency_version(dependency_name: str, dependency_value: Any): if isinstance(dependency_value, dict): version = dependency_value.get("version") if version: - sep = "==" - value = version + value = version.replace(" ", "") else: git_url = dependency_value.get("git") if git_url: @@ -87,19 +86,27 @@ def format_dependency_version(dependency_name: str, dependency_value: Any): if markers is not None: suffix = f";{markers}" else: - value = dependency_value - sep = "==" + value = dependency_value.replace(" ", "") + sep = "" if value.startswith("^"): sep = ">=" value = value[1:] + elif "*" in value: + sep = "" + value = "" elif value.startswith("~"): - sep = "~=" - value = value[1:] - return f"{dependency_name}~={value[1:]}" - elif "<" in value or ">" in value: sep = "" - value = value.replace(" ", "") + if "~=" not in value: + value = value.replace("~", "~=") + elif any(s in value for s in ("!", "<", ">")): + sep = "" + for s in ("!", "<"): + if s in value: + value = value.replace(s, f" {s}") + break + elif value[0].isdigit(): + sep = "==" return f"{dependency_name}{sep}{value}{suffix}" @@ -128,6 +135,16 @@ def get_project_dependencies( if project_dependencies is None: return None - dependencies = set(project_dependencies) + dependencies: set[str] = set() + + for dep in project_dependencies: + for sep in ("<=", "<", "!"): + if sep in dep: + dep = dep.replace(" ", "") + value, _, suffix = dep.partition(sep) + dependencies.add(f"{value} {sep}{suffix}") + break + else: + dependencies.add(dep.replace(" ", "")) return sorted(dependencies)