| # Disable Flake8 because of all the sphinx imports | |
| # | |
| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| from __future__ import annotations | |
| import os | |
| import sys | |
| from pathlib import Path | |
| from docs.utils.conf_constants import ( | |
| AIRFLOW_FAVICON_PATH, | |
| SPHINX_DESIGN_STATIC_PATH, | |
| get_html_context, | |
| get_html_sidebars, | |
| get_html_theme_options, | |
| ) | |
| import airflow.sdk | |
| CONF_DIR = Path(__file__).parent.absolute() | |
| sys.path.insert(0, str(CONF_DIR.parent.parent.joinpath("devel-common", "src", "sphinx_exts").resolve())) | |
| sys.path.insert(0, str(CONF_DIR.parent.joinpath("src").resolve())) | |
| PACKAGE_NAME = "task-sdk" | |
| os.environ["AIRFLOW_PACKAGE_NAME"] = PACKAGE_NAME | |
| PACKAGE_VERSION = airflow.sdk.__version__ | |
| project = "Apache Airflow Task SDK" | |
| # # The version info for the project you're documenting | |
| version = PACKAGE_VERSION | |
| # The full version, including alpha/beta/rc tags. | |
| release = PACKAGE_VERSION | |
| language = "en" | |
| locale_dirs: list[str] = [] | |
| extensions = [ | |
| "sphinx.ext.autodoc", | |
| "autoapi.extension", | |
| "sphinx.ext.intersphinx", | |
| "airflow_intersphinx", | |
| "exampleinclude", | |
| "mermaid_svg", | |
| "airflow_spelling", | |
| ] | |
| autoapi_dirs = [CONF_DIR.joinpath("..", "src").resolve()] | |
| autoapi_root = "api" | |
| autoapi_ignore = [ | |
| "*/airflow/sdk/execution_time", | |
| "*/airflow/sdk/api", | |
| "*/_internal*", | |
| ] | |
| autoapi_options = [ | |
| "undoc-members", | |
| "members", | |
| "imported-members", | |
| ] | |
| autoapi_add_toctree_entry = False | |
| autoapi_generate_api_docs = False | |
| autodoc_typehints = "description" | |
| # Prefer pyi over py files if both are found | |
| autoapi_file_patterns = ["*.pyi", "*.py"] | |
| html_theme = "sphinx_airflow_theme" | |
| html_title = "Apache Airflow Task SDK Documentation" | |
| html_short_title = "Task SDK" | |
| html_favicon = AIRFLOW_FAVICON_PATH.as_posix() | |
| html_static_path = [SPHINX_DESIGN_STATIC_PATH.as_posix()] | |
| html_css_files = ["custom.css"] | |
| html_sidebars = get_html_sidebars(PACKAGE_VERSION) | |
| html_theme_options = get_html_theme_options() | |
| conf_py_path = "/task-sdk/docs/" | |
| html_context = get_html_context(conf_py_path) | |
| html_use_index = True | |
| html_show_copyright = False | |
| global_substitutions = { | |
| "experimental": "This is an :ref:`experimental feature <experimental>`.", | |
| } | |
| rst_epilog = "\n".join(f".. |{key}| replace:: {replace}" for key, replace in global_substitutions.items()) | |
| intersphinx_resolve_self = "airflow" | |
| # ``airflow:`` resolves against the published site; ``apache-airflow:`` (added by | |
| # airflow_intersphinx) against the local inventory — use it for not-yet-published pages. | |
| intersphinx_mapping = { | |
| "airflow": ("https://airflow.apache.org/docs/apache-airflow/stable/", None), | |
| } | |
| # Suppress known warnings | |
| suppress_warnings = [ | |
| "autoapi.python_import_resolution", | |
| "autodoc", | |
| ] | |
| exampleinclude_sourceroot = str(CONF_DIR.joinpath("..").resolve()) | |
| spelling_show_suggestions = False | |
| spelling_word_list_filename = [ | |
| str(CONF_DIR.parent.parent.joinpath("docs", "spelling_wordlist.txt").resolve()) | |
| ] | |
| spelling_ignore_importable_modules = True | |
| spelling_ignore_contributor_names = True |