SIGN IN SIGN UP
apache / airflow UNCLAIMED

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows

44796 0 1 Python
# 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.
---
default_stages: [commit, push]
default_language_version:
# force all unspecified python hooks to run python3
python: python3
minimum_pre_commit_version: "1.20.0"
repos:
- repo: meta
hooks:
- id: identity
- id: check-hooks-apply
- repo: https://github.com/Lucas-C/pre-commit-hooks
2021-04-29 09:08:38 +02:00
rev: v1.1.10
hooks:
- id: forbid-tabs
exclude: ^docs/Makefile$|^clients/gen/go.sh|\.gitmodules$|^airflow/_vendor/
- id: insert-license
name: Add license for all SQL files
files: \.sql$
exclude: ^\.github/.*$|^airflow/_vendor/
args:
- --comment-style
- "/*||*/"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all other files
exclude: ^\.github/.*$|^airflow/_vendor/
args:
- --comment-style
- "|#|"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
files: >
2020-11-25 00:58:01 +01:00
\.properties$|\.cfg$|\.conf$|\.ini$|\.ldif$|\.readthedocs$|\.service$|\.tf$|Dockerfile.*$
- id: insert-license
name: Add license for all rst files
exclude: ^\.github/.*$|^airflow/_vendor/
args:
- --comment-style
- "||"
- --license-filepath
- license-templates/LICENSE.rst
- --fuzzy-match-generates-todo
files: \.rst$
- id: insert-license
name: Add license for all JS/TS/TSX/CSS/PUML files
files: \.(js|ts|tsx|css|puml)$
exclude: ^\.github/.*$|^airflow/_vendor/
args:
- --comment-style
- "/*!| *| */"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all JINJA template files
files: "^airflow/www/templates/.*\\.html$|^docs/templates/.*\\.html$.*\\.jinja2"
exclude: ^\.github/.*$^airflow/_vendor/
args:
- --comment-style
- "{#||#}"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all shell files
exclude: ^\.github/.*$|^airflow/_vendor/
files: ^breeze$|^breeze-complete$|\.sh$|\.bash$|\.bats$
args:
- --comment-style
- "|#|"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all Python files
exclude: ^\.github/.*$|^airflow/_vendor/
types: [python]
args:
- --comment-style
- "|#|"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all XML files
exclude: ^\.github/.*$|^airflow/_vendor/
files: \.xml$
args:
- --comment-style
- "<!--||-->"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all YAML files
exclude: ^\.github/.*$|^airflow/_vendor/
types: [yaml]
files: \.yml$|\.yaml$
args:
- --comment-style
- "|#|"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all md files
files: \.md$
exclude: ^\.github/.*$|PROVIDER_CHANGES.*\.md|^airflow/_vendor/
args:
- --comment-style
- "<!--|| -->"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
- id: insert-license
name: Add license for all mermaid files
args:
- --comment-style
- "|%%|"
- --license-filepath
- license-templates/LICENSE.txt
- --fuzzy-match-generates-todo
files: \.mermaid$
exclude: ^airflow/_vendor/
- repo: https://github.com/thlorenz/doctoc.git
rev: v2.0.1
hooks:
- id: doctoc
name: Add TOC for md files
files:
^README\.md$|^CONTRIBUTING\.md$|^UPDATING.*\.md$|^chart/UPDATING.*\.md$|^dev/.*\.md$|^dev/.*\.rst$
exclude: ^airflow/_vendor/
args:
- "--maxlevel"
- "2"
- repo: https://github.com/psf/black
rev: 21.9b0
hooks:
- id: black
args: [--config=./pyproject.toml]
exclude: ^airflow/_vendor/
- repo: https://github.com/asottile/blacken-docs
rev: v1.11.0
hooks:
- id: blacken-docs
alias: black
additional_dependencies: [black==21.9b0]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: check-merge-conflict
- id: debug-statements
- id: check-builtin-literals
exclude: ^airflow/_vendor/
- id: detect-private-key
- id: end-of-file-fixer
exclude: ^airflow/_vendor/
- id: mixed-line-ending
exclude: ^airflow/_vendor/
- id: check-executables-have-shebangs
exclude: ^airflow/_vendor/
- id: check-xml
exclude: ^airflow/_vendor/
- id: trailing-whitespace
exclude: ^airflow/_vendor/
- id: fix-encoding-pragma
exclude: ^airflow/_vendor/
args:
- --remove
- id: pretty-format-json
args:
- --autofix
- --no-sort-keys
- --indent
- "4"
files: ^chart/values\.schema\.json$|^chart/values_schema\.schema\.json$
pass_filenames: true
- repo: https://github.com/asottile/pyupgrade
rev: v2.29.0
hooks:
- id: pyupgrade
args: ["--py36-plus"]
exclude: ^airflow/_vendor/
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.9.0
hooks:
- id: rst-backticks
exclude: ^airflow/_vendor/
- id: python-no-log-warn
exclude: ^airflow/_vendor/
- repo: https://github.com/adrienverge/yamllint
rev: v1.26.3
hooks:
- id: yamllint
name: Check YAML files with yamllint
entry: yamllint -c yamllint-config.yml --strict
types: [yaml]
AIP-40: Add Deferrable "Async" Tasks (#15389) This is the implementation of AIP-40, Deferrable "Async" Tasks (https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177050929). The main changes are: - A new concept of a Trigger is introduced, as a small piece of asyncio code that can fire off events - There is a BaseTrigger and some time-related triggers under a new `airflow.triggers` package - There is a new Trigger database model and associated `trigger` table - `Async` versions of the various date/time sensors have been added which defer rather than poke. - There is a new persistent process (Job) called `triggerer` - It only runs on Python 3.7+ - It handles polling the database for which triggers need running, running them, and re-scheduling task instances whose triggers have fired events - If a trigger throws an exception or exits without firing an event, it logs why and marks dependent task instances as failed - It monitors the asyncio event loop with a watchdog task and alerts the user if anything is overrunning (i.e. not using `await`) and blocking the loop. - It is designed to run in parallel with itself in a highly-available manner, and also has built-in consistent-hash based partitioning (sharding) support - Task Instances have a new `deferred` state which indicates they are waiting on a trigger to run - The trigger they are waiting for is stored in a new `trigger_id` column, and a failure timeout is in a `trigger_timeout` column - The scheduler takes care of timing out task instances into the `failed` state - Deferral is triggered by raising the `TaskDeferred` exception, or calling `self.defer` on the TaskInstance which does the same thing. - A `next_method` and `next_kwargs` column are added to specify what a task instance/operator's execution entry point should be if it's not the default of `execute()`. They are currently only used by deferral, but have been written to be independent in case they are useful elsewhere. - Two new dependencies are added - `jump-consistent-hash` is a small MIT licensed library that implements a fast, consistent hash algorithm - `pytest-asyncio` is an Apache 2 licensed library that enables async tests to be written easily Changes that are deliberately not in here and will be in a future PR for them specifically: - UI warning when the triggerer is not running and you have deferred task instances - Updating Breeze to include `triggerer` in what it runs - Updating the Docker Compose files to include `triggerer` - Updating the Helm Chart to include `triggerer` - Some way of detecting/preventing DB access within triggers
2021-08-11 13:33:38 -06:00
exclude: ^.*init_git_sync\.template\.yaml$|^.*airflow\.template\.yaml$|^chart/(?:templates|files)/.*\.yaml$|openapi/.*\.yaml|pre-commit-config|^airflow/_vendor/
- repo: https://github.com/timothycrosley/isort
rev: 5.9.3
hooks:
- id: isort
name: Run isort to sort imports in Python files
files: \.py$
# To keep consistent with the global isort skip config defined in setup.cfg
exclude: ^build/.*$|^.tox/.*$|^venv/.*$|^airflow/_vendor/
2020-06-21 09:34:41 +01:00
- repo: https://github.com/pycqa/pydocstyle
rev: 6.1.1
2020-06-21 09:34:41 +01:00
hooks:
- id: pydocstyle
name: Run pydocstyle
2020-06-21 09:34:41 +01:00
args:
- --convention=pep257
- --add-ignore=D100,D102,D103,D104,D105,D107,D205,D400,D401
exclude: |
(?x)
^tests/.*\.py$|
^scripts/.*\.py$|
^dev|
^provider_packages|
^docker_tests|
^kubernetes_tests|
.*example_dags/.*|
^chart/.*\.py$|
^airflow/_vendor/
additional_dependencies: ['toml']
- repo: https://github.com/asottile/yesqa
rev: v1.2.3
hooks:
- id: yesqa
exclude: |
(?x)
^airflow/_vendor/
additional_dependencies: ['flake8>=4.0.1']
- repo: https://github.com/ikamensh/flynt
rev: '0.69'
hooks:
- id: flynt
exclude: |
(?x)
^airflow/_vendor/
2021-10-17 18:34:06 +02:00
args:
# If flynt detects too long text it ignores it. So we set a very large limit to make it easy
# to split the text by hand. Too long lines are detected by flake8 (below),
# so the user is informed to take action.
- --line-length
- '99999'
- repo: https://github.com/codespell-project/codespell
rev: v2.1.0
hooks:
- id: codespell
name: Run codespell to check for common misspellings in files
2021-10-30 15:44:20 +05:30
entry: bash -c 'echo "If you think that this failure is an error, consider adding the word(s)
to the codespell dictionary at docs/spelling_wordlist.txt.
The word(s) should be in lowercase." && exec codespell "$@"' --
language: python
types: [text]
exclude: ^airflow/_vendor/|^CHANGELOG.txt|^airflow/www/static/css/material-icons.css
args:
- --ignore-words=docs/spelling_wordlist.txt
- --skip=docs/*/commits.rst,airflow/providers/*/*.rst,*.lock,INTHEWILD.md,*.min.js,docs/apache-airflow/pipeline_example.csv
- repo: local
hooks:
Add OpenAPI specification (II) (#8721) * Add OpenAPI spec (#7549) * Fix typo in name of pre-commit hook * Chaange type for DAGID, DAGRunID, TaskID * Fix typo in summary - POST /pools * Fix typo in description - FileToken parameter * Fix typo - singular/plural form - variables * Make EventLog endpoints read-only * Use ExcutionDate in DagRuns endpoints * Use custom action to control task instances * Typo in DELETE Task instance * Remove unused schema - DagStructureCollection * Fix typo - singular/plural form - import errors * Add endpoint - POST /dagRuns * Remove job_id We do not have endpoints to download jobs, because this is an implementation detail, so this field has big no value. * Add filters to GET /taskInstances * Fix typo - upadtePool => updatePool * Rename "Create a DAG Run" to "Trigger a DAG Run" * Use Pool name as a parameter * Add filter to GET /dagRuns * Remove invalid note ion start_date field * Uss POST instead of PATCH for custom action * Remove DELETE /taskInstances endpooint * Rename Xcom Value to xcom Entry * Fix typo in XCCOM Entry endpoint * Change operationID: patchConnection => updaateConnection * Make execution_date optionall in DAGRun This field can be filled with the current date when creating the DAG Run * Unify connection ID * Use URL with HTTPS and without www. * Fix typo - at database => in database * Fix typo = Raange -> Raange * Fix typo - the specific DAG => a DAG * Fix typo - getXComVEntry => getXComVEntry * Unify collection names - xcomEntries * Move TaskInstance resource under DagRun resource * Fix typo - change tag - TaskInstance => TaskInstance Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com> * Use path paramaters for /variables/lookup/ endpoint * Use consistent names for IDs * Use new style for filter parameters * Remove unused path parameter * Use ~ as a wildcard charaacter * Add batch endpoints for TaskInstance and DagRuns * Fix typo - response in trigger dag endpoint * Fix typo - Qqueue => Queue * Set dry_run = True in ClearTaskInstance * Mark all fieldss (expcet state) of DagRun as read-only * Use __type as a discriminator * Fix typo - "The Import Error ID." => "The Event Log ID." * Fix typo - Self referential in EventLogCollection * Rename fieldss - dttm => when * remove fields - pool_id * Fix typo - change request body in PATCH /pools/{pool_name} * Use DAG Run ID as a primary identifier * Fix typo - Change type of query to string * Unify fields names in collections * Use variable key as a primary id * Move collection to /variables * Mark passord as a write only * Fix typo - updaateConnection => updateConnection * Change is_paused/is_subdag to boolean * Fix typo - clearTaskInstaance => clearTaskInstance * Fix typo - DAAG => DAG * Fix typo - many => multiple * Fix typo - missing "a" * Fix typo - variable by id => variable by key * Fix typo - updateXComEntries => updateXComEntry * Fix typo - missing "a" * Use dag_run_id as a primary ID * Fix typo - objectss => objects, DAG IDS => DAG IDs * Allows create DAG Run with custom conf/execution_date/dag_run_id * Add new trigger rule, fix typo in dag run state * Add request body to POST/PATCH /dags/{dag_id} * Rename collection fields - dag_model => dags * Fix typo - /clearTaskInstanaces -> /clearTaskInstances * Improve wording - wildcard * Returns owners as a array * Return only references in clear task instances * Remove support for application/x-www-form-urlencoded * fixup! Use __type as a discriminator * Add file_token fields * Move description of variable collections * Return SUB DAG in DAG structure * Fix typo - sucess => sucess, Apache Foundation => Apache Software Foundation, Airfow => Apache Airflow * Improve description of get logs endpoint * Fix typo - Get all XCom entry => Get all XCom entries * Add crossreference between /dags/{dag_id}/structure and /dags/{dag_id} * Remove all form-urllencoded request bodies * Rename parameter - NoChunking => FullContent * Improve description of batch endpoints * Remove request body for GET endpoint * Use allOf insteaad of oneOf * Rename key => xcom_key * Use lowercase letters in query string parameter - Queue -> queue * Change type of conf to object * Change allOf into oneOf for ScheduleInterval Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com>
2020-06-01 21:46:15 +02:00
- id: lint-openapi
name: Lint OpenAPI using spectral
Add OpenAPI specification (II) (#8721) * Add OpenAPI spec (#7549) * Fix typo in name of pre-commit hook * Chaange type for DAGID, DAGRunID, TaskID * Fix typo in summary - POST /pools * Fix typo in description - FileToken parameter * Fix typo - singular/plural form - variables * Make EventLog endpoints read-only * Use ExcutionDate in DagRuns endpoints * Use custom action to control task instances * Typo in DELETE Task instance * Remove unused schema - DagStructureCollection * Fix typo - singular/plural form - import errors * Add endpoint - POST /dagRuns * Remove job_id We do not have endpoints to download jobs, because this is an implementation detail, so this field has big no value. * Add filters to GET /taskInstances * Fix typo - upadtePool => updatePool * Rename "Create a DAG Run" to "Trigger a DAG Run" * Use Pool name as a parameter * Add filter to GET /dagRuns * Remove invalid note ion start_date field * Uss POST instead of PATCH for custom action * Remove DELETE /taskInstances endpooint * Rename Xcom Value to xcom Entry * Fix typo in XCCOM Entry endpoint * Change operationID: patchConnection => updaateConnection * Make execution_date optionall in DAGRun This field can be filled with the current date when creating the DAG Run * Unify connection ID * Use URL with HTTPS and without www. * Fix typo - at database => in database * Fix typo = Raange -> Raange * Fix typo - the specific DAG => a DAG * Fix typo - getXComVEntry => getXComVEntry * Unify collection names - xcomEntries * Move TaskInstance resource under DagRun resource * Fix typo - change tag - TaskInstance => TaskInstance Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com> * Use path paramaters for /variables/lookup/ endpoint * Use consistent names for IDs * Use new style for filter parameters * Remove unused path parameter * Use ~ as a wildcard charaacter * Add batch endpoints for TaskInstance and DagRuns * Fix typo - response in trigger dag endpoint * Fix typo - Qqueue => Queue * Set dry_run = True in ClearTaskInstance * Mark all fieldss (expcet state) of DagRun as read-only * Use __type as a discriminator * Fix typo - "The Import Error ID." => "The Event Log ID." * Fix typo - Self referential in EventLogCollection * Rename fieldss - dttm => when * remove fields - pool_id * Fix typo - change request body in PATCH /pools/{pool_name} * Use DAG Run ID as a primary identifier * Fix typo - Change type of query to string * Unify fields names in collections * Use variable key as a primary id * Move collection to /variables * Mark passord as a write only * Fix typo - updaateConnection => updateConnection * Change is_paused/is_subdag to boolean * Fix typo - clearTaskInstaance => clearTaskInstance * Fix typo - DAAG => DAG * Fix typo - many => multiple * Fix typo - missing "a" * Fix typo - variable by id => variable by key * Fix typo - updateXComEntries => updateXComEntry * Fix typo - missing "a" * Use dag_run_id as a primary ID * Fix typo - objectss => objects, DAG IDS => DAG IDs * Allows create DAG Run with custom conf/execution_date/dag_run_id * Add new trigger rule, fix typo in dag run state * Add request body to POST/PATCH /dags/{dag_id} * Rename collection fields - dag_model => dags * Fix typo - /clearTaskInstanaces -> /clearTaskInstances * Improve wording - wildcard * Returns owners as a array * Return only references in clear task instances * Remove support for application/x-www-form-urlencoded * fixup! Use __type as a discriminator * Add file_token fields * Move description of variable collections * Return SUB DAG in DAG structure * Fix typo - sucess => sucess, Apache Foundation => Apache Software Foundation, Airfow => Apache Airflow * Improve description of get logs endpoint * Fix typo - Get all XCom entry => Get all XCom entries * Add crossreference between /dags/{dag_id}/structure and /dags/{dag_id} * Remove all form-urllencoded request bodies * Rename parameter - NoChunking => FullContent * Improve description of batch endpoints * Remove request body for GET endpoint * Use allOf insteaad of oneOf * Rename key => xcom_key * Use lowercase letters in query string parameter - Queue -> queue * Change type of conf to object * Change allOf into oneOf for ScheduleInterval Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com>
2020-06-01 21:46:15 +02:00
language: docker_image
entry: stoplight/spectral lint -r ./scripts/ci/spectral_rules/connexion.yml
files: ^airflow/api_connexion/openapi/
Add OpenAPI specification (II) (#8721) * Add OpenAPI spec (#7549) * Fix typo in name of pre-commit hook * Chaange type for DAGID, DAGRunID, TaskID * Fix typo in summary - POST /pools * Fix typo in description - FileToken parameter * Fix typo - singular/plural form - variables * Make EventLog endpoints read-only * Use ExcutionDate in DagRuns endpoints * Use custom action to control task instances * Typo in DELETE Task instance * Remove unused schema - DagStructureCollection * Fix typo - singular/plural form - import errors * Add endpoint - POST /dagRuns * Remove job_id We do not have endpoints to download jobs, because this is an implementation detail, so this field has big no value. * Add filters to GET /taskInstances * Fix typo - upadtePool => updatePool * Rename "Create a DAG Run" to "Trigger a DAG Run" * Use Pool name as a parameter * Add filter to GET /dagRuns * Remove invalid note ion start_date field * Uss POST instead of PATCH for custom action * Remove DELETE /taskInstances endpooint * Rename Xcom Value to xcom Entry * Fix typo in XCCOM Entry endpoint * Change operationID: patchConnection => updaateConnection * Make execution_date optionall in DAGRun This field can be filled with the current date when creating the DAG Run * Unify connection ID * Use URL with HTTPS and without www. * Fix typo - at database => in database * Fix typo = Raange -> Raange * Fix typo - the specific DAG => a DAG * Fix typo - getXComVEntry => getXComVEntry * Unify collection names - xcomEntries * Move TaskInstance resource under DagRun resource * Fix typo - change tag - TaskInstance => TaskInstance Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com> * Use path paramaters for /variables/lookup/ endpoint * Use consistent names for IDs * Use new style for filter parameters * Remove unused path parameter * Use ~ as a wildcard charaacter * Add batch endpoints for TaskInstance and DagRuns * Fix typo - response in trigger dag endpoint * Fix typo - Qqueue => Queue * Set dry_run = True in ClearTaskInstance * Mark all fieldss (expcet state) of DagRun as read-only * Use __type as a discriminator * Fix typo - "The Import Error ID." => "The Event Log ID." * Fix typo - Self referential in EventLogCollection * Rename fieldss - dttm => when * remove fields - pool_id * Fix typo - change request body in PATCH /pools/{pool_name} * Use DAG Run ID as a primary identifier * Fix typo - Change type of query to string * Unify fields names in collections * Use variable key as a primary id * Move collection to /variables * Mark passord as a write only * Fix typo - updaateConnection => updateConnection * Change is_paused/is_subdag to boolean * Fix typo - clearTaskInstaance => clearTaskInstance * Fix typo - DAAG => DAG * Fix typo - many => multiple * Fix typo - missing "a" * Fix typo - variable by id => variable by key * Fix typo - updateXComEntries => updateXComEntry * Fix typo - missing "a" * Use dag_run_id as a primary ID * Fix typo - objectss => objects, DAG IDS => DAG IDs * Allows create DAG Run with custom conf/execution_date/dag_run_id * Add new trigger rule, fix typo in dag run state * Add request body to POST/PATCH /dags/{dag_id} * Rename collection fields - dag_model => dags * Fix typo - /clearTaskInstanaces -> /clearTaskInstances * Improve wording - wildcard * Returns owners as a array * Return only references in clear task instances * Remove support for application/x-www-form-urlencoded * fixup! Use __type as a discriminator * Add file_token fields * Move description of variable collections * Return SUB DAG in DAG structure * Fix typo - sucess => sucess, Apache Foundation => Apache Software Foundation, Airfow => Apache Airflow * Improve description of get logs endpoint * Fix typo - Get all XCom entry => Get all XCom entries * Add crossreference between /dags/{dag_id}/structure and /dags/{dag_id} * Remove all form-urllencoded request bodies * Rename parameter - NoChunking => FullContent * Improve description of batch endpoints * Remove request body for GET endpoint * Use allOf insteaad of oneOf * Rename key => xcom_key * Use lowercase letters in query string parameter - Queue -> queue * Change type of conf to object * Change allOf into oneOf for ScheduleInterval Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com>
2020-06-01 21:46:15 +02:00
- id: lint-openapi
name: Lint OpenAPI using openapi-spec-validator
entry: openapi-spec-validator --schema 3.0.0
Add OpenAPI specification (II) (#8721) * Add OpenAPI spec (#7549) * Fix typo in name of pre-commit hook * Chaange type for DAGID, DAGRunID, TaskID * Fix typo in summary - POST /pools * Fix typo in description - FileToken parameter * Fix typo - singular/plural form - variables * Make EventLog endpoints read-only * Use ExcutionDate in DagRuns endpoints * Use custom action to control task instances * Typo in DELETE Task instance * Remove unused schema - DagStructureCollection * Fix typo - singular/plural form - import errors * Add endpoint - POST /dagRuns * Remove job_id We do not have endpoints to download jobs, because this is an implementation detail, so this field has big no value. * Add filters to GET /taskInstances * Fix typo - upadtePool => updatePool * Rename "Create a DAG Run" to "Trigger a DAG Run" * Use Pool name as a parameter * Add filter to GET /dagRuns * Remove invalid note ion start_date field * Uss POST instead of PATCH for custom action * Remove DELETE /taskInstances endpooint * Rename Xcom Value to xcom Entry * Fix typo in XCCOM Entry endpoint * Change operationID: patchConnection => updaateConnection * Make execution_date optionall in DAGRun This field can be filled with the current date when creating the DAG Run * Unify connection ID * Use URL with HTTPS and without www. * Fix typo - at database => in database * Fix typo = Raange -> Raange * Fix typo - the specific DAG => a DAG * Fix typo - getXComVEntry => getXComVEntry * Unify collection names - xcomEntries * Move TaskInstance resource under DagRun resource * Fix typo - change tag - TaskInstance => TaskInstance Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com> * Use path paramaters for /variables/lookup/ endpoint * Use consistent names for IDs * Use new style for filter parameters * Remove unused path parameter * Use ~ as a wildcard charaacter * Add batch endpoints for TaskInstance and DagRuns * Fix typo - response in trigger dag endpoint * Fix typo - Qqueue => Queue * Set dry_run = True in ClearTaskInstance * Mark all fieldss (expcet state) of DagRun as read-only * Use __type as a discriminator * Fix typo - "The Import Error ID." => "The Event Log ID." * Fix typo - Self referential in EventLogCollection * Rename fieldss - dttm => when * remove fields - pool_id * Fix typo - change request body in PATCH /pools/{pool_name} * Use DAG Run ID as a primary identifier * Fix typo - Change type of query to string * Unify fields names in collections * Use variable key as a primary id * Move collection to /variables * Mark passord as a write only * Fix typo - updaateConnection => updateConnection * Change is_paused/is_subdag to boolean * Fix typo - clearTaskInstaance => clearTaskInstance * Fix typo - DAAG => DAG * Fix typo - many => multiple * Fix typo - missing "a" * Fix typo - variable by id => variable by key * Fix typo - updateXComEntries => updateXComEntry * Fix typo - missing "a" * Use dag_run_id as a primary ID * Fix typo - objectss => objects, DAG IDS => DAG IDs * Allows create DAG Run with custom conf/execution_date/dag_run_id * Add new trigger rule, fix typo in dag run state * Add request body to POST/PATCH /dags/{dag_id} * Rename collection fields - dag_model => dags * Fix typo - /clearTaskInstanaces -> /clearTaskInstances * Improve wording - wildcard * Returns owners as a array * Return only references in clear task instances * Remove support for application/x-www-form-urlencoded * fixup! Use __type as a discriminator * Add file_token fields * Move description of variable collections * Return SUB DAG in DAG structure * Fix typo - sucess => sucess, Apache Foundation => Apache Software Foundation, Airfow => Apache Airflow * Improve description of get logs endpoint * Fix typo - Get all XCom entry => Get all XCom entries * Add crossreference between /dags/{dag_id}/structure and /dags/{dag_id} * Remove all form-urllencoded request bodies * Rename parameter - NoChunking => FullContent * Improve description of batch endpoints * Remove request body for GET endpoint * Use allOf insteaad of oneOf * Rename key => xcom_key * Use lowercase letters in query string parameter - Queue -> queue * Change type of conf to object * Change allOf into oneOf for ScheduleInterval Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com>
2020-06-01 21:46:15 +02:00
language: python
additional_dependencies: ['openapi-spec-validator']
files: ^airflow/api_connexion/openapi/
- id: lint-dockerfile
name: Lint dockerfile
language: system
entry: ./scripts/ci/pre_commit/pre_commit_lint_dockerfile.sh
files: Dockerfile.*$
pass_filenames: true
require_serial: true
- id: setup-order
name: Check order of dependencies in setup.cfg and setup.py
language: python
files: ^setup\.cfg$|^setup\.py$
pass_filenames: false
entry: ./scripts/ci/pre_commit/pre_commit_check_order_setup.py
additional_dependencies: ['rich']
- id: setup-extra-packages
name: Checks setup extra packages
description: Checks if all the libraries in setup.py are listed in extra-packages-ref.rst file
language: python
files: ^setup\.py$|^docs/apache-airflow/extra-packages-ref\.rst$
pass_filenames: false
entry: ./scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py
additional_dependencies: ['rich==9.2.0']
- id: update-breeze-file
name: Update output of breeze command in BREEZE.rst
entry: ./scripts/ci/pre_commit/pre_commit_breeze_cmd_line.sh
language: system
files: ^BREEZE\.rst$|^breeze$|^breeze-complete|^Dockerfile$
pass_filenames: false
- id: update-local-yml-file
name: Update mounts in the local yml file
entry: ./scripts/ci/pre_commit/pre_commit_local_yml_mounts.sh
language: system
files: ^scripts/ci/libraries/_local_mounts\.sh$|^scripts/ci/docker_compose/local\.yml$
pass_filenames: false
- id: update-setup-cfg-file
name: Update setup.cfg file with all licenses
entry: ./scripts/ci/pre_commit/pre_commit_setup_cfg_file.sh
language: system
files: ^setup\.cfg$
pass_filenames: false
- id: build-providers-dependencies
name: Build cross-dependencies for providers packages
entry: ./scripts/ci/pre_commit/pre_commit_build_providers_dependencies.sh
language: python
files: ^airflow/providers/.*\.py$|^tests/providers/.*\.py$
pass_filenames: false
additional_dependencies: ['setuptools']
- id: update-extras
name: Update extras in documentation
entry: ./scripts/ci/pre_commit/pre_commit_insert_extras.py
language: python
files: ^setup\.py$|^INSTALL$|^CONTRIBUTING\.rst$
pass_filenames: false
- id: check-extras-order
name: Check order of extras in Dockerfile
entry: ./scripts/ci/pre_commit/pre_commit_check_order_dockerfile_extras.py
language: python
files: ^Dockerfile$
pass_filenames: false
additional_dependencies: ['rich']
- id: update-version
name: Update version to the latest version in the documentation
entry: ./scripts/ci/pre_commit/pre_commit_update_versions.py
language: python
files: ^docs
pass_filenames: false
- id: pydevd
language: pygrep
name: Check for pydevd debug statements accidentally left
entry: "pydevd.*settrace\\("
pass_filenames: true
files: \.py$
- id: dont-use-safe-filter
language: pygrep
name: Don't use safe in templates
description: the Safe filter is error-prone, use Markup() in code instead
entry: "\\|\\s*safe"
files: \.html$
pass_filenames: true
- id: no-providers-in-core-examples
language: pygrep
name: No providers imports in core example DAGs
description: The core example DAGs have no dependencies other than core Airflow
entry: "^\\s*from airflow\\.providers.*"
pass_filenames: true
files: ^airflow/example_dags/.*\.py$
- id: no-relative-imports
language: pygrep
name: No relative imports
description: Airflow style is to use absolute imports only
entry: "^\\s*from\\s+\\."
pass_filenames: true
files: \.py$
exclude: ^tests/|^airflow/_vendor/
- id: language-matters
language: pygrep
name: Check for language that we do not accept as community
description: Please use "deny_list" or "allow_list" instead.
entry: "(?i)(black|white)[_-]?list"
pass_filenames: true
exclude: >
(?x)
^airflow/www/fab_security/manager\.py$|
^airflow/providers/apache/cassandra/hooks/cassandra\.py$|
^airflow/providers/apache/hive/operators/hive_stats\.py$|
^airflow/providers/apache/hive/.*PROVIDER_CHANGES_*|
^airflow/providers/apache/hive/.*README\.md$|
^tests/providers/apache/cassandra/hooks/test_cassandra\.py$|
^docs/apache-airflow-providers-apache-cassandra/connections/cassandra\.rst$|
^docs/apache-airflow-providers-apache-hive/commits\.rst$|
git|
^CHANGELOG\.txt$
- id: capitalized-breeze
language: pygrep
name: Only capitalized Breeze used in Breeze2.
description: Please use capitalized "Breeze" in the new Breeze docs
entry: "breeze"
pass_filenames: true
files: ^dev/breeze/doc
- id: base-operator
language: pygrep
name: Check BaseOperator[Link] core imports
description: Make sure BaseOperator[Link] is imported from airflow.models.baseoperator in core
entry: "from airflow\\.models import.* BaseOperator"
files: \.py$
pass_filenames: true
exclude: >
(?x)
^airflow/decorators/.*$|
^airflow/gcp/.*$|
^airflow/hooks/.*$|
^airflow/operators/.*$|
^airflow/sensors/.*$|
^airflow/providers/.*$|
^dev/provider_packages/.*$
- id: base-operator
language: pygrep
name: Check BaseOperator[Link] other imports
description: Make sure BaseOperator[Link] is imported from airflow.models outside of core
entry: "from airflow\\.models\\.baseoperator import.* BaseOperator"
pass_filenames: true
files: >
(?x)
^airflow/gcp/.*$|
^airflow/hooks/.*$|
^airflow/operators/.*$|
^airflow/sensors/.*$|
^airflow/providers/.*\.py$
exclude: ^airflow/_vendor/
- id: provide-create-sessions
language: pygrep
name: Check provide_session and create_session imports
description: provide_session and create_session should be imported from airflow.utils.session
to avoid import cycles.
entry: "from airflow\\.utils\\.db import.* (provide_session|create_session)"
files: \.py$
exclude: ^airflow/_vendor/
pass_filenames: true
- id: incorrect-use-of-LoggingMixin
language: pygrep
name: Make sure LoggingMixin is not used alone
entry: "LoggingMixin\\(\\)"
files: \.py$
exclude: ^airflow/_vendor/
pass_filenames: true
- id: daysago-import-check
language: pygrep
name: Make sure days_ago is imported from airflow.utils.dates
entry: "(airflow\\.){0,1}utils\\.dates\\.days_ago"
files: \.py$
exclude: ^airflow/_vendor/
pass_filenames: true
- id: restrict-start_date
language: pygrep
name: "'start_date' should not be defined in default_args in example_dags"
entry: "default_args\\s*=\\s*{\\s*(\"|')start_date(\"|')|(\"|')start_date(\"|'):"
files: \.*example_dags.*\.py$
exclude: ^airflow/_vendor/
pass_filenames: true
- id: check-integrations
name: Check if integration list is aligned
entry: ./scripts/ci/pre_commit/pre_commit_check_integrations.sh
language: system
pass_filenames: false
files: ^common/_common_values\.sh$|^breeze-complete$
- id: check-apache-license
name: Check if licenses are OK for Apache
entry: ./scripts/ci/pre_commit/pre_commit_check_license.sh
language: system
files: ^.*LICENSE.*$|^.*LICENCE.*$
pass_filenames: false
- id: airflow-config-yaml
name: Checks for consistency between config.yml and default_config.cfg
language: python
entry: ./scripts/ci/pre_commit/pre_commit_yaml_to_cfg.py
files: config\.yml$|default_airflow\.cfg$|default\.cfg$
pass_filenames: false
require_serial: true
additional_dependencies: ['pyyaml']
- id: verify-db-migrations-documented
name: Verify that DB Migrations have been documented
language: python
entry: ./scripts/ci/pre_commit/pre_commit_migration_documented.py
files: ^airflow/migrations/versions/.*\.(py)$
pass_filenames: false
require_serial: true
- id: boring-cyborg
name: Checks for Boring Cyborg configuration consistency
language: python
entry: ./scripts/ci/pre_commit/pre_commit_boring_cyborg.py
pass_filenames: false
require_serial: true
additional_dependencies: ['pyyaml', 'termcolor==1.1.0', 'wcmatch==8.2']
- id: sort-in-the-wild
name: Sort INTHEWILD.md alphabetically
entry: ./scripts/ci/pre_commit/pre_commit_sort_in_the_wild.sh
language: system
files: ^\.pre-commit-config\.yaml$|^INTHEWILD\.md$
require_serial: true
- id: sort-spelling-wordlist
name: Sort alphabetically and uniquify spelling_wordlist.txt
entry: ./scripts/ci/pre_commit/pre_commit_sort_spelling_wordlist.sh
language: system
files: ^\.pre-commit-config\.yaml$|^docs/spelling_wordlist\.txt$
require_serial: true
- id: helm-lint
name: Lint Helm Chart
entry: ./scripts/ci/pre_commit/pre_commit_helm_lint.sh
language: system
pass_filenames: false
files: ^chart
require_serial: true
- id: shellcheck
name: Check Shell scripts syntax correctness
language: docker_image
entry: koalaman/shellcheck:v0.7.2 -x -a
files: ^breeze$|^breeze-complete$|\.sh$|^hooks/build$|^hooks/push$|\.bash$|\.bats$
- id: bats-tests
name: Run BATS bash tests for changed Breeze bash files
language: system
entry: ./scripts/ci/pre_commit/pre_commit_bat_tests.sh tests/bats/breeze/
files: ^breeze$|^breeze-complete$|^tests/bats/breeze
pass_filenames: false
- id: bats-tests
name: Run BATS bash tests for changed bash files
language: system
entry: ./scripts/ci/pre_commit/pre_commit_bat_tests.sh
files: \.sh$|\.bash$|\.bats$
exclude: ^tests/bats/in_container|^scripts/in_container|^tests/bats/breeze|^airflow/_vendor/
pass_filenames: true
require_serial: true
- id: stylelint
name: stylelint
entry: "stylelint"
language: node
files: ^airflow/www/.*\.(css|scss|sass)$
# Keep dependency versions in sync w/ airflow/www/package.json
additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0']
- id: providers-init-file
name: Provider init file is missing
pass_filenames: false
always_run: true
entry: ./scripts/ci/pre_commit/pre_commit_check_providers_init.sh
language: system
- id: providers-subpackages-init-file
name: Provider subpackage init files are there
pass_filenames: false
always_run: true
entry: ./scripts/ci/pre_commit/pre_commit_check_providers_subpackages_all_have_init.py
language: python
require_serial: true
- id: provider-yamls
name: Validate providers.yaml files
pass_filenames: false
entry: ./scripts/ci/pre_commit/pre_commit_check_provider_yaml_files.py
language: python
require_serial: true
files: provider\.yaml$|scripts/ci/pre_commit/pre_commit_check_provider_yaml_files\.py$|^docs/
additional_dependencies:
- 'PyYAML==5.3.1'
- 'jsonschema==3.2.0'
2021-10-21 15:56:51 -07:00
- 'tabulate==0.8.8'
- 'jsonpath-ng==1.5.3'
- 'rich==10.9.0'
- id: mermaid
name: Generate mermaid images
entry: ./scripts/ci/pre_commit/pre_commit_mermaid.sh
language: system
files: \.mermaid$
require_serial: true
- id: pre-commit-descriptions
name: Check if pre-commits are described
entry: ./scripts/ci/pre_commit/pre_commit_check_pre_commits.sh
language: system
files: ^\.pre-commit-config\.yaml$|^STATIC_CODE_CHECKS\.rst|^breeze-complete$
require_serial: true
- id: pre-commit-hook-names
name: Ensure hook ids are not overly long
entry: ./scripts/ci/pre_commit/pre_commit_check_pre_commit_hook_names.py
args:
- --max-length=70
language: python
files: ^\.pre-commit-config\.yaml$
additional_dependencies: ['pyyaml']
require_serial: true
pass_filenames: false
- id: airflow-providers-available
name: Checks providers available when declared by extras in setup.py
language: python
entry: ./scripts/ci/pre_commit/pre_commit_check_extras_have_providers.py
files: setup\.py|^airflow/providers/.*\.py
pass_filenames: false
require_serial: true
additional_dependencies: ['rich']
- id: markdownlint
name: Run markdownlint
description: Checks the style of Markdown files.
entry: markdownlint
language: node
types: [markdown]
files: \.(md|mdown|markdown)$
additional_dependencies: ['markdownlint-cli']
- id: json-schema
name: Lint JSON Schema files with JSON Schema
entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py
args:
- --spec-url
- https://json-schema.org/draft-07/schema
language: python
pass_filenames: true
files: .*\.schema\.json$
exclude: ^airflow/_vendor/
require_serial: true
additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0']
- id: json-schema
name: Lint NodePort Service with JSON Schema
entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py
args:
- --spec-url
2021-11-24 23:29:46 +01:00
- https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.20.2-standalone/service-v1.json
language: python
pass_filenames: true
files: scripts/ci/kubernetes/nodeport.yaml
require_serial: true
additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0']
- id: json-schema
name: Lint Docker compose files with JSON Schema
entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py
args:
- --spec-url
- https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
language: python
pass_filenames: true
files: ^scripts/ci/docker-compose/.+\.ya?ml$|docker-compose\.ya?ml$
require_serial: true
additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0']
- id: json-schema
name: Lint chart/values.schema.json file with JSON Schema
entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py
args:
- --spec-file
- chart/values_schema.schema.json
- chart/values.schema.json
language: python
pass_filenames: false
files: ^chart/values\.schema\.json$|^chart/values_schema\.schema\.json$
require_serial: true
additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0']
- id: json-schema
name: Lint chart/values.yaml file with JSON Schema
entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py
args:
- --enforce-defaults
- --spec-file
- chart/values.schema.json
- chart/values.yaml
language: python
pass_filenames: false
files: ^chart/values\.yaml$|^chart/values\.schema\.json$
require_serial: true
additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0']
- id: json-schema
name: Lint airflow/config_templates/config.yml file with JSON Schema
entry: ./scripts/ci/pre_commit/pre_commit_json_schema.py
args:
- --spec-file
- airflow/config_templates/config.yml.schema.json
language: python
pass_filenames: true
files: airflow/config_templates/config\.yml$
require_serial: true
additional_dependencies: ['jsonschema==3.2.0', 'PyYAML==5.3.1', 'requests==2.25.0']
- id: ui-lint
name: ESLint against airflow/ui
language: node
'types_or': [javascript, tsx, ts]
files: ^airflow/ui/
entry: scripts/ci/static_checks/ui_lint.sh
pass_filenames: false
- id: www-lint
name: ESLint against current UI js files
language: node
'types_or': [javascript]
files: ^airflow/www/static/js/
entry: scripts/ci/static_checks/www_lint.sh
pass_filenames: false
- id: changelog-duplicates
name: Check changelogs for duplicate entries
language: python
files: CHANGELOG\.txt$|CHANGELOG\.rst$
entry: scripts/ci/pre_commit/pre_commit_changelog_duplicates.py
pass_filenames: true
## ADD MOST PRE-COMMITS ABOVE THAT LINE
# The below pre-commits are those requiring CI image to be built
- id: build
name: Check if image build is needed
entry: ./scripts/ci/pre_commit/pre_commit_ci_build.sh 3.7 false
language: system
always_run: true
pass_filenames: false
- id: bats-in-container-tests
name: Run in container bats tests
language: system
entry: ./scripts/ci/pre_commit/pre_commit_in_container_bats_test.sh
files: ^tests/bats/in_container/.*\.bats$|^scripts/in_container/.*sh
pass_filenames: false
- id: mypy
name: Run mypy
language: system
entry: ./scripts/ci/pre_commit/pre_commit_mypy.sh --namespace-packages
files: \.py$
exclude: ^provider_packages|^chart|^docs|^airflow/_vendor/
require_serial: true
- id: mypy
name: Run mypy for helm chart tests
language: system
entry: ./scripts/ci/pre_commit/pre_commit_mypy.sh
files: ^chart/.*\.py$
require_serial: true
- id: mypy
name: Run mypy for /docs/ folder
language: system
entry: ./scripts/ci/pre_commit/pre_commit_mypy.sh
files: ^docs/.*\.py$
2020-11-23 09:52:24 +01:00
exclude: rtd-deprecation
require_serial: true
- id: flake8
name: Run flake8
language: system
entry: ./scripts/ci/pre_commit/pre_commit_flake8.sh
files: \.py$
pass_filenames: true
exclude: ^airflow/_vendor/
## ONLY ADD PRE-COMMITS HERE THAT REQUIRE CI IMAGE