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()
[email protected](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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]