From 999598cbf76989cd5d4217991044c95ec4e48cc6 Mon Sep 17 00:00:00 2001 From: Pankaj Koti Date: Wed, 23 Aug 2023 08:06:11 +0530 Subject: [PATCH 01/12] Use a trimmed version of README.md for PyPI --- .pre-commit-config.yaml | 2 +- MANIFEST.in | 1 + PYPIREADME.md | 184 ++++++++++++++++++++++++++++++++++++++++ setup.cfg | 7 +- 4 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 PYPIREADME.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 60a4a68304f68..a648ff5b1be06 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - id: doctoc name: Add TOC for Markdown and RST files files: - ^CONTRIBUTING\.md$|^README\.md$|^UPDATING.*\.md$|^chart/UPDATING.*\.md$|^dev/.*\.md$|^dev/.*\.rst$ + ^CONTRIBUTING\.md$|^PYPIREADME\.md$|^README\.md$|^UPDATING.*\.md$|^chart/UPDATING.*\.md$|^dev/.*\.md$|^dev/.*\.rst$ exclude: ^.*/.*_vendor/ args: - "--maxlevel" diff --git a/MANIFEST.in b/MANIFEST.in index 983e6c09f4235..7581f0553652e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -18,6 +18,7 @@ include NOTICE include LICENSE +include PYPIREADME.md include RELEASE_NOTES.rst include README.md graft licenses diff --git a/PYPIREADME.md b/PYPIREADME.md new file mode 100644 index 0000000000000..8bb5c97f300d1 --- /dev/null +++ b/PYPIREADME.md @@ -0,0 +1,184 @@ + + +# Apache Airflow + +[![PyPI version](https://badge.fury.io/py/apache-airflow.svg)](https://badge.fury.io/py/apache-airflow) +[![GitHub Build](https://github.com/apache/airflow/workflows/CI%20Build/badge.svg)](https://github.com/apache/airflow/actions) +[![Coverage Status](https://codecov.io/gh/apache/airflow/graph/badge.svg?token=WdLKlKHOAU)](https://codecov.io/gh/apache/airflow) +[![License](https://img.shields.io/:license-Apache%202-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0.txt) +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/apache-airflow.svg)](https://pypi.org/project/apache-airflow/) +[![Docker Pulls](https://img.shields.io/docker/pulls/apache/airflow.svg)](https://hub.docker.com/r/apache/airflow) +[![Docker Stars](https://img.shields.io/docker/stars/apache/airflow.svg)](https://hub.docker.com/r/apache/airflow) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/apache-airflow)](https://pypi.org/project/apache-airflow/) +[![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/apache-airflow)](https://artifacthub.io/packages/search?repo=apache-airflow) +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +[![Twitter Follow](https://img.shields.io/twitter/follow/ApacheAirflow.svg?style=social&label=Follow)](https://twitter.com/ApacheAirflow) +[![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://s.apache.org/airflow-slack) +[![Contributors](https://img.shields.io/github/contributors/apache/airflow)](https://github.com/apache/airflow/graphs/contributors) +[![OSSRank](https://shields.io/endpoint?url=https://ossrank.com/shield/6)](https://ossrank.com/p/6) + +[Apache Airflow](https://airflow.apache.org/docs/apache-airflow/stable/) (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. + +When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. + +Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. + + + +**Table of contents** + +- [Requirements](#requirements) +- [Getting started](#getting-started) +- [Installing from PyPI](#installing-from-pypi) +- [Official source code](#official-source-code) +- [Contributing](#contributing) +- [Who uses Apache Airflow?](#who-uses-apache-airflow) +- [Who Maintains Apache Airflow?](#who-maintains-apache-airflow) + + + + +## Requirements + +Apache Airflow is tested with: + +| | Main version (dev) | Stable version (2.7.0) | +|-------------|------------------------|---------------------------| +| Python | 3.8, 3.9, 3.10, 3.11 | 3.8, 3.9, 3.10, 3.11 | +| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) | +| Kubernetes | 1.24, 1.25, 1.26, 1.27 | 1.24, 1.25, 1.26, 1.27 | +| PostgreSQL | 11, 12, 13, 14, 15 | 11, 12, 13, 14, 15 | +| MySQL | 5.7, 8.0, 8.1 | 5.7, 8.0 | +| SQLite | 3.15.0+ | 3.15.0+ | +| MSSQL | 2017(\*), 2019(\*) | 2017(\*), 2019(\*) | + +\* Experimental + +**Note**: MySQL 5.x versions are unable to or have limitations with +running multiple schedulers -- please see the [Scheduler docs](https://airflow.apache.org/docs/apache-airflow/stable/scheduler.html). +MariaDB is not tested/recommended. + +**Note**: SQLite is used in Airflow tests. Do not use it in production. We recommend +using the latest stable version of SQLite for local development. + +**Note**: Airflow currently can be run on POSIX-compliant Operating Systems. For development, it is regularly +tested on fairly modern Linux Distros and recent versions of macOS. +On Windows you can run it via WSL2 (Windows Subsystem for Linux 2) or via Linux Containers. +The work to add Windows support is tracked via [#10388](https://github.com/apache/airflow/issues/10388), but +it is not a high priority. You should only use Linux-based distros as "Production" execution environment +as this is the only environment that is supported. The only distro that is used in our CI tests and that +is used in the [Community managed DockerHub image](https://hub.docker.com/p/apache/airflow) is +`Debian Bullseye`. + +## Getting started + +Visit the official Airflow website documentation (latest **stable** release) for help with +[installing Airflow](https://airflow.apache.org/docs/apache-airflow/stable/installation.html), +[getting started](https://airflow.apache.org/docs/apache-airflow/stable/start.html), or walking +through a more complete [tutorial](https://airflow.apache.org/docs/apache-airflow/stable/tutorial.html). + +> Note: If you're looking for documentation for the main branch (latest development branch): you can find it on [s.apache.org/airflow-docs](https://s.apache.org/airflow-docs/). + +For more information on Airflow Improvement Proposals (AIPs), visit +the [Airflow Wiki](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals). + +Documentation for dependent projects like provider packages, Docker image, Helm Chart, you'll find it in [the documentation index](https://airflow.apache.org/docs/). + +## Installing from PyPI + +We publish Apache Airflow as `apache-airflow` package in PyPI. Installing it however might be sometimes tricky +because Airflow is a bit of both a library and application. Libraries usually keep their dependencies open, and +applications usually pin them, but we should do neither and both simultaneously. We decided to keep +our dependencies as open as possible (in `setup.py`) so users can install different versions of libraries +if needed. This means that `pip install apache-airflow` will not work from time to time or will +produce unusable Airflow installation. + +To have repeatable installation, however, we keep a set of "known-to-be-working" constraint +files in the orphan `constraints-main` and `constraints-2-0` branches. We keep those "known-to-be-working" +constraints files separately per major/minor Python version. +You can use them as constraint files when installing Airflow from PyPI. Note that you have to specify +correct Airflow tag/version/branch and Python versions in the URL. + + +1. Installing just Airflow: + +> Note: Only `pip` installation is currently officially supported. + +While it is possible to install Airflow with tools like [Poetry](https://python-poetry.org) or +[pip-tools](https://pypi.org/project/pip-tools), they do not share the same workflow as +`pip` - especially when it comes to constraint vs. requirements management. +Installing via `Poetry` or `pip-tools` is not currently supported. + +There are known issues with ``bazel`` that might lead to circular dependencies when using it to install +Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel`` community works on fixing +the problem in `this PR `_ so it might be that +newer versions of ``bazel`` will handle it. + +If you wish to install Airflow using those tools, you should use the constraint files and convert +them to the appropriate format and workflow that your tool requires. + + +```bash +pip install 'apache-airflow==2.7.0' \ + --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.7.0/constraints-3.8.txt" +``` + +2. Installing with extras (i.e., postgres, google) + +```bash +pip install 'apache-airflow[postgres,google]==2.7.0' \ + --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.7.0/constraints-3.8.txt" +``` + +For information on installing provider packages, check +[providers](http://airflow.apache.org/docs/apache-airflow-providers/index.html). + +## Official source code + +Apache Airflow is an [Apache Software Foundation](https://www.apache.org) (ASF) project, +and our official source code releases: + +- Follow the [ASF Release Policy](https://www.apache.org/legal/release-policy.html) +- Can be downloaded from [the ASF Distribution Directory](https://downloads.apache.org/airflow) +- Are cryptographically signed by the release manager +- Are officially voted on by the PMC members during the + [Release Approval Process](https://www.apache.org/legal/release-policy.html#release-approval) + +Following the ASF rules, the source packages released must be sufficient for a user to build and test the +release provided they have access to the appropriate platform and tools. + +## Contributing + +Want to help build Apache Airflow? Check out our [contributing documentation](https://github.com/apache/airflow/blob/main/CONTRIBUTING.rst). + +Official Docker (container) images for Apache Airflow are described in [IMAGES.rst](https://github.com/apache/airflow/blob/main/IMAGES.rst). + +## Who uses Apache Airflow? + +Check the organizations who are using Apache Airflow +[in the wild](https://github.com/apache/airflow/blob/main/INTHEWILD.md). + +## Who Maintains Apache Airflow? + +Airflow is the work of the [community](https://github.com/apache/airflow/graphs/contributors), +but the [core committers/maintainers](https://people.apache.org/committers-by-project.html#airflow) +are responsible for reviewing and merging PRs as well as steering conversations around new feature requests. +If you would like to become a maintainer, please review the Apache Airflow +[committer requirements](https://github.com/apache/airflow/blob/main/COMMITTERS.rst#guidelines-to-become-an-airflow-committer). diff --git a/setup.cfg b/setup.cfg index 9ad223927a274..ebaf757b32175 100644 --- a/setup.cfg +++ b/setup.cfg @@ -22,7 +22,7 @@ author = Apache Software Foundation author_email = dev@airflow.apache.org url = https://airflow.apache.org/ version = attr: airflow.__version__ -long_description = file: README.md +long_description = file: PYPIREADME.md long_description_content_type = text/markdown license = Apache License 2.0 license_files = @@ -43,11 +43,12 @@ classifiers = Topic :: System :: Monitoring Framework :: Apache Airflow project_urls = + Bug Tracker=https://github.com/apache/airflow/issues + Changelog=https://airflow.apache.org/docs/apache-airflow/stable/release_notes.html Documentation=https://airflow.apache.org/docs/ Downloads=https://archive.apache.org/dist/airflow/ - Bug Tracker=https://github.com/apache/airflow/issues - Source Code=https://github.com/apache/airflow Slack Chat=https://s.apache.org/airflow-slack + Source Code=https://github.com/apache/airflow Twitter=https://twitter.com/ApacheAirflow YouTube=https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/ From 26c7d6b035a9d19a54257d1bda6088d11986f388 Mon Sep 17 00:00:00 2001 From: Pankaj Koti Date: Wed, 30 Aug 2023 12:44:41 +0530 Subject: [PATCH 02/12] Use pre-commit hook to generate trimmed README.md for PyPI --- .pre-commit-config.yaml | 9 +- MANIFEST.in | 1 - README.md | 20 +++- STATIC_CODE_CHECKS.rst | 2 + .../src/airflow_breeze/pre_commit_ids.py | 1 + PYPIREADME.md => generated/PYPI_README.md | 37 +++----- images/breeze/output-commands-hash.txt | 2 +- images/breeze/output_static-checks.svg | 94 ++++++++++--------- scripts/ci/license-templates/LICENSE.md | 18 ++++ .../pre_commit_generate_pypi_readme.py | 79 ++++++++++++++++ setup.cfg | 2 +- 11 files changed, 188 insertions(+), 77 deletions(-) rename PYPIREADME.md => generated/PYPI_README.md (88%) create mode 100644 scripts/ci/license-templates/LICENSE.md create mode 100755 scripts/ci/pre_commit/pre_commit_generate_pypi_readme.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a648ff5b1be06..0805585aae6e0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - id: doctoc name: Add TOC for Markdown and RST files files: - ^CONTRIBUTING\.md$|^PYPIREADME\.md$|^README\.md$|^UPDATING.*\.md$|^chart/UPDATING.*\.md$|^dev/.*\.md$|^dev/.*\.rst$ + ^CONTRIBUTING\.md$|^README\.md$|^UPDATING.*\.md$|^chart/UPDATING.*\.md$|^dev/.*\.md$|^dev/.*\.rst$ exclude: ^.*/.*_vendor/ args: - "--maxlevel" @@ -761,6 +761,13 @@ repos: exclude: ^tests/system/providers/google/cloud/bigquery/example_bigquery_queries\.py$ pass_filenames: true additional_dependencies: ['rich>=12.4.4'] + - id: generate-pypi-readme + name: Generate PyPI README + entry: ./scripts/ci/pre_commit/pre_commit_generate_pypi_readme.py + language: python + files: ^README\.md$ + pass_filenames: false + additional_dependencies: ['rich>=12.4.4'] - id: lint-markdown name: Run markdownlint description: Checks the style of Markdown files. diff --git a/MANIFEST.in b/MANIFEST.in index 7581f0553652e..983e6c09f4235 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -18,7 +18,6 @@ include NOTICE include LICENSE -include PYPIREADME.md include RELEASE_NOTES.rst include README.md graft licenses diff --git a/README.md b/README.md index 6ca55b6f7bf7f..6b90d677d2751 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ under the License. --> + # Apache Airflow [![PyPI version](https://badge.fury.io/py/apache-airflow.svg)](https://badge.fury.io/py/apache-airflow) @@ -40,6 +41,7 @@ When workflows are defined as code, they become more maintainable, versionable, Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. + **Table of contents** @@ -59,7 +61,7 @@ Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The - [Approach to dependencies of Airflow](#approach-to-dependencies-of-airflow) - [Contributing](#contributing) - [Who uses Apache Airflow?](#who-uses-apache-airflow) -- [Who Maintains Apache Airflow?](#who-maintains-apache-airflow) +- [Who maintains Apache Airflow?](#who-maintains-apache-airflow) - [Can I use the Apache Airflow logo in my presentation?](#can-i-use-the-apache-airflow-logo-in-my-presentation) - [Airflow merchandise](#airflow-merchandise) - [Links](#links) @@ -82,6 +84,7 @@ Airflow is not a streaming solution, but it is often used to process real-time d - **Elegant**: Airflow pipelines are lean and explicit. Parameterizing your scripts is built into the core of Airflow using the powerful **Jinja** templating engine. - **Scalable**: Airflow has a modular architecture and uses a message queue to orchestrate an arbitrary number of workers. + ## Requirements Apache Airflow is tested with: @@ -114,6 +117,8 @@ as this is the only environment that is supported. The only distro that is used is used in the [Community managed DockerHub image](https://hub.docker.com/p/apache/airflow) is `Debian Bullseye`. + + ## Getting started Visit the official Airflow website documentation (latest **stable** release) for help with @@ -128,6 +133,8 @@ the [Airflow Wiki](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+I Documentation for dependent projects like provider packages, Docker image, Helm Chart, you'll find it in [the documentation index](https://airflow.apache.org/docs/). + + ## Installing from PyPI We publish Apache Airflow as `apache-airflow` package in PyPI. Installing it however might be sometimes tricky @@ -177,6 +184,8 @@ pip install 'apache-airflow[postgres,google]==2.7.0' \ For information on installing provider packages, check [providers](http://airflow.apache.org/docs/apache-airflow-providers/index.html). + + ## Official source code Apache Airflow is an [Apache Software Foundation](https://www.apache.org) (ASF) project, @@ -191,6 +200,7 @@ and our official source code releases: Following the ASF rules, the source packages released must be sufficient for a user to build and test the release provided they have access to the appropriate platform and tools. + ## Convenience packages There are other ways of installing and using Airflow. Those are "convenience" methods - they are @@ -409,18 +419,23 @@ Those `extras` and `providers` dependencies are maintained in `provider.yaml` of By default, we should not upper-bound dependencies for providers, however each provider's maintainer might decide to add additional limits (and justify them with comment). + ## Contributing Want to help build Apache Airflow? Check out our [contributing documentation](https://github.com/apache/airflow/blob/main/CONTRIBUTING.rst). Official Docker (container) images for Apache Airflow are described in [IMAGES.rst](https://github.com/apache/airflow/blob/main/IMAGES.rst). + + ## Who uses Apache Airflow? More than 400 organizations are using Apache Airflow [in the wild](https://github.com/apache/airflow/blob/main/INTHEWILD.md). -## Who Maintains Apache Airflow? + + +## Who maintains Apache Airflow? Airflow is the work of the [community](https://github.com/apache/airflow/graphs/contributors), but the [core committers/maintainers](https://people.apache.org/committers-by-project.html#airflow) @@ -428,6 +443,7 @@ are responsible for reviewing and merging PRs as well as steering conversations If you would like to become a maintainer, please review the Apache Airflow [committer requirements](https://github.com/apache/airflow/blob/main/COMMITTERS.rst#guidelines-to-become-an-airflow-committer). + ## Can I use the Apache Airflow logo in my presentation? Yes! Be sure to abide by the Apache Foundation [trademark policies](https://www.apache.org/foundation/marks/#books) and the Apache Airflow [Brandbook](https://cwiki.apache.org/confluence/display/AIRFLOW/Brandbook). The most up-to-date logos are found in [this repo](https://github.com/apache/airflow/tree/main/docs/apache-airflow/img/logos/) and on the Apache Software Foundation [website](https://www.apache.org/logos/about.html). diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst index 9b5d1d8df7aaf..a2496cd789254 100644 --- a/STATIC_CODE_CHECKS.rst +++ b/STATIC_CODE_CHECKS.rst @@ -265,6 +265,8 @@ require Breeze Docker image to be built locally. +-----------------------------------------------------------+--------------------------------------------------------------+---------+ | flynt | Run flynt string format converter for Python | | +-----------------------------------------------------------+--------------------------------------------------------------+---------+ +| generate-pypi-readme | Generate PyPI README | | ++-----------------------------------------------------------+--------------------------------------------------------------+---------+ | identity | Print input to the static check hooks for troubleshooting | | +-----------------------------------------------------------+--------------------------------------------------------------+---------+ | insert-license | * Add license for all SQL files | | diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py index 79e0cecba88c9..a9f797e84ce0f 100644 --- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py +++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py @@ -86,6 +86,7 @@ "end-of-file-fixer", "fix-encoding-pragma", "flynt", + "generate-pypi-readme", "identity", "insert-license", "lint-chart-schema", diff --git a/PYPIREADME.md b/generated/PYPI_README.md similarity index 88% rename from PYPIREADME.md rename to generated/PYPI_README.md index 8bb5c97f300d1..1793c7daa03cb 100644 --- a/PYPIREADME.md +++ b/generated/PYPI_README.md @@ -40,34 +40,19 @@ When workflows are defined as code, they become more maintainable, versionable, Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. - - -**Table of contents** - -- [Requirements](#requirements) -- [Getting started](#getting-started) -- [Installing from PyPI](#installing-from-pypi) -- [Official source code](#official-source-code) -- [Contributing](#contributing) -- [Who uses Apache Airflow?](#who-uses-apache-airflow) -- [Who Maintains Apache Airflow?](#who-maintains-apache-airflow) - - - - ## Requirements Apache Airflow is tested with: -| | Main version (dev) | Stable version (2.7.0) | -|-------------|------------------------|---------------------------| -| Python | 3.8, 3.9, 3.10, 3.11 | 3.8, 3.9, 3.10, 3.11 | -| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) | -| Kubernetes | 1.24, 1.25, 1.26, 1.27 | 1.24, 1.25, 1.26, 1.27 | -| PostgreSQL | 11, 12, 13, 14, 15 | 11, 12, 13, 14, 15 | -| MySQL | 5.7, 8.0, 8.1 | 5.7, 8.0 | -| SQLite | 3.15.0+ | 3.15.0+ | -| MSSQL | 2017(\*), 2019(\*) | 2017(\*), 2019(\*) | +| | Main version (dev) | Stable version (2.7.0) | +|-------------|------------------------------|---------------------------| +| Python | 3.8, 3.9, 3.10, 3.11 | 3.8, 3.9, 3.10, 3.11 | +| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) | +| Kubernetes | 1.24, 1.25, 1.26, 1.27, 1.28 | 1.24, 1.25, 1.26, 1.27 | +| PostgreSQL | 11, 12, 13, 14, 15 | 11, 12, 13, 14, 15 | +| MySQL | 5.7, 8.0, 8.1 | 5.7, 8.0 | +| SQLite | 3.15.0+ | 3.15.0+ | +| MSSQL | 2017(\*), 2019(\*) | 2017(\*), 2019(\*) | \* Experimental @@ -172,10 +157,10 @@ Official Docker (container) images for Apache Airflow are described in [IMAGES.r ## Who uses Apache Airflow? -Check the organizations who are using Apache Airflow +More than 400 organizations are using Apache Airflow [in the wild](https://github.com/apache/airflow/blob/main/INTHEWILD.md). -## Who Maintains Apache Airflow? +## Who maintains Apache Airflow? Airflow is the work of the [community](https://github.com/apache/airflow/graphs/contributors), but the [core committers/maintainers](https://people.apache.org/committers-by-project.html#airflow) diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt index 3fa7097614837..3ff5b51a5cb74 100644 --- a/images/breeze/output-commands-hash.txt +++ b/images/breeze/output-commands-hash.txt @@ -64,7 +64,7 @@ setup:version:be116d90a21c2afe01087f7609774e1e setup:fd391bab5277ad3aca65987a84144d51 shell:c7adf57a354ecb496ae12fc0b9eaea80 start-airflow:23df4528b3972977e58f7d29336500f7 -static-checks:5ded21248cd4f5617779f58ecf6c554c +static-checks:5b207c3dba9fbfffbfd366221b836ac8 testing:docker-compose-tests:0c810047fc66a0cfe91119e2d08b3507 testing:helm-tests:8e491da2e01ebd815322c37562059d77 testing:integration-tests:f2a400ac9f722b9c279abbd4e3313e71 diff --git a/images/breeze/output_static-checks.svg b/images/breeze/output_static-checks.svg index 9c029a855df92..229596469c061 100644 --- a/images/breeze/output_static-checks.svg +++ b/images/breeze/output_static-checks.svg @@ -1,4 +1,4 @@ - + @@ -217,59 +217,59 @@ -Usage: breeze [OPTIONS] COMMAND [ARGS]... +Usage: breeze [OPTIONS] COMMAND [ARGS]... -╭─ Basic flags ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ -│--python-pPython major/minor version used in Airflow image for images.(>3.8< | 3.9 | 3.10 | 3.11)│ -│[default: 3.8]                                              │ -│--backend-bDatabase backend to use.(>sqlite< | mysql | postgres | mssql)[default: sqlite]│ -│--postgres-version-PVersion of Postgres used.(>11< | 12 | 13 | 14 | 15)[default: 11]│ -│--mysql-version-MVersion of MySQL used.(>5.7< | 8.0 | 8.1)[default: 5.7]│ -│--mssql-version-SVersion of MsSQL used.(>2017-latest< | 2019-latest)[default: 2017-latest]│ -│--integrationIntegration(s) to enable when running (can be more than one).                            │ -│(all | all-testable | cassandra | celery | kafka | kerberos | mongo | otel | pinot |     │ -│statsd | statsd | trino)                                                                 │ -│--forward-credentials-fForward local credentials to container when running.│ -│--db-reset-dReset DB when entering the container.│ -│--max-timeMaximum time that the command should take - if it takes longer, the command will fail.│ -│(INTEGER RANGE)                                                                       │ -│--github-repository-gGitHub repository used to pull, push run images.(TEXT)[default: apache/airflow]│ -│--builderBuildx builder used to perform `docker buildx build` commands.(TEXT)│ -│[default: autodetect]                                         │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Common options ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ -│--verbose-vPrint verbose information about performed steps.│ -│--dry-run-DIf dry-run is set, commands are only printed, not executed.│ -│--answer-aForce answer to questions.(y | n | q | yes | no | quit)│ -│--help-hShow this message and exit.│ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Developer commands ─────────────────────────────────────────────────────────────────────────────────────────────────╮ -│start-airflow     Enter breeze environment and starts all Airflow components in the tmux session. Compile assets  │ -│if contents of www directory changed.                                                           │ -│static-checks     Run static checks.                                                                              │ -│build-docs        Build documents.                                                                                │ -│down              Stop running breeze environment.                                                                │ -│shell             Enter breeze environment. this is the default command use when no other is selected.            │ -│exec              Joins the interactive shell of running airflow container.                                       │ -│compile-www-assetsCompiles www assets.                                                                            │ -│cleanup           Cleans the cache of parameters, docker cache and optionally built CI/PROD images.               │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Testing commands ───────────────────────────────────────────────────────────────────────────────────────────────────╮ -│testing        Tools that developers can use to run tests                                                         │ -│k8s            Tools that developers use to run Kubernetes tests                                                  │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Image commands ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ -│ci-image         Tools that developers can use to manually manage CI images                                       │ -│prod-image       Tools that developers can use to manually manage PROD images                                     │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Release management commands ────────────────────────────────────────────────────────────────────────────────────────╮ -│release-management     Tools that release managers can use to prepare and manage Airflow releases                 │ -│sbom                   Tools that release managers can use to prepare sbom information                            │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Other commands ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ -│setup     Tools that developers can use to configure Breeze                                                       │ -│ci        Tools that CI workflows use to cleanup/manage CI environment                                            │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Basic flags ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│--python-pPython major/minor version used in Airflow image for images.(>3.8< | 3.9 | 3.10 | 3.11)│ +│[default: 3.8]                                              │ +│--backend-bDatabase backend to use.(>sqlite< | mysql | postgres | mssql)[default: sqlite]│ +│--postgres-version-PVersion of Postgres used.(>11< | 12 | 13 | 14 | 15)[default: 11]│ +│--mysql-version-MVersion of MySQL used.(>5.7< | 8.0 | 8.1)[default: 5.7]│ +│--mssql-version-SVersion of MsSQL used.(>2017-latest< | 2019-latest)[default: 2017-latest]│ +│--integrationIntegration(s) to enable when running (can be more than one).                            │ +│(all | all-testable | cassandra | celery | kafka | kerberos | mongo | otel | pinot |     │ +│statsd | statsd | trino)                                                                 │ +│--forward-credentials-fForward local credentials to container when running.│ +│--db-reset-dReset DB when entering the container.│ +│--max-timeMaximum time that the command should take - if it takes longer, the command will fail.│ +│(INTEGER RANGE)                                                                       │ +│--github-repository-gGitHub repository used to pull, push run images.(TEXT)[default: apache/airflow]│ +│--builderBuildx builder used to perform `docker buildx build` commands.(TEXT)│ +│[default: autodetect]                                         │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Common options ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│--verbose-vPrint verbose information about performed steps.│ +│--dry-run-DIf dry-run is set, commands are only printed, not executed.│ +│--answer-aForce answer to questions.(y | n | q | yes | no | quit)│ +│--help-hShow this message and exit.│ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Developer commands ─────────────────────────────────────────────────────────────────────────────────────────────────╮ +│start-airflow     Enter breeze environment and starts all Airflow components in the tmux session. Compile assets  │ +│if contents of www directory changed.                                                           │ +│static-checks     Run static checks.                                                                              │ +│build-docs        Build documents.                                                                                │ +│down              Stop running breeze environment.                                                                │ +│shell             Enter breeze environment. this is the default command use when no other is selected.            │ +│exec              Joins the interactive shell of running airflow container.                                       │ +│compile-www-assetsCompiles www assets.                                                                            │ +│cleanup           Cleans the cache of parameters, docker cache and optionally built CI/PROD images.               │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Testing commands ───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│testing        Tools that developers can use to run tests                                                         │ +│k8s            Tools that developers use to run Kubernetes tests                                                  │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Image commands ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ci-image         Tools that developers can use to manually manage CI images                                       │ +│prod-image       Tools that developers can use to manually manage PROD images                                     │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Release management commands ────────────────────────────────────────────────────────────────────────────────────────╮ +│release-management     Tools that release managers can use to prepare and manage Airflow releases                 │ +│sbom                   Tools that release managers can use to prepare sbom information                            │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Other commands ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│setup     Tools that developers can use to configure Breeze                                                       │ +│ci        Tools that CI workflows use to cleanup/manage CI environment                                            │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/images/breeze/output_static-checks.svg b/images/breeze/output_static-checks.svg index 812eec53fd760..aff980e81db24 100644 --- a/images/breeze/output_static-checks.svg +++ b/images/breeze/output_static-checks.svg @@ -35,8 +35,8 @@ .breeze-static-checks-r1 { fill: #c5c8c6;font-weight: bold } .breeze-static-checks-r2 { fill: #c5c8c6 } .breeze-static-checks-r3 { fill: #d0b344;font-weight: bold } -.breeze-static-checks-r4 { fill: #868887 } -.breeze-static-checks-r5 { fill: #68a0b3;font-weight: bold } +.breeze-static-checks-r4 { fill: #68a0b3;font-weight: bold } +.breeze-static-checks-r5 { fill: #868887 } .breeze-static-checks-r6 { fill: #98a84b;font-weight: bold } .breeze-static-checks-r7 { fill: #8d7b39 } @@ -286,80 +286,82 @@ -Usage: breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]... +Usage: breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]... Run static checks. -╭─ Pre-commit flags ───────────────────────────────────────────────────────────────────────────────────────────────────╮ -│--type-tType(s) of the static checks to run.                                             │ -│(all | black | blacken-docs | check-aiobotocore-optional |                       │ -│check-airflow-k8s-not-used | check-airflow-provider-compatibility |              │ -│check-apache-license-rat | check-base-operator-partial-arguments |               │ -│check-base-operator-usage | check-boring-cyborg-configuration |                  │ -│check-breeze-top-dependencies-limited | check-builtin-literals |                 │ -│check-changelog-has-no-duplicates | check-cncf-k8s-only-for-executors |          │ -│check-core-deprecation-classes | check-daysago-import-from-utils |               │ -│check-decorated-operator-implements-custom-name | check-deferrable-default-value │ -│| check-docstring-param-types | check-example-dags-urls |                        │ -│check-executables-have-shebangs | check-extra-packages-references |              │ -│check-extras-order | check-for-inclusive-language |                              │ -│check-google-re2-as-dependency | check-hooks-apply |                             │ -│check-incorrect-use-of-LoggingMixin | check-init-decorator-arguments |           │ -│check-lazy-logging | check-links-to-example-dags-do-not-use-hardcoded-versions | │ -│check-merge-conflict | check-newsfragments-are-valid |                           │ -│check-no-airflow-deprecation-in-providers | check-no-providers-in-core-examples |│ -│check-no-relative-imports | check-only-new-session-with-provide-session |        │ -│check-persist-credentials-disabled-in-github-workflows |                         │ -│check-pre-commit-information-consistent | check-provide-create-sessions-imports |│ -│check-provider-yaml-valid | check-providers-init-file-missing |                  │ -│check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |        │ -│check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order | │ -│check-start-date-not-used-in-defaults | check-system-tests-present |             │ -│check-system-tests-tocs | check-tests-unittest-testcase |                        │ -│check-urlparse-usage-in-code | check-usage-of-re2-over-re | check-xml | codespell│ -│| compile-www-assets | compile-www-assets-dev |                                  │ -│create-missing-init-py-files-tests | debug-statements | detect-private-key |     │ -│doctoc | end-of-file-fixer | fix-encoding-pragma | flynt | identity |            │ -│insert-license | lint-chart-schema | lint-css | lint-dockerfile | lint-helm-chart│ -│| lint-json-schema | lint-markdown | lint-openapi | mixed-line-ending | mypy-core│ -│| mypy-dev | mypy-docs | mypy-providers | pretty-format-json | python-no-log-warn│ -│| replace-bad-characters | rst-backticks | ruff | shellcheck |                   │ -│trailing-whitespace | ts-compile-format-lint-www | update-black-version |        │ -│update-breeze-cmd-output | update-breeze-readme-config-hash |                    │ -│update-common-sql-api-stubs | update-er-diagram | update-extras |                │ -│update-in-the-wild-to-be-sorted | update-inlined-dockerfile-scripts |            │ -│update-installed-providers-to-be-sorted | update-local-yml-file |                │ -│update-migration-references | update-providers-dependencies |                    │ -│update-spelling-wordlist-to-be-sorted | update-supported-versions |              │ -│update-vendored-in-k8s-json-schema | update-version | yamllint)                  │ -│--show-diff-on-failure-sShow diff for files modified by the checks.│ -│--initialize-environmentInitialize environment before running checks.│ -│--max-initialization-attemptsMaximum number of attempts to initialize environment before giving up.│ -│(INTEGER RANGE)                                                       │ -│[default: 3; 1<=x<=10]                                                │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Selecting files to run the checks on ───────────────────────────────────────────────────────────────────────────────╮ -│--file-fList of files to run the checks on.(PATH)│ -│--all-files-aRun checks on all files.│ -│--commit-ref-rRun checks for this commit reference only (can be any git commit-ish reference). Mutually    │ -│exclusive with --last-commit.                                                                │ -│(TEXT)                                                                                       │ -│--last-commit-cRun checks for all files in last commit. Mutually exclusive with --commit-ref.│ -│--only-my-changes-mRun checks for commits belonging to my PR only: for all commits between merge base to `main` │ -│branch and HEAD of your branch.                                                              │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Building image before running checks ───────────────────────────────────────────────────────────────────────────────╮ -│--skip-image-checkSkip checking if the CI image is up to date. Useful if you run non-image checks only│ -│--force-buildForce image build no matter if it is determined as needed.│ -│--image-tagTag of the image which is used to run the image (implies --mount-sources=skip).(TEXT)│ -│[default: latest]                                                              │ -│--github-repository-gGitHub repository used to pull, push run images.(TEXT)[default: apache/airflow]│ -│--builderBuildx builder used to perform `docker buildx build` commands.(TEXT)[default: autodetect]│ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Common options ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ -│--verbose-vPrint verbose information about performed steps.│ -│--dry-run-DIf dry-run is set, commands are only printed, not executed.│ -│--help-hShow this message and exit.│ -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ + +╭─ Pre-commit flags ───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│--type-tType(s) of the static checks to run.                                             │ +│(all | black | blacken-docs | check-aiobotocore-optional |                       │ +│check-airflow-k8s-not-used | check-airflow-provider-compatibility |              │ +│check-apache-license-rat | check-base-operator-partial-arguments |               │ +│check-base-operator-usage | check-boring-cyborg-configuration |                  │ +│check-breeze-top-dependencies-limited | check-builtin-literals |                 │ +│check-changelog-has-no-duplicates | check-cncf-k8s-only-for-executors |          │ +│check-core-deprecation-classes | check-daysago-import-from-utils |               │ +│check-decorated-operator-implements-custom-name | check-deferrable-default-value │ +│| check-docstring-param-types | check-example-dags-urls |                        │ +│check-executables-have-shebangs | check-extra-packages-references |              │ +│check-extras-order | check-for-inclusive-language |                              │ +│check-google-re2-as-dependency | check-hooks-apply |                             │ +│check-incorrect-use-of-LoggingMixin | check-init-decorator-arguments |           │ +│check-lazy-logging | check-links-to-example-dags-do-not-use-hardcoded-versions | │ +│check-merge-conflict | check-newsfragments-are-valid |                           │ +│check-no-airflow-deprecation-in-providers | check-no-providers-in-core-examples |│ +│check-no-relative-imports | check-only-new-session-with-provide-session |        │ +│check-persist-credentials-disabled-in-github-workflows |                         │ +│check-pre-commit-information-consistent | check-provide-create-sessions-imports |│ +│check-provider-yaml-valid | check-providers-init-file-missing |                  │ +│check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |        │ +│check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order | │ +│check-start-date-not-used-in-defaults | check-system-tests-present |             │ +│check-system-tests-tocs | check-tests-unittest-testcase |                        │ +│check-urlparse-usage-in-code | check-usage-of-re2-over-re | check-xml | codespell│ +│| compile-www-assets | compile-www-assets-dev |                                  │ +│create-missing-init-py-files-tests | debug-statements | detect-private-key |     │ +│doctoc | end-of-file-fixer | fix-encoding-pragma | flynt | generate-pypi-readme |│ +│identity | insert-license | lint-chart-schema | lint-css | lint-dockerfile |     │ +│lint-helm-chart | lint-json-schema | lint-markdown | lint-openapi |              │ +│mixed-line-ending | mypy-core | mypy-dev | mypy-docs | mypy-providers |          │ +│pretty-format-json | python-no-log-warn | replace-bad-characters | rst-backticks │ +│| ruff | shellcheck | trailing-whitespace | ts-compile-format-lint-www |         │ +│update-black-version | update-breeze-cmd-output |                                │ +│update-breeze-readme-config-hash | update-common-sql-api-stubs |                 │ +│update-er-diagram | update-extras | update-in-the-wild-to-be-sorted |            │ +│update-inlined-dockerfile-scripts | update-installed-providers-to-be-sorted |    │ +│update-local-yml-file | update-migration-references |                            │ +│update-providers-dependencies | update-spelling-wordlist-to-be-sorted |          │ +│update-supported-versions | update-vendored-in-k8s-json-schema | update-version |│ +│yamllint)                                                                        │ +│--show-diff-on-failure-sShow diff for files modified by the checks.│ +│--initialize-environmentInitialize environment before running checks.│ +│--max-initialization-attemptsMaximum number of attempts to initialize environment before giving up.│ +│(INTEGER RANGE)                                                       │ +│[default: 3; 1<=x<=10]                                                │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Selecting files to run the checks on ───────────────────────────────────────────────────────────────────────────────╮ +│--file-fList of files to run the checks on.(PATH)│ +│--all-files-aRun checks on all files.│ +│--commit-ref-rRun checks for this commit reference only (can be any git commit-ish reference). Mutually    │ +│exclusive with --last-commit.                                                                │ +│(TEXT)                                                                                       │ +│--last-commit-cRun checks for all files in last commit. Mutually exclusive with --commit-ref.│ +│--only-my-changes-mRun checks for commits belonging to my PR only: for all commits between merge base to `main` │ +│branch and HEAD of your branch.                                                              │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Building image before running checks ───────────────────────────────────────────────────────────────────────────────╮ +│--skip-image-checkSkip checking if the CI image is up to date. Useful if you run non-image checks only│ +│--force-buildForce image build no matter if it is determined as needed.│ +│--image-tagTag of the image which is used to run the image (implies --mount-sources=skip).(TEXT)│ +│[default: latest]                                                              │ +│--github-repository-gGitHub repository used to pull, push run images.(TEXT)[default: apache/airflow]│ +│--builderBuildx builder used to perform `docker buildx build` commands.(TEXT)[default: autodetect]│ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Common options ─────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│--verbose-vPrint verbose information about performed steps.│ +│--dry-run-DIf dry-run is set, commands are only printed, not executed.│ +│--help-hShow this message and exit.│ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯