diff --git a/poetry/flatpak-poetry-generator.py b/poetry/flatpak-poetry-generator.py index abe806c2..53039875 100755 --- a/poetry/flatpak-poetry-generator.py +++ b/poetry/flatpak-poetry-generator.py @@ -63,19 +63,20 @@ def get_module_sources(parsed_lockfile: dict, include_devel: bool = True) -> lis for section, packages in parsed_lockfile.items(): if section == "package": for package in packages: + category = package.get("category") + groups = package.get("groups", []) + optional = package.get("optional", False) if ( - package["category"] == "dev" - and include_devel - and not package["optional"] - or package["category"] == "main" - and not package["optional"] + not category + or (category == "dev" and include_devel and not optional) + or (category == "main" and not optional) ): + hashes = [] # Check for old metadata format (poetry version < 1.0.0b2) if "hashes" in parsed_lockfile["metadata"]: hashes = parsed_lockfile["metadata"]["hashes"][package["name"]] - # Else new metadata format - else: - hashes = [] + # metadata format 1.1 + elif "files" in parsed_lockfile["metadata"]: for package_name in parsed_lockfile["metadata"]["files"]: if package_name == package["name"]: package_files = parsed_lockfile["metadata"]["files"][ @@ -86,6 +87,14 @@ def get_module_sources(parsed_lockfile: dict, include_devel: bool = True) -> lis match = hash_re.search(package_files[num]["hash"]) if match: hashes.append(match.group(2)) + # metadata format 2.0 + else: + if groups == ["dev"] and not include_devel: + continue + for file in package["files"]: + match = hash_re.search(file["hash"]) + if match: + hashes.append(match.group(2)) package_source = package.get("source") if package_source and package_source["type"] == "directory": print(f'Skipping download url and hash extraction for {package["name"]}, source type is directory') @@ -112,12 +121,15 @@ def get_dep_names(parsed_lockfile: dict, include_devel: bool = True) -> list: for section, packages in parsed_lockfile.items(): if section == "package": for package in packages: + category = package.get("category") + groups = package.get("groups", []) + optional = package.get("optional", False) + if groups == ["dev"] and not include_devel: + continue if ( - package["category"] == "dev" - and include_devel - and not package["optional"] - or package["category"] == "main" - and not package["optional"] + not category + or (category == "dev" and include_devel and not optional) + or (category == "main" and not optional) ): dep_names.append(package["name"]) return dep_names