potiuk commented on code in PR #51153:
URL: https://github.com/apache/airflow/pull/51153#discussion_r2128659630


##########
dev/breeze/src/airflow_breeze/commands/developer_commands.py:
##########
@@ -1153,6 +1153,35 @@ def autogenerate(
     fix_ownership_using_docker()
 
 
+@main.command(name="build-task-sdk-docs", help="Build the Apache Airflow Task 
Execution SDK documentation.")

Review Comment:
   Yes. That +:
   
   > 1. Extending the "docs" group in `devel-common` (or in Breeze's 
`developer_commands.py`) so that it knows about a `task-sdk` module and points 
it at the right source directory.
   
   I do not think you need to change the group in devel-common (unless you need 
some additional dependencies) - I think it is enough to add (in task-sdk 
pyproject.toml).
   
   ```
   docs = [
       "apache-airflow-devel-common[docs]"
   ]
   ```
   
   Then:
   
   in global_constants.py:
   
   ```python
   # packages that  providers docs
   REGULAR_DOC_PACKAGES = [
       "apache-airflow",
       "docker-stack",
       "helm-chart",
       "apache-airflow-providers",
   ]
   ```
   
   In docs_builder.py (in develo_common):
   
   ```python
       @property
       def _src_dir(self) -> Path:
           if self.package_name == "helm-chart":
               return AIRFLOW_CONTENT_ROOT_PATH / "chart" / "docs"
           if self.package_name == "apache-airflow":
               return AIRFLOW_CONTENT_ROOT_PATH / "airflow-core" / "docs"
           if self.package_name == "docker-stack":
               return AIRFLOW_CONTENT_ROOT_PATH / "docker-stack-docs"
           if self.package_name == "apache-airflow-providers":
               return AIRFLOW_CONTENT_ROOT_PATH / "providers-summary-docs"
           if self.package_name.startswith("apache-airflow-providers-"):
               package_paths = 
self.package_name[len("apache-airflow-providers-") :].split("-")
               return (AIRFLOW_CONTENT_ROOT_PATH / 
"providers").joinpath(*package_paths) / "docs"
           if self.package_name == "apache-airflow-ctl":
               return AIRFLOW_CONTENT_ROOT_PATH / "airflow-ctl" / "docs"
           console.print(f"[red]Unknown package name: {self.package_name}")
           sys.exit(1)
   ```
   In docs_build.py
   
   ```python
   def get_available_packages(include_suspended: bool = False, short_form: bool 
= False) -> list[str]:
       """Get list of all available packages to build."""
       provider_names = 
get_available_providers_distributions(include_suspended=include_suspended)
       if short_form:
           provider_names = [get_short_form(name) for name in provider_names]
       return [
           "apache-airflow",
           *provider_names,
           "apache-airflow-providers",
           "apache-airflow-ctl",
           "helm-chart",
           "docker-stack",
       ]
   ```
   
   in selective_checks:
   
   ```python
           FileGroupForCi.DOC_FILES: [
               r"^docs",
               r"^devel-common/src/docs",
               r"^\.github/SECURITY\.md",
               r"^airflow-core/src/.*\.py$",
               r"^airflow-core/docs/",
               r"^providers/.*/src/",
               r"^providers/.*/tests/",
               r"^providers/.*/docs/",
               r"^providers-summary-docs",
               r"^docker-stack-docs",
               r"^chart",
               r"^task-sdk/src/",
               r"^airflow-ctl/src/",
               r"^airflow-core/tests/system",
               r"^airflow-ctl/src",
               r"^airflow-ctl/docs",
               r"^CHANGELOG\.txt",
               r"^airflow-core/src/airflow/config_templates/config\.yml",
               r"^chart/RELEASE_NOTES\.rst",
               r"^chart/values\.schema\.json",
               r"^chart/values\.json",
               r"^RELEASE_NOTES\.rst",
           ],
   ```
   
   ```python
       @cached_property
       def docs_list_as_string(self) -> str | None:
           _ALL_DOCS_LIST = ""
           if not self.docs_build:
               return None
           if self._default_branch != "main":
               return "apache-airflow docker-stack"
           if self.full_tests_needed:
               return _ALL_DOCS_LIST
           providers_affected = self._find_all_providers_affected(
               include_docs=True,
           )
           if (
               isinstance(providers_affected, AllProvidersSentinel)
               or "docs/conf.py" in self._files
               or "docs/build_docs.py" in self._files
               or self._are_all_providers_affected()
           ):
               return _ALL_DOCS_LIST
           packages = []
           if any(file.startswith(("airflow-core/src/airflow/", 
"airflow-core/docs/")) for file in self._files):
               packages.append("apache-airflow")
           if any(file.startswith("providers-summary-docs/") for file in 
self._files):
               packages.append("apache-airflow-providers")
           if any(file.startswith("chart/") for file in self._files):
               packages.append("helm-chart")
           if any(file.startswith("docker-stack-docs") for file in self._files):
               packages.append("docker-stack")
           if providers_affected:
               for provider in providers_affected:
                   packages.append(provider.replace("-", "."))
           return " ".join(packages)
   ```
   
   Likely some tests should be updated too.
   
   Should be I think  all that is needed (maybe there is one or more place) - 
so that task-sdk docs are  build automatically and use the infrastructure - 
including publishing to s3 during releases - we just will need to update 
`dev/README-*.md` for release manager to also include `task-sdk` package when 
they are building docs.



-- 
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: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to