# 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. [metadata] name = apache-airflow summary = Programmatically author, schedule and monitor data pipelines author = Apache Software Foundation author_email = dev@airflow.apache.org url = https://airflow.apache.org/ long_description = file: README.md long_description_content_type = text/markdown license = Apache License 2.0 license_files = LICENSE NOTICE # Start of licenses generated automatically licenses/LICENSE-bootstrap.txt licenses/LICENSE-bootstrap3-typeahead.txt licenses/LICENSE-d3-shape.txt licenses/LICENSE-d3-tip.txt licenses/LICENSE-d3js.txt licenses/LICENSE-dagre-d3.txt licenses/LICENSE-datatables.txt licenses/LICENSE-elasticmock.txt licenses/LICENSE-eonasdan-bootstrap-datetimepicker.txt licenses/LICENSE-flask-kerberos.txt licenses/LICENSE-hue.txt licenses/LICENSE-jqclock.txt licenses/LICENSE-jquery.txt licenses/LICENSE-moment-strftime.txt licenses/LICENSE-moment.txt licenses/LICENSE-normalize.txt # End of licences generated automatically licenses/LICENSES-ui.txt classifiers = Development Status :: 5 - Production/Stable Environment :: Console Environment :: Web Environment Intended Audience :: Developers Intended Audience :: System Administrators License :: OSI Approved :: Apache Software License Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Topic :: System :: Monitoring Framework :: Apache Airflow project_urls = Documentation=https://airflow.apache.org/docs/ Bug Tracker=https://github.com/apache/airflow/issues Source Code=https://github.com/apache/airflow Slack Chat=https://s.apache.org/airflow-slack Twitter=https://twitter.com/ApacheAirflow YouTube=https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/ [options] zip_safe = False include_package_data = True python_requires = ~=3.7 packages = find: setup_requires = gitpython wheel ##################################################################################################### # IMPORTANT NOTE!!!!!!!!!!!!!!! # IF you are removing dependencies from this list, please make sure that you also increase # DEPENDENCIES_EPOCH_NUMBER in the Dockerfile.ci ##################################################################################################### install_requires = # 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 alembic>=1.5.1, <2.0 argcomplete>=1.10 # We limit the version of attrs to work with the old version of cattrs attrs>=20.0,<21.0 blinker cached_property>=1.5.0;python_version<="3.7" # Cattrs upgrades were known to break lineage https://github.com/apache/airflow/issues/16172 # TODO: Cattrs is now at 3.8 version so we should attempt to upgrade cattrs soon. cattrs~=1.1, !=1.7.* # Colorlog 6.x merges TTYColoredFormatter into ColoredFormatter, breaking backwards compatibility with 4.x # Update CustomTTYColoredFormatter to remove colorlog>=4.0.2, <5.0 connexion[swagger-ui,flask]>=2.10.0 cron-descriptor>=1.2.24 croniter>=0.3.17 cryptography>=0.9.3 deprecated>=1.2.13 dill>=0.2.2 # Flask and all related libraries are limited to below 2.0.0 because we expect it to introduce # Serious breaking changes. Flask 2.0 has been introduced in May 2021 and 2.0.2 version is available # now (Feb 2022): TODO: we should attempt to migrate to Flask 2 and all below flask libraries soon. flask>=1.1.0, <2.0 # We are tightly coupled with FAB version because we vendored in part of FAB code related to security manager # This is done as part of preparation to removing FAB as dependency, but we are not ready for it yet # Every time we update FAB version here, please make sure that you review the classes and models in # `airflow/www/fab_security` with their upstream counterparts. In particular, make sure any breaking changes, # for example any new methods, are accounted for. flask-appbuilder==3.4.5 flask-caching>=1.5.0, <2.0.0 flask-login>=0.3, <0.5 # Strict upper-bound on the latest release of flask-session, # as any schema changes will require a migration. flask-session>=0.3.1, <=0.4.0 flask-wtf>=0.14.3, <0.15 graphviz>=0.12 gunicorn>=20.1.0 httpx importlib_metadata>=1.7;python_version<"3.9" importlib_resources>=5.2;python_version<"3.9" # Logging is broken with itsdangerous > 2 - likely due to changed serializing support # https://itsdangerous.palletsprojects.com/en/2.0.x/changes/#version-2-0-0 # itsdangerous 2 has been released in May 2020 # TODO: we should attempt to upgrade to line 2 of itsdangerous itsdangerous>=1.1.0, <2.0 # Jinja2 3.1 will remove the 'autoescape' and 'with' extensions, which would # break Flask 1.x, so we limit this for future compatibility. Remove this # when bumping Flask to >=2. jinja2>=2.10.1,<3.1 # Because connexion upper-bound is 5.0.0 and we depend on connexion, # we pin to the same upper-bound as connexion. jsonschema>=3.2.0, <5.0 lazy-object-proxy lockfile>=0.12.2 markdown>=3.0 # Markupsafe 2.1.0 breaks with error: import name 'soft_unicode' from 'markupsafe'. # This should be removed when either this issue is closed: # https://github.com/pallets/markupsafe/issues/284 # or when we will be able to upgrade JINJA to newer version (currently limited due to Flask and # Flask Application Builder) markupsafe>=1.1.1,<2.1.0 marshmallow-oneofschema>=2.0.1 packaging>=14.0 pathspec~=0.9.0 pendulum>=2.0 pluggy>=1.0 psutil>=4.2.0 pygments>=2.0.1 # python daemon crashes with 'socket operation on non-socket' for python 3.8+ in version < 2.2.4 # https://pagure.io/python-daemon/issue/34 python-daemon>=2.2.4 python-dateutil>=2.3 python-nvd3>=0.15.0 python-slugify>=5.0 rich>=12.4.1 setproctitle>=1.1.8 # SQL Alchemy 1.4.10 introduces a bug where for PyODBC driver UTCDateTime fields get wrongly converted # as string and fail to be converted back to datetime. It was supposed to be fixed in # https://github.com/sqlalchemy/sqlalchemy/issues/6366 (released in 1.4.12) but apparently our case # is different. Opened https://github.com/sqlalchemy/sqlalchemy/issues/7660 to track it sqlalchemy>=1.4,<1.4.10 sqlalchemy_jsonfield>=1.0 tabulate>=0.7.5 tenacity>=6.2.0 termcolor>=1.1.0 typing-extensions>=3.7.4 unicodecsv>=0.14.1 # Werkzeug is known to cause breaking changes and it is very closely tied with FlaskAppBuilder and other # Flask dependencies and the limit to 1.* line should be reviewed when we upgrade Flask and remove # FlaskAppBuilder. werkzeug~=1.0, >=1.0.1 [options.packages.find] include = airflow* [options.package_data] airflow= py.typed alembic.ini git_version customized_form_field_behaviours.schema.json provider_info.schema.json airflow.api_connexion.openapi=*.yaml airflow.serialization=*.json airflow.utils= context.pyi [options.entry_points] console_scripts= airflow=airflow.__main__:main [bdist_wheel] python-tag=py3 [files] packages = airflow [easy_install] [mypy] ignore_missing_imports = True no_implicit_optional = True warn_redundant_casts = True warn_unused_ignores = False plugins = airflow.mypy.plugin.decorators pretty = True show_error_codes = True [mypy-airflow.migrations.*] ignore_errors = True # Let's assume all google.cloud packages have no implicit optional # Most of them don't but even if they do, it does not matter [mypy-google.cloud.*] no_implicit_optional = False [isort] line_length=110 combine_as_imports = true default_section = THIRDPARTY known_first_party=airflow,airflow_breeze,tests # Need to be consistent with the exclude config defined in pre-commit-config.yaml skip=build,.tox,venv profile = black