This is an automated email from the ASF dual-hosted git repository. potiuk pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/master by this push: new 9eb92e7 Support installing providers with no dependencies via extras (#12497) 9eb92e7 is described below commit 9eb92e734326fe60c1213cd0b8d18fb31328d84f Author: Jed Cunningham <66968678+jedcunning...@users.noreply.github.com> AuthorDate: Sun Nov 22 00:19:08 2020 -0700 Support installing providers with no dependencies via extras (#12497) --- CONTRIBUTING.rst | 15 ++++----- INSTALL | 15 ++++----- docs/extra-packages-ref.rst | 36 +++++++++++++++++++--- docs/spelling_wordlist.txt | 1 + .../pre_commit_check_setup_extra_packages_ref.py | 5 ++- setup.py | 30 +++++++++++++++++- 6 files changed, 82 insertions(+), 20 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 92d7d3a..3964789 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -541,14 +541,15 @@ This is the full list of those extras: .. START EXTRAS HERE all_dbs, amazon, apache.atlas, apache.beam, apache.cassandra, apache.druid, apache.hdfs, -apache.hive, apache.kylin, apache.pinot, apache.spark, apache.webhdfs, async, atlas, aws, azure, -cassandra, celery, cgroups, cloudant, cncf.kubernetes, dask, databricks, datadog, devel, -devel_hadoop, doc, docker, druid, elasticsearch, exasol, facebook, gcp, gcp_api, github_enterprise, -google, google_auth, grpc, hashicorp, hdfs, hive, jdbc, jira, kerberos, kubernetes, ldap, -microsoft.azure, microsoft.mssql, microsoft.winrm, mongo, mssql, mysql, odbc, oracle, pagerduty, +apache.hive, apache.kylin, apache.livy, apache.pig, apache.pinot, apache.spark, apache.sqoop, +apache.webhdfs, async, atlas, aws, azure, cassandra, celery, cgroups, cloudant, cncf.kubernetes, +dask, databricks, datadog, devel, devel_hadoop, dingding, discord, doc, docker, druid, +elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github_enterprise, google, google_auth, grpc, +hashicorp, hdfs, hive, http, imap, jdbc, jenkins, jira, kerberos, kubernetes, ldap, microsoft.azure, +microsoft.mssql, microsoft.winrm, mongo, mssql, mysql, odbc, openfaas, opsgenie, oracle, pagerduty, papermill, password, pinot, plexus, postgres, presto, qds, qubole, rabbitmq, redis, salesforce, -samba, segment, sendgrid, sentry, singularity, slack, snowflake, spark, ssh, statsd, tableau, -vertica, virtualenv, webhdfs, winrm, yandex, yandexcloud, all, devel_ci +samba, segment, sendgrid, sentry, sftp, singularity, slack, snowflake, spark, sqlite, ssh, statsd, +tableau, vertica, virtualenv, webhdfs, winrm, yandex, yandexcloud, zendesk, all, devel_ci .. END EXTRAS HERE diff --git a/INSTALL b/INSTALL index 4fb8c6c..c22d050 100644 --- a/INSTALL +++ b/INSTALL @@ -64,14 +64,15 @@ pip install -e . \ # START EXTRAS HERE all_dbs, amazon, apache.atlas, apache.beam, apache.cassandra, apache.druid, apache.hdfs, -apache.hive, apache.kylin, apache.pinot, apache.spark, apache.webhdfs, async, atlas, aws, azure, -cassandra, celery, cgroups, cloudant, cncf.kubernetes, dask, databricks, datadog, devel, -devel_hadoop, doc, docker, druid, elasticsearch, exasol, facebook, gcp, gcp_api, github_enterprise, -google, google_auth, grpc, hashicorp, hdfs, hive, jdbc, jira, kerberos, kubernetes, ldap, -microsoft.azure, microsoft.mssql, microsoft.winrm, mongo, mssql, mysql, odbc, oracle, pagerduty, +apache.hive, apache.kylin, apache.livy, apache.pig, apache.pinot, apache.spark, apache.sqoop, +apache.webhdfs, async, atlas, aws, azure, cassandra, celery, cgroups, cloudant, cncf.kubernetes, +dask, databricks, datadog, devel, devel_hadoop, dingding, discord, doc, docker, druid, +elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github_enterprise, google, google_auth, grpc, +hashicorp, hdfs, hive, http, imap, jdbc, jenkins, jira, kerberos, kubernetes, ldap, microsoft.azure, +microsoft.mssql, microsoft.winrm, mongo, mssql, mysql, odbc, openfaas, opsgenie, oracle, pagerduty, papermill, password, pinot, plexus, postgres, presto, qds, qubole, rabbitmq, redis, salesforce, -samba, segment, sendgrid, sentry, singularity, slack, snowflake, spark, ssh, statsd, tableau, -vertica, virtualenv, webhdfs, winrm, yandex, yandexcloud, all, devel_ci +samba, segment, sendgrid, sentry, sftp, singularity, slack, snowflake, spark, sqlite, ssh, statsd, +tableau, vertica, virtualenv, webhdfs, winrm, yandex, yandexcloud, zendesk, all, devel_ci # END EXTRAS HERE diff --git a/docs/extra-packages-ref.rst b/docs/extra-packages-ref.rst index ffd02de..5f500bf 100644 --- a/docs/extra-packages-ref.rst +++ b/docs/extra-packages-ref.rst @@ -59,9 +59,17 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | kylin | ``pip install 'apache-airflow[apache.kylin]'`` | All Kylin related operators & hooks | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| livy | ``pip install 'apache-airflow[apache.livy]'`` | All Livy related operators, hooks & sensors | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| pig | ``pip install 'apache-airflow[apache.pig]'`` | All Pig related operators & hooks | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| pinot | ``pip install 'apache-airflow[apache.pinot]'`` | All Pinot related hooks | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | spark | ``pip install 'apache-airflow[apache.spark]'`` | All Spark related operators & hooks | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ -| webhdfs | ``pip install 'apache-airflow[webhdfs]'`` | HDFS hooks and operators | +| sqoop | ``pip install 'apache-airflow[apache.sqoop]'`` | All Sqoop related operators & hooks | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| webhdfs | ``pip install 'apache-airflow[apache.webhdfs]'`` | HDFS hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ @@ -80,6 +88,10 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | datadog | ``pip install 'apache-airflow[datadog]'`` | Datadog hooks and sensors | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| dingding | ``pip install 'apache-airflow[dingding]'`` | Dingding hooks and sensors | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| discord | ``pip install 'apache-airflow[discord]'`` | Discord hooks and sensors | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | facebook | ``pip install 'apache-airflow[facebook]'`` | Facebook Social | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | gcp | ``pip install 'apache-airflow[google]'`` | Google Cloud | @@ -92,6 +104,8 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | jira | ``pip install 'apache-airflow[jira]'`` | Jira hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| opsgenie | ``pip install 'apache-airflow[opsgenie]'`` | OpsGenie hooks and operators | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | pagerduty | ``pip install 'apache-airflow[pagerduty]'`` | Pagerduty hook | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | plexus | ``pip install 'apache-airflow[plexus]'`` | Plexus service of CoreScientific.com AI platform | @@ -114,6 +128,8 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | yandexcloud | ``pip install 'apache-airflow[yandexcloud]'`` | Yandex.Cloud hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| zendesk | ``pip install 'apache-airflow[zendesk]'`` | Zendesk hooks | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ **Software:** @@ -133,6 +149,8 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what +---------------------+-----------------------------------------------------+------------------------------------------------------------------------------------+ | exasol | ``pip install 'apache-airflow[exasol]'`` | Exasol hooks and operators | +---------------------+-----------------------------------------------------+------------------------------------------------------------------------------------+ +| jenkins | ``pip install 'apache-airflow[jenkins]'`` | Jenkins hooks and operators | ++---------------------+-----------------------------------------------------+------------------------------------------------------------------------------------+ | kubernetes | ``pip install 'apache-airflow[cncf.kubernetes]'`` | Kubernetes Executor and operator | +---------------------+-----------------------------------------------------+------------------------------------------------------------------------------------+ | mongo | ``pip install 'apache-airflow[mongo]'`` | Mongo hooks and operators | @@ -152,9 +170,9 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what | | | or as metastore database backend. Uses pyodbc. | | | | See :ref:`howto/connection/odbc` for more info. | +---------------------+-----------------------------------------------------+------------------------------------------------------------------------------------+ -| oracle | ``pip install 'apache-airflow[oracle]'`` | Oracle hooks and operators | +| openfaas | ``pip install 'apache-airflow[openfaas]'`` | OpenFaaS hooks | +---------------------+-----------------------------------------------------+------------------------------------------------------------------------------------+ -| pinot | ``pip install 'apache-airflow[pinot]'`` | Pinot DB hook | +| oracle | ``pip install 'apache-airflow[oracle]'`` | Oracle hooks and operators | +---------------------+-----------------------------------------------------+------------------------------------------------------------------------------------+ | postgres | ``pip install 'apache-airflow[postgres]'`` | PostgreSQL operators and hook, support as an | | | | Airflow backend | @@ -184,8 +202,14 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what +=====================+=====================================================+======================================================================+ | cgroups | ``pip install 'apache-airflow[cgroups]'`` | Needed To use CgroupTaskRunner | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| ftp | ``pip install 'apache-airflow[ftp]'`` | FTP hooks and operators | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | grpc | ``pip install 'apache-airflow[grpc]'`` | Grpc hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| http | ``pip install 'apache-airflow[http]'`` | HTTP hooks, operators and sensors | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| imap | ``pip install 'apache-airflow[imap]'`` | IMAP hooks and sensors | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | jdbc | ``pip install 'apache-airflow[jdbc]'`` | JDBC hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | kerberos | ``pip install 'apache-airflow[kerberos]'`` | Kerberos integration for Kerberized Hadoop | @@ -194,7 +218,11 @@ Here's the list of the :ref:`subpackages <installation:extra_packages>` and what +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | papermill | ``pip install 'apache-airflow[papermill]'`` | Papermill hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ -| ssh | ``pip install 'apache-airflow[ssh]'`` | SSH hooks and Operator | +| sftp | ``pip install 'apache-airflow[sftp]'`` | SFTP hooks, operators and sensors | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| sqlite | ``pip install 'apache-airflow[sqlite]'`` | SQLite hooks and operators | ++---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ +| ssh | ``pip install 'apache-airflow[ssh]'`` | SSH hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ | winrm | ``pip install 'apache-airflow[microsoft.winrm]'`` | WinRM hooks and operators | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------+ diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt index f3a2c7d..c4fadc8 100644 --- a/docs/spelling_wordlist.txt +++ b/docs/spelling_wordlist.txt @@ -997,6 +997,7 @@ onboarded onkill openfaas oper +opsgenie optimise ora orm diff --git a/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py b/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py index b26e833..d8d9bf2 100755 --- a/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py +++ b/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py @@ -53,13 +53,16 @@ def get_extras_from_setup() -> Dict[str, List[str]]: extras_section = extras_section_regex.findall(setup_content)[0] extras_regex = re.compile( - rf'^\s+[\"\']({PY_IDENTIFIER})[\"\']:\s*({PY_IDENTIFIER})[^#\n]*(#\s*TODO.*)?$', re.MULTILINE + rf'^\s+[\"\']({PY_IDENTIFIER})[\"\']:\s*({PY_IDENTIFIER}|\[\])[^#\n]*(#\s*TODO.*)?$', re.MULTILINE ) extras_dict: Dict[str, List[str]] = {} for extras in extras_regex.findall(extras_section): package = extras[1] alias = extras[0] + # if there are no packages, use the extras alias itself + if package == '[]': + package = alias if not extras_dict.get(package): extras_dict[package] = [] extras_dict[package].append(alias) diff --git a/setup.py b/setup.py index c2a3d8b..c3b74a8 100644 --- a/setup.py +++ b/setup.py @@ -513,7 +513,7 @@ PROVIDERS_REQUIREMENTS: Dict[str, Iterable[str]] = { "dingding": [], "discord": [], "docker": docker, - "elasticsearch": [], + "elasticsearch": elasticsearch, "exasol": exasol, "facebook": facebook, "ftp": [], @@ -566,8 +566,11 @@ EXTRAS_REQUIREMENTS: Dict[str, List[str]] = { "apache.hdfs": hdfs, "apache.hive": hive, "apache.kylin": kylin, + "apache.livy": [], + "apache.pig": [], "apache.pinot": pinot, "apache.spark": spark, + "apache.sqoop": [], "apache.webhdfs": webhdfs, 'async': async_packages, 'atlas': atlas, # TODO: remove this in Airflow 2.1 @@ -583,12 +586,15 @@ EXTRAS_REQUIREMENTS: Dict[str, List[str]] = { 'datadog': datadog, 'devel': devel_minreq, 'devel_hadoop': devel_hadoop, + 'dingding': [], + 'discord': [], 'doc': doc, 'docker': docker, 'druid': druid, # TODO: remove this in Airflow 2.1 'elasticsearch': elasticsearch, 'exasol': exasol, 'facebook': facebook, + 'ftp': [], 'gcp': google, # TODO: remove this in Airflow 2.1 'gcp_api': google, # TODO: remove this in Airflow 2.1 'github_enterprise': flask_oauth, @@ -598,7 +604,10 @@ EXTRAS_REQUIREMENTS: Dict[str, List[str]] = { 'hashicorp': hashicorp, 'hdfs': hdfs, # TODO: remove this in Airflow 2.1 'hive': hive, # TODO: remove this in Airflow 2.1 + 'http': [], + 'imap': [], 'jdbc': jdbc, + 'jenkins': [], 'jira': jira, 'kerberos': kerberos, 'kubernetes': kubernetes, # TODO: remove this in Airflow 2.1 @@ -610,6 +619,8 @@ EXTRAS_REQUIREMENTS: Dict[str, List[str]] = { 'mssql': mssql, # TODO: remove this in Airflow 2.1 'mysql': mysql, 'odbc': odbc, + 'openfaas': [], + 'opsgenie': [], 'oracle': oracle, 'pagerduty': pagerduty, 'papermill': papermill, @@ -627,10 +638,12 @@ EXTRAS_REQUIREMENTS: Dict[str, List[str]] = { 'segment': segment, 'sendgrid': sendgrid, 'sentry': sentry, + 'sftp': [], 'singularity': singularity, 'slack': slack, 'snowflake': snowflake, 'spark': spark, + 'sqlite': [], 'ssh': ssh, 'statsd': statsd, 'tableau': tableau, @@ -640,6 +653,7 @@ EXTRAS_REQUIREMENTS: Dict[str, List[str]] = { 'winrm': winrm, # TODO: remove this in Airflow 2.1 'yandex': yandexcloud, # TODO: remove this in Airflow 2.1 'yandexcloud': yandexcloud, + 'zendesk': [], } EXTRAS_PROVIDERS_PACKAGES: Dict[str, Iterable[str]] = { @@ -670,8 +684,11 @@ EXTRAS_PROVIDERS_PACKAGES: Dict[str, Iterable[str]] = { "apache.hdfs": ["apache.hdfs"], "apache.hive": ["apache.hive"], "apache.kylin": ["apache.kylin"], + "apache.livy": ["apache.livy"], + "apache.pig": ["apache.pig"], "apache.pinot": ["apache.pinot"], "apache.spark": ["apache.spark"], + "apache.sqoop": ["apache.sqoop"], "apache.webhdfs": ["apache.hdfs"], 'async': [], 'atlas': [], # TODO: remove this in Airflow 2.1 @@ -687,12 +704,15 @@ EXTRAS_PROVIDERS_PACKAGES: Dict[str, Iterable[str]] = { 'datadog': ["datadog"], 'devel': ["cncf.kubernetes", "mysql"], 'devel_hadoop': ["apache.hdfs", "apache.hive", "presto"], + 'dingding': ["dingding"], + 'discord': ["discord"], 'doc': [], 'docker': ["docker"], 'druid': ["apache.druid"], # TODO: remove this in Airflow 2.1 'elasticsearch': ["elasticsearch"], 'exasol': ["exasol"], 'facebook': ["facebook"], + 'ftp': ["ftp"], 'gcp': ["google"], # TODO: remove this in Airflow 2.1 'gcp_api': ["google"], # TODO: remove this in Airflow 2.1 'github_enterprise': [], @@ -702,7 +722,10 @@ EXTRAS_PROVIDERS_PACKAGES: Dict[str, Iterable[str]] = { 'hashicorp': ["hashicorp"], 'hdfs': ["apache.hdfs"], # TODO: remove this in Airflow 2.1 'hive': ["apache.hive"], # TODO: remove this in Airflow 2.1 + 'http': ["http"], + 'imap': ["imap"], 'jdbc': ["jdbc"], + 'jenkins': ["jenkins"], 'jira': ["jira"], 'kerberos': [], 'kubernetes': ["cncf.kubernetes"], # TODO: remove this in Airflow 2.1 @@ -714,6 +737,8 @@ EXTRAS_PROVIDERS_PACKAGES: Dict[str, Iterable[str]] = { 'mssql': ["microsoft.mssql"], # TODO: remove this in Airflow 2.1 'mysql': ["mysql"], 'odbc': ["odbc"], + 'openfaas': ["openfaas"], + 'opsgenie': ["opsgenie"], 'oracle': ["oracle"], 'pagerduty': ["pagerduty"], 'papermill': ["papermill"], @@ -731,10 +756,12 @@ EXTRAS_PROVIDERS_PACKAGES: Dict[str, Iterable[str]] = { 'segment': ["segment"], 'sendgrid': ["sendgrid"], 'sentry': [], + 'sftp': ["sftp"], 'singularity': ["singularity"], 'slack': ["slack"], 'snowflake': ["snowflake"], 'spark': ["apache.spark"], + 'sqlite': ["sqlite"], 'ssh': ["ssh"], 'statsd': [], 'tableau': [], @@ -744,6 +771,7 @@ EXTRAS_PROVIDERS_PACKAGES: Dict[str, Iterable[str]] = { 'winrm': ["microsoft.winrm"], # TODO: remove this in Airflow 2.1 'yandexcloud': ["yandex"], # TODO: remove this in Airflow 2.1 'yandex': ["yandex"], + 'zendesk': ["zendesk"], }