airflow-core/pyproject.toml (252 lines of code) (raw):

# 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 = [ "GitPython==3.1.44", "gitdb==4.0.12", "hatchling==1.27.0", "packaging==25.0", "pathspec==0.12.1", "pluggy==1.5.0", "smmap==5.0.2", "tomli==2.2.1; python_version < '3.11'", "trove-classifiers==2025.5.1.12", ] build-backend = "hatchling.build" [project] name = "apache-airflow-core" description = "Core packages for Apache Airflow, schedule and API server" readme = { file = "README.md", content-type = "text/markdown" } license-files.globs = ["LICENSE", "3rd-party-licenses/*.txt", "NOTICE"] requires-python = "~=3.9,<3.13" authors = [ { name = "Apache Software Foundation", email = "dev@airflow.apache.org" }, ] maintainers = [ { name = "Apache Software Foundation", email="dev@airflow.apache.org" }, ] keywords = [ "airflow", "orchestration", "workflow", "dag", "pipelines", "automation", "data" ] classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Web Environment", "Framework :: Apache Airflow", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: System :: Monitoring", ] # Version is defined in src/airflow/__init__.py and it is automatically synchronized by pre-commit version = "3.1.0" dependencies = [ "a2wsgi>=1.10.8", "aiosqlite>=0.20.0", # Alembic is important to handle our migrations in predictable and performant way. It is developed # together with SQLAlchemy. Our experience with Alembic is that it very stable in minor version # The 1.13.0 of alembic marked some migration code as SQLAlchemy 2+ only so we limit it to 1.13.1 "alembic>=1.13.1, <2.0", "argcomplete>=1.10", "asgiref>=2.3.0", "attrs>=22.1.0, !=25.2.0", "cadwyn>=5.2.1", "colorlog>=6.8.2", "cron-descriptor>=1.2.24", "croniter>=2.0.2", "cryptography>=41.0.0", "deprecated>=1.2.13", "dill>=0.2.2", # Required for python 3.9 to work with new annotations styles. Check package # description on PyPI for more details: https://pypi.org/project/eval-type-backport/ 'eval-type-backport>=0.2.0;python_version<"3.10"', # 0.115.10 fastapi was a bad release that broke our API's and static checks. # Related fastapi issue here: https://github.com/fastapi/fastapi/discussions/13431 "fastapi[standard]>=0.115.0,!=0.115.10", # We could get rid of flask and gunicorn if we replace serve_logs with a starlette + unicorn "flask>=2.1.1", # We could get rid of flask and gunicorn if we replace serve_logs with a starlette + unicorn "gunicorn>=20.1.0", "httpx>=0.25.0", 'importlib_metadata>=6.5;python_version<"3.12"', 'importlib_metadata>=7.0;python_version>="3.12"', "itsdangerous>=2.0", "jinja2>=3.1.5", "jsonschema>=4.19.1", "lazy-object-proxy>=1.2.0", "libcst >=1.1.0", "linkify-it-py>=2.0.0", "lockfile>=0.12.2", "methodtools>=0.4.7", "opentelemetry-api>=1.26.0", "opentelemetry-exporter-otlp>=1.26.0", "packaging>=23.2", "pathspec>=0.9.0", 'pendulum>=2.1.2,<4.0;python_version<"3.12"', 'pendulum>=3.0.0,<4.0;python_version>="3.12"', "pluggy>=1.5.0", "psutil>=5.8.0", "pydantic>=2.11.0", # Pygments 2.19.0 improperly renders .ini files with dictionaries as values # See https://github.com/pygments/pygments/issues/2834 "pygments>=2.0.1,!=2.19.0", "pyjwt>=2.10.0", "python-daemon>=3.0.0", "python-dateutil>=2.7.0", "python-slugify>=5.0", # Requests 3 if it will be released, will be heavily breaking. "requests>=2.31.0,<3", "rich-argparse>=1.0.0", "rich>=13.6.0", "setproctitle>=1.3.3", # We use some deprecated features of sqlalchemy 2.0 and we should replace them before we can upgrade # See https://sqlalche.me/e/b8d9 for details of deprecated features # you can set environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings. # The issue tracking it is https://github.com/apache/airflow/issues/28723 "sqlalchemy[asyncio]>=1.4.49,<2.0", "sqlalchemy-jsonfield>=1.0", "sqlalchemy-utils>=0.41.2", "svcs>=25.1.0", "tabulate>=0.9.0", "tenacity>=8.0.0,!=8.2.0", "termcolor>=3.0.0", # Universal Pathlib 0.2.4 adds extra validation for Paths and our integration with local file paths # Does not work with it Tracked in https://github.com/fsspec/universal_pathlib/issues/276 "universal-pathlib>=0.2.2,!=0.2.4", "uuid6>=2024.7.10", "apache-airflow-task-sdk<1.2.0,>=1.1.0", # pre-installed providers "apache-airflow-providers-common-compat>=1.6.0", "apache-airflow-providers-common-io>=1.5.3", "apache-airflow-providers-common-sql>=1.26.0", "apache-airflow-providers-smtp>=2.0.2", "apache-airflow-providers-standard>=0.4.0", ] [project.optional-dependencies] "async" = [ "eventlet>=0.37.0", "gevent>=24.2.1", "greenlet>=0.4.9", ] "graphviz" = [ # The graphviz package creates friction when installing on MacOS as it needs graphviz system package to # be installed, and it's really only used for very obscure features of Airflow, so we can skip it on MacOS # Instead, if someone attempts to use it on MacOS, they will get explanatory error on how to install it "graphviz>=0.12; sys_platform != 'darwin'", ] "kerberos" = [ "pykerberos>=1.1.13", "requests-kerberos>=0.14.0", "thrift-sasl>=0.4.2", ] "otel" = [ "opentelemetry-exporter-prometheus>=0.47b0", ] "sentry" = [ "blinker>=1.1", # Sentry SDK 1.33 is broken when greenlets are installed and fails to import # See https://github.com/getsentry/sentry-python/issues/2473 "sentry-sdk>=1.32.0,!=1.33.0", ] "statsd" = [ "statsd>=3.3.0", ] "all" = [ "apache-airflow-core[graphviz,kerberos,otel,sentry,statsd]" ] [project.scripts] airflow = "airflow.__main__:main" [project.urls] "Bug Tracker" = "https://github.com/apache/airflow/issues" Documentation = "https://airflow.apache.org/docs/" Downloads = "https://archive.apache.org/dist/airflow/" Homepage = "https://airflow.apache.org/" "Release Notes" = "https://airflow.apache.org/docs/apache-airflow/stable/release_notes.html" "Slack Chat" = "https://s.apache.org/airflow-slack" "Source Code" = "https://github.com/apache/airflow" LinkedIn = "https://www.linkedin.com/company/apache-airflow/" Mastodon = "https://fosstodon.org/@airflow" Bluesky = "https://bsky.app/profile/apache-airflow.bsky.social" YouTube = "https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/" [tool.hatch.version] path = "src/airflow/__init__.py" [tool.hatch.build.targets.sdist] include = [ "src/airflow", "NOTICE" ] exclude = [ "src/airflow/ui/node_modules/", "src/airflow/api_fastapi/auth/managers/simple/ui/node_modules", ] [tool.hatch.build.targets.custom] path = "./hatch_build.py" artifacts = [ "src/airflow/ui/dist/", "src/airflow/api_fastapi/auth/managers/simple/ui/dist/", "src/airflow/git_version", "generated/", ] [tool.hatch.build.targets.wheel] packages = ['src/airflow'] artifacts = [ "src/airflow/ui/dist/", "src/airflow/api_fastapi/auth/managers/simple/ui/dist/", "src/airflow/git_version" ] exclude = [ "src/airflow/ui/node_modules/", "src/airflow/api_fastapi/auth/managers/simple/ui/node_modules", ] [dependency-groups] dev = [ "apache-airflow-core[all]", "apache-airflow-ctl", "apache-airflow-devel-common", "apache-airflow-task-sdk", # TODO(potiuk): eventually we do not want any providers nor apache-airflow extras to be needed for # airflow-core tests "apache-airflow[pandas,polars]", "apache-airflow-providers-amazon", "apache-airflow-providers-celery", "apache-airflow-providers-cncf-kubernetes", "apache-airflow-providers-fab", "apache-airflow-providers-git", "apache-airflow-providers-ftp", ] # To build docs: # # uv run --group docs build-docs # # To enable auto-refreshing build with server: # # uv run --group docs build-docs --autobuild # # To see more options: # # uv run --group docs build-docs --help # docs = [ "apache-airflow-devel-common[docs]" ] [tool.uv] required-version = ">=0.6.3" [tool.uv.sources] apache-airflow-core = {workspace = true} apache-airflow-devel-common = { workspace = true }