forked from apache/airflow
-
Notifications
You must be signed in to change notification settings - Fork 5
/
pyproject.toml
126 lines (114 loc) · 3.72 KB
/
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# 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.
[tool.black]
line-length = 110
target-version = ['py37', 'py38', 'py39', 'py310']
# The build system section is needed in order to workaround the side-effect introduced by recent
# setup tools version. The recent setuptools version update (64.0.0) broke paths of editable installations
# and we have to pin it to 63.4.3 version
# The problem is tracked (and this limitation might be removed if it is solved) in:
# https://github.com/pypa/setuptools/issues/3548
[build-system]
requires = ['setuptools==63.4.3']
build-backend = "setuptools.build_meta"
[tool.ruff]
typing-modules = ["airflow.typing_compat"]
line-length = 110
extend-exclude = [
".eggs",
"airflow/_vendor/*",
# The files generated by stubgen aren't 100% valid syntax it turns out, and we don't ship them, so we can
# ignore them in ruff
"airflow/providers/common/sql/*/*.pyi"
]
# TODO: Bump to Python 3.8 when support for Python 3.7 is dropped in Airflow.
target-version = "py37"
extend-select = [
"I", # Missing required import (auto-fixable)
"UP", # Pyupgrade
"RUF100", # Unused noqa (auto-fixable)
# We ignore more pydocstyle than we enable, so be more selective at what we enable
"D101",
"D106",
"D2",
"D3",
# "D401", # Not enabled by ruff, but we don't want it
"D402",
"D403",
"D412",
"D419"
]
extend-ignore = [
"D203",
"D205",
"D212",
"D213",
"D214",
"D215",
"E731",
]
[tool.ruff.isort]
known-first-party = ["airflow", "airflow_breeze", "docker_tests", "docs", "kubernetes_tests", "tests"]
required-imports = ["from __future__ import annotations"]
combine-as-imports = true
# TODO: for now, https://github.com/charliermarsh/ruff/issues/1817
known-third-party = [
"asana",
"atlassian",
"celery",
"cloudant",
"databricks",
"datadog",
"docker",
"elasticsearch",
"github",
"google",
"grpc",
"jenkins",
"mysql",
"neo4j",
"papermill",
"redis",
"sendgrid",
"snowflake",
"telegram",
"trino",
]
[tool.ruff.per-file-ignores]
"airflow/models/__init__.py" = ["F401"]
"airflow/models/sqla_models.py" = ["F401"]
# The test_python.py is needed because adding __future__.annotations breaks runtime checks that are
# needed for the test to work
"tests/decorators/test_python.py" = ["I002"]
# Ignore pydoc style from these
"*.pyi" = ["D"]
"tests/*" = ["D"]
"scripts/*" = ["D"]
"dev/*" = ["D"]
"docs/*" = ["D"]
"provider_packages/*" = ["D"]
"docker_tests/*" = ["D"]
"kubernetes_tests/*" = ["D"]
"*/example_dags/*" = ["D"]
"chart/*" = ["D"]
# All of the modules which have an extra license header (i.e. that we copy from another project) need to
# ignore E402 -- module level import not at top level
"airflow/api/auth/backend/kerberos_auth.py" = ["E402"]
"airflow/security/kerberos.py" = ["E402"]
"airflow/security/utils.py" = ["E402"]
"tests/providers/elasticsearch/log/elasticmock/__init__.py" = ["E402"]
"tests/providers/elasticsearch/log/elasticmock/utilities/__init__.py" = ["E402"]