uranusjr commented on code in PR #68991:
URL: https://github.com/apache/airflow/pull/68991#discussion_r3484035912


##########
dev/breeze/src/airflow_breeze/utils/packages.py:
##########
@@ -683,6 +683,27 @@ def get_cross_provider_dependent_packages(provider_id: 
str) -> list[str]:
     return get_provider_dependencies()[provider_id]["cross-providers-deps"]
 
 
+def get_cross_provider_dependencies_for_extras(provider_id: str) -> list[str]:
+    """Return cross-provider dependencies that can be rendered as installable 
extras.
+
+    ``cross-providers-deps`` is an import-level graph. Some entries are already
+    required dependencies, so they should not be documented as ``pkg[extra]``.
+    This mirrors the filtering used when generating provider 
``pyproject.toml``.
+    """
+    cross_provider_dependencies = 
get_cross_provider_dependent_packages(provider_id)
+    if not cross_provider_dependencies:
+        return []
+
+    suspended_provider_ids = get_suspended_provider_ids()
+    required_dependencies = "\n".join(get_provider_requirements(provider_id))
+    return [
+        cross_provider_id
+        for cross_provider_id in cross_provider_dependencies
+        if cross_provider_id not in suspended_provider_ids
+        and get_pip_package_name(cross_provider_id) not in 
required_dependencies

Review Comment:
   This may be brittle in a provider’s name is a substring of another 
provider’s. Instead of comparing to a string, this can parse the return value 
of `get_provider_requirements` with `packaging.requirements` and actually match 
the package names instead.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to