-
-
Notifications
You must be signed in to change notification settings - Fork 200
Expand file tree
/
Copy pathpyproject.toml
More file actions
171 lines (152 loc) · 6.21 KB
/
Copy pathpyproject.toml
File metadata and controls
171 lines (152 loc) · 6.21 KB
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
[build-system]
requires = [
# NOTE: The following build dependencies are necessary for initial
# NOTE: provisioning of the in-tree build backend located under
# NOTE: `packaging/pep517_backend/`.
"expandvars",
"setuptools >= 47", # Minimum required for `version = attr:`
"tomli; python_version < '3.11'",
]
backend-path = ["packaging"] # requires `pip >= 20` or `pep517 >= 0.6.0`
build-backend = "pep517_backend.hooks" # wraps `setuptools.build_meta`
[tool.local.cython]
# This attr can contain multiple globs
src = ["yarl/*.pyx"]
[tool.local.cython.env]
# Env vars provisioned during cythonize call
#CFLAGS = "-DCYTHON_TRACE=1 ${CFLAGS}"
#LDFLAGS = "${LDFLAGS}"
[tool.local.cython.flags]
# This section can contain the following booleans:
# * annotate — generate annotated HTML page for source files
# * build — build extension modules using distutils
# * inplace — build extension modules in place using distutils (implies -b)
# * force — force recompilation
# * quiet — be less verbose during compilation
# * lenient — increase Python compat by ignoring some compile time errors
# * keep-going — compile as much as possible, ignore compilation failures
annotate = false
build = false
inplace = true
force = true
quiet = false
lenient = false
keep-going = false
[tool.local.cython.kwargs]
# This section can contain args that have values:
# * exclude=PATTERN exclude certain file patterns from the compilation
# * parallel=N run builds in N parallel jobs (default: calculated per system)
# exclude = "**.py"
[tool.local.cython.kwargs.directive]
# This section can contain compiler directives. Ref:
# https://cython.rtfd.io/en/latest/src/userguide/source_files_and_compilation.html#compiler-directives
embedsignature = "True"
emit_code_comments = "True"
language_level = "3"
freethreading_compatible = "True"
[tool.local.cython.kwargs.compile-time-env]
# This section can contain compile time env vars
[tool.local.cython.kwargs.option]
# This section can contain cythonize options
# Ref: https://github.com/cython/cython/blob/d6e6de9/Cython/Compiler/Options.py#L694-L730
#docstrings = "True"
#embed_pos_in_docstring = "True"
#warning_errors = "True"
#error_on_unknown_names = "True"
#error_on_uninitialized = "True"
[tool.local.cythonize]
# This attr can contain multiple globs
src = ["yarl/*.pyx"]
[tool.local.cythonize.env]
# Env vars provisioned during cythonize call
#CFLAGS = "-DCYTHON_TRACE=1 ${CFLAGS}"
#LDFLAGS = "${LDFLAGS}"
[tool.local.cythonize.flags]
# This section can contain the following booleans:
# * annotate — generate annotated HTML page for source files
# * build — build extension modules using distutils
# * inplace — build extension modules in place using distutils (implies -b)
# * force — force recompilation
# * quiet — be less verbose during compilation
# * lenient — increase Python compat by ignoring some compile time errors
# * keep-going — compile as much as possible, ignore compilation failures
annotate = false
build = false
inplace = true
force = true
quiet = false
lenient = false
keep-going = false
[tool.local.cythonize.kwargs]
# This section can contain args that have values:
# * exclude=PATTERN exclude certain file patterns from the compilation
# * parallel=N run builds in N parallel jobs (default: calculated per system)
# exclude = "**.py"
#
# NOTE: Setting parallelism to 1 works around a bug in the ``cythonize``
# NOTE: script that hangs on macOS under Python 3.8+ due to the use of
# NOTE: the ``spawn`` method in ``multiprocessing``. This patch can be
# NOTE: reverted once the fix PR is usable upstream.
# Ref: https://github.com/cython/cython/pull/7183
parallel = 1
[tool.local.cythonize.kwargs.directive]
# This section can contain compiler directives. Ref:
# https://cython.rtfd.io/en/latest/src/userguide/source_files_and_compilation.html#compiler-directives
embedsignature = "True"
emit_code_comments = "True"
language_level = "3"
freethreading_compatible = "True"
[tool.local.cythonize.kwargs.compile-time-env]
# This section can contain compile time env vars
[tool.local.cythonize.kwargs.option]
# This section can contain cythonize options
# Ref: https://github.com/cython/cython/blob/d6e6de9/Cython/Compiler/Options.py#L694-L730
#docstrings = "True"
#embed_pos_in_docstring = "True"
#warning_errors = "True"
#error_on_unknown_names = "True"
#error_on_uninitialized = "True"
[tool.ruff]
# The packaging/pep517_backend/ tree has its own .ruff.toml and is linted
# under that config via a separate pre-commit hook.
extend-exclude = ["packaging/pep517_backend"]
[tool.ruff.lint]
# Keep this list small and intentional; the rest of the project still
# relies on flake8 for general style. The rules below are ones we want
# to enforce repo-wide as a baseline.
select = [
# Import sorting. Replaces the dedicated isort pre-commit hook so the
# formatter (ruff format) and the import sorter (ruff check --select I)
# come from the same tool and rev.
"I",
# Imports must live at the top of the module. Late/inside-function
# imports must be opted into explicitly with `# noqa: PLC0415` and a
# comment explaining why (e.g. avoiding a heavy optional dependency
# in the import path). Enforced because AI-assisted contributions
# frequently introduce function-scoped imports that are unnecessary.
"PLC0415",
]
# `build[uv]` makes cibuildwheel use `uv` for every venv it provisions,
# both on the build side (passed to `python -m build` as `--installer=uv`)
# and when materializing the test environment. uv resolves and installs
# the wheel plus `requirements/test-cibuildwheel.txt` in roughly a second;
# the previous pip-based path took noticeably longer per ABI and ran once
# per matrix cell.
[tool.cibuildwheel]
build-frontend = "build[uv]"
test-requires = "-r requirements/test-cibuildwheel.txt"
test-command = 'pytest -v -m "not hypothesis" --no-cov {project}/tests'
# don't build PyPy wheels, install from source instead
skip = "pp*"
[tool.cibuildwheel.environment]
COLOR = "yes"
FORCE_COLOR = "1"
MYPY_FORCE_COLOR = "1"
PIP_BUILD_CONSTRAINT = "requirements/cython.txt"
PIP_CONSTRAINT = "requirements/cython.txt"
PRE_COMMIT_COLOR = "always"
PY_COLORS = "1"
UV_BUILD_CONSTRAINT = "requirements/cython.txt"
UV_CONSTRAINT = "requirements/cython.txt"
[tool.cibuildwheel.config-settings]
pure-python = "false"