# 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. [build-system] requires = ["flit_core==4.2.0"] build-backend = "flit_core.buildapi" [project] name = "apache-airflow-devel-common" version = "0.1.0" description = "Devel common package for Apache Airflow where shared test and development code is stored" classifiers = [ "Private :: Do Not Upload", ] dependencies = [ "black>=26.1.0", "filelock>=3.13.0", "jmespath>=0.7.0", "kgb>=7.2.0", "requests_mock>=1.11.0", "rich>=13.6.0", "ruff==0.17.3", "semver>=3.0.2", "typer>=0.22.0", "time-machine[dateutil]>=3.0.0", "wheel>=0.42.0", "yamllint>=1.33.0", "python-on-whales>=0.70.0", "apache-airflow-devel-common[basic]" ] [project.optional-dependencies] "all" = [ "apache-airflow-devel-common[coverage,duckdb,debuggers,devscripts,doc,docs-gen,mypy,pytest,sentry,sqlalchemy]", ] "basic" = [ "apache-airflow-devel-common[coverage,debuggers,mypy,pytest,sqlalchemy]" ] "coverage" = [ "coverage>=7.4.0", ] "duckdb" = [ "duckdb>=1.2.0", ] "debuggers" = [ "ipdb>=0.13.13", "pdbr>=0.8.9", ] "devscripts" = [ "click>=8.3.0", "gitpython>=3.1.40", "incremental>=24.7.2", "pipdeptree>=2.13.1", "pygithub>=2.1.1", "restructuredtext-lint>=1.4.0", "rich-click>=1.9.7", "semver>=3.0.2", "towncrier>=23.11.0", "twine>=4.0.2", ] "docs" = [ "astroid>=4", "rich-click>=1.9.7", "click>=8.3.0", "tabulate>=0.9.0", "docutils>=0.21", "pagefind>=1.5.0", "pagefind-bin>=1.5.0", "sphinx-airflow-theme@https://airflow.apache.org/sphinx-airflow-theme/sphinx_airflow_theme-0.3.16-py3-none-any.whl", "sphinx-argparse>=0.4.0", "sphinx-autoapi>=3.8.0", "sphinx-autobuild>=2024.10.2", "sphinx-copybutton>=0.5.2", "sphinx-design>=0.5.0", "sphinx-jinja>=2.0.2", "sphinx-rtd-theme>=2.0.0", "sphinx>=7", "sphinxcontrib-applehelp>=1.0.4", "sphinxcontrib-devhelp>=1.0.2", "sphinxcontrib-htmlhelp>=2.0.1", "sphinxcontrib-httpdomain>=1.8.1", "sphinxcontrib-jquery>=4.1", "sphinxcontrib-jsmath>=1.0.1", "sphinxcontrib-mermaid>=2.1.0", "sphinxcontrib-qthelp>=1.0.3", "sphinxcontrib-serializinghtml>=1.1.5", "sphinxcontrib-spelling>=8.0.0", "swagger-plugin-for-sphinx>=7.1.0,!=7.2.0", # Exclude 7.2.0, see https://github.com/SAP/swagger-plugin-for-sphinx/issues/518 ] "docs-gen" = [ "diagrams>=0.24.4", "eralchemy>=1.6", ] "mypy" = [ # Mypy dependencies # TODO: upgrade to newer versions of MyPy continuously as they are released "apache-airflow-mypy", "mypy==2.4.1", "types-Deprecated>=1.2.9.20240311", "types-Markdown>=3.6.0.20240316", "types-PyMySQL>=1.1.0.20240425", "types-PyYAML>=6.0.12.20240724", "types-aiofiles>=23.2.0.20240403", "types-certifi>=2021.10.8.3", "types-croniter>=2.0.0.20240423", "types-docutils>=0.21.0.20240704", "types-paramiko>=4.0.0.20260402", # types-protobuf 5.29.1.20250402 is a partial stub package that makes mypy complain "types-protobuf>=5.26.0.20240422,!=5.29.1.20250402", "types-python-dateutil>=2.9.0.20240316", "types-python-slugify>=8.0.2.20240310", "types-pytz>=2024.1.0.20240417", "types-redis>=4.6.0.20240425", "types-requests>=2.31.0", "types-setuptools>=80.0.0.20250429", "types-tabulate>=0.9.0.20240106", "types-toml>=0.10.8.20240310", "types-cachetools>=6.2.0.20251022", ] "no-doc" = [ "apache-airflow-devel-common[coverage,duckdb,debuggers,devscripts,mypy,pytest,sentry]" ] "pytest" = [ # General pytest devel tools "pytest-asyncio>=1.1.0", "pytest-cov>=4.1.0", "pytest-custom-exit-code>=0.3.0", "pytest-icdiff>=0.9", "pytest-instafail>=0.5.0", "pytest-mock>=3.14.0", # pytest-rerunfailures 16.0 crashes xdist xfail tests # https://github.com/pytest-dev/pytest-rerunfailures/issues/302 "pytest-rerunfailures>=13.0,!=16.0", "pytest-timeouts>=1.2.1", "pytest-unordered>=0.6.1", "pytest-xdist>=3.5.0", "pytest>=9.0.0", ] "sentry" = [ "blinker>=1.7.0", "beautifulsoup4>=4.7.1", ] "sqlalchemy" = [ "sqlalchemy[asyncio]>=1.4.49,!=2.1.0", "sqlalchemy-utils>=0.41.2", ] [dependency-groups] dev = [ "apache-airflow-core", ] docs = [ "apache-airflow-devel-common[docs]", ] docs-gen = [ "apache-airflow-devel-common[docs-gen]", ] mypy = [ "apache-airflow-devel-common[mypy]", ] [project.scripts] build-docs = "docs.build_docs:build_docs" [tool.ruff] extend = "../pyproject.toml" src = ["src"] [tool.flit.module] name = "tests_common" # Explicit sdist contents so the build does not rely on VCS information # (flit 4.0 makes --no-use-vcs the default — see https://github.com/pypa/flit/pull/782). [tool.flit.sdist] include = [ "sphinx_design/", "src/docs/", "src/sphinx_exts/", "tests/", ] [tool.ruff.lint.extend-per-file-ignores] "src/tests_common/*" = ["S101", "TRY002"] # Test compat imports banned imports to allow testing against older airflow versions "src/tests_common/test_utils/compat.py" = ["TID251", "F401"] "src/tests_common/pytest_plugin.py" = ["F811"]