projen 0.79.4__py3-none-any.whl → 0.98.25__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3933 @@
1
+ from pkgutil import extend_path
2
+ __path__ = extend_path(__path__, __name__)
3
+
4
+ import abc
5
+ import builtins
6
+ import datetime
7
+ import enum
8
+ import typing
9
+
10
+ import jsii
11
+ import publication
12
+ import typing_extensions
13
+
14
+ import typeguard
15
+ from importlib.metadata import version as _metadata_package_version
16
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
17
+
18
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
19
+ if TYPEGUARD_MAJOR_VERSION <= 2:
20
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
21
+ else:
22
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
23
+ pass
24
+ else:
25
+ if TYPEGUARD_MAJOR_VERSION == 3:
26
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
27
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
28
+ else:
29
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
30
+
31
+ from ..._jsii import *
32
+
33
+
34
+ @jsii.data_type(
35
+ jsii_type="projen.python.uvConfig.BuildBackendSettings",
36
+ jsii_struct_bases=[],
37
+ name_mapping={
38
+ "data": "data",
39
+ "default_excludes": "defaultExcludes",
40
+ "module_name": "moduleName",
41
+ "module_root": "moduleRoot",
42
+ "namespace": "namespace",
43
+ "source_exclude": "sourceExclude",
44
+ "source_include": "sourceInclude",
45
+ "wheel_exclude": "wheelExclude",
46
+ },
47
+ )
48
+ class BuildBackendSettings:
49
+ def __init__(
50
+ self,
51
+ *,
52
+ data: typing.Optional[typing.Union["WheelDataIncludes", typing.Dict[builtins.str, typing.Any]]] = None,
53
+ default_excludes: typing.Optional[builtins.bool] = None,
54
+ module_name: typing.Any = None,
55
+ module_root: typing.Optional[builtins.str] = None,
56
+ namespace: typing.Optional[builtins.bool] = None,
57
+ source_exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
58
+ source_include: typing.Optional[typing.Sequence[builtins.str]] = None,
59
+ wheel_exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
60
+ ) -> None:
61
+ '''(experimental) Settings for the uv build backend (``uv_build``).
62
+
63
+ Note that those settings only apply when using the ``uv_build`` backend, other build backends
64
+ (such as hatchling) have their own configuration.
65
+
66
+ All options that accept globs use the portable glob patterns from
67
+ `PEP 639 <https://packaging.python.org/en/latest/specifications/glob-patterns/>`_.
68
+
69
+ :param data: (experimental) Data includes for wheels. Each entry is a directory, whose contents are copied to the matching directory in the wheel in ``<name>-<version>.data/(purelib|platlib|headers|scripts|data)``. Upon installation, this data is moved to its target location, as defined by `https://docs.python.org/3.12/library/sysconfig.html#installation-paths <https://docs.python.org/3.12/library/sysconfig.html#installation-paths>`_. Usually, small data files are included by placing them in the Python module instead of using data includes. - ``scripts``: Installed to the directory for executables, ``<venv>/bin`` on Unix or ``<venv>\\Scripts`` on Windows. This directory is added to ``PATH`` when the virtual environment is activated or when using ``uv run``, so this data type can be used to install additional binaries. Consider using ``project.scripts`` instead for Python entrypoints. - ``data``: Installed over the virtualenv environment root. Warning: This may override existing files! - ``headers``: Installed to the include directory. Compilers building Python packages with this package as build requirement use the include directory to find additional header files. - ``purelib`` and ``platlib``: Installed to the ``site-packages`` directory. It is not recommended to use these two options.
70
+ :param default_excludes: (experimental) If set to ``false``, the default excludes aren't applied. Default excludes: ``__pycache__``, ``*.pyc``, and ``*.pyo``.
71
+ :param module_name: (experimental) The name of the module directory inside ``module-root``. The default module name is the package name with dots and dashes replaced by underscores. Package names need to be valid Python identifiers, and the directory needs to contain a ``__init__.py``. An exception are stubs packages, whose name ends with ``-stubs``, with the stem being the module name, and which contain a ``__init__.pyi`` file. For namespace packages with a single module, the path can be dotted, e.g., ``foo.bar`` or ``foo-stubs.bar``. For namespace packages with multiple modules, the path can be a list, e.g., ``["foo", "bar"]``. We recommend using a single module per package, splitting multiple packages into a workspace. Note that using this option runs the risk of creating two packages with different names but the same module names. Installing such packages together leads to unspecified behavior, often with corrupted files or directory trees.
72
+ :param module_root: (experimental) The directory that contains the module directory. Common values are ``src`` (src layout, the default) or an empty path (flat layout).
73
+ :param namespace: (experimental) Build a namespace package. Build a PEP 420 implicit namespace package, allowing more than one root ``__init__.py``. Use this option when the namespace package contains multiple root ``__init__.py``, for namespace packages with a single root ``__init__.py`` use a dotted ``module-name`` instead. To compare dotted ``module-name`` and ``namespace = true``, the first example below can be expressed with ``module-name = "cloud.database"``: There is one root ``__init__.py`` ``database``. In the second example, we have three roots (``cloud.database``, ``cloud.database_pro``, ``billing.modules.database_pro``), so ``namespace = true`` is required:: src └── cloud └── database ├── __init__.py ├── query_builder │ └── __init__.py └── sql ├── parser.py └── __init__.py Example:: src ├── cloud │ ├── database │ │ ├── __init__.py │ │ ├── query_builder │ │ │ └── __init__.py │ │ └── sql │ │ ├── __init__.py │ │ └── parser.py │ └── database_pro │ ├── __init__.py │ └── query_builder.py └── billing └── modules └── database_pro ├── __init__.py └── sql.py
74
+ :param source_exclude: (experimental) Glob expressions which files and directories to exclude from the source distribution.
75
+ :param source_include: (experimental) Glob expressions which files and directories to additionally include in the source distribution. ``pyproject.toml`` and the contents of the module directory are always included.
76
+ :param wheel_exclude: (experimental) Glob expressions which files and directories to exclude from the wheel.
77
+
78
+ :stability: experimental
79
+ :schema: BuildBackendSettings
80
+ '''
81
+ if isinstance(data, dict):
82
+ data = WheelDataIncludes(**data)
83
+ if __debug__:
84
+ type_hints = typing.get_type_hints(_typecheckingstub__e8edb4b678376787a735855010994c917f5562ec1c18ac7700c5f21373aa27eb)
85
+ check_type(argname="argument data", value=data, expected_type=type_hints["data"])
86
+ check_type(argname="argument default_excludes", value=default_excludes, expected_type=type_hints["default_excludes"])
87
+ check_type(argname="argument module_name", value=module_name, expected_type=type_hints["module_name"])
88
+ check_type(argname="argument module_root", value=module_root, expected_type=type_hints["module_root"])
89
+ check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
90
+ check_type(argname="argument source_exclude", value=source_exclude, expected_type=type_hints["source_exclude"])
91
+ check_type(argname="argument source_include", value=source_include, expected_type=type_hints["source_include"])
92
+ check_type(argname="argument wheel_exclude", value=wheel_exclude, expected_type=type_hints["wheel_exclude"])
93
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
94
+ if data is not None:
95
+ self._values["data"] = data
96
+ if default_excludes is not None:
97
+ self._values["default_excludes"] = default_excludes
98
+ if module_name is not None:
99
+ self._values["module_name"] = module_name
100
+ if module_root is not None:
101
+ self._values["module_root"] = module_root
102
+ if namespace is not None:
103
+ self._values["namespace"] = namespace
104
+ if source_exclude is not None:
105
+ self._values["source_exclude"] = source_exclude
106
+ if source_include is not None:
107
+ self._values["source_include"] = source_include
108
+ if wheel_exclude is not None:
109
+ self._values["wheel_exclude"] = wheel_exclude
110
+
111
+ @builtins.property
112
+ def data(self) -> typing.Optional["WheelDataIncludes"]:
113
+ '''(experimental) Data includes for wheels.
114
+
115
+ Each entry is a directory, whose contents are copied to the matching directory in the wheel
116
+ in ``<name>-<version>.data/(purelib|platlib|headers|scripts|data)``. Upon installation, this
117
+ data is moved to its target location, as defined by
118
+ `https://docs.python.org/3.12/library/sysconfig.html#installation-paths <https://docs.python.org/3.12/library/sysconfig.html#installation-paths>`_. Usually, small
119
+ data files are included by placing them in the Python module instead of using data includes.
120
+
121
+ - ``scripts``: Installed to the directory for executables, ``<venv>/bin`` on Unix or
122
+ ``<venv>\\Scripts`` on Windows. This directory is added to ``PATH`` when the virtual
123
+ environment is activated or when using ``uv run``, so this data type can be used to install
124
+ additional binaries. Consider using ``project.scripts`` instead for Python entrypoints.
125
+ - ``data``: Installed over the virtualenv environment root.
126
+
127
+ Warning: This may override existing files!
128
+
129
+ - ``headers``: Installed to the include directory. Compilers building Python packages
130
+ with this package as build requirement use the include directory to find additional header
131
+ files.
132
+ - ``purelib`` and ``platlib``: Installed to the ``site-packages`` directory. It is not recommended
133
+ to use these two options.
134
+
135
+ :stability: experimental
136
+ :schema: BuildBackendSettings#data
137
+ '''
138
+ result = self._values.get("data")
139
+ return typing.cast(typing.Optional["WheelDataIncludes"], result)
140
+
141
+ @builtins.property
142
+ def default_excludes(self) -> typing.Optional[builtins.bool]:
143
+ '''(experimental) If set to ``false``, the default excludes aren't applied.
144
+
145
+ Default excludes: ``__pycache__``, ``*.pyc``, and ``*.pyo``.
146
+
147
+ :stability: experimental
148
+ :schema: BuildBackendSettings#default-excludes
149
+ '''
150
+ result = self._values.get("default_excludes")
151
+ return typing.cast(typing.Optional[builtins.bool], result)
152
+
153
+ @builtins.property
154
+ def module_name(self) -> typing.Any:
155
+ '''(experimental) The name of the module directory inside ``module-root``.
156
+
157
+ The default module name is the package name with dots and dashes replaced by underscores.
158
+
159
+ Package names need to be valid Python identifiers, and the directory needs to contain a
160
+ ``__init__.py``. An exception are stubs packages, whose name ends with ``-stubs``, with the stem
161
+ being the module name, and which contain a ``__init__.pyi`` file.
162
+
163
+ For namespace packages with a single module, the path can be dotted, e.g., ``foo.bar`` or
164
+ ``foo-stubs.bar``.
165
+
166
+ For namespace packages with multiple modules, the path can be a list, e.g.,
167
+ ``["foo", "bar"]``. We recommend using a single module per package, splitting multiple
168
+ packages into a workspace.
169
+
170
+ Note that using this option runs the risk of creating two packages with different names but
171
+ the same module names. Installing such packages together leads to unspecified behavior,
172
+ often with corrupted files or directory trees.
173
+
174
+ :stability: experimental
175
+ :schema: BuildBackendSettings#module-name
176
+ '''
177
+ result = self._values.get("module_name")
178
+ return typing.cast(typing.Any, result)
179
+
180
+ @builtins.property
181
+ def module_root(self) -> typing.Optional[builtins.str]:
182
+ '''(experimental) The directory that contains the module directory.
183
+
184
+ Common values are ``src`` (src layout, the default) or an empty path (flat layout).
185
+
186
+ :stability: experimental
187
+ :schema: BuildBackendSettings#module-root
188
+ '''
189
+ result = self._values.get("module_root")
190
+ return typing.cast(typing.Optional[builtins.str], result)
191
+
192
+ @builtins.property
193
+ def namespace(self) -> typing.Optional[builtins.bool]:
194
+ '''(experimental) Build a namespace package.
195
+
196
+ Build a PEP 420 implicit namespace package, allowing more than one root ``__init__.py``.
197
+
198
+ Use this option when the namespace package contains multiple root ``__init__.py``, for
199
+ namespace packages with a single root ``__init__.py`` use a dotted ``module-name`` instead.
200
+
201
+ To compare dotted ``module-name`` and ``namespace = true``, the first example below can be
202
+ expressed with ``module-name = "cloud.database"``: There is one root ``__init__.py`` ``database``.
203
+ In the second example, we have three roots (``cloud.database``, ``cloud.database_pro``,
204
+ ``billing.modules.database_pro``), so ``namespace = true`` is required::
205
+
206
+ src
207
+ └── cloud
208
+ └── database
209
+ ├── __init__.py
210
+ ├── query_builder
211
+ │ └── __init__.py
212
+ └── sql
213
+ ├── parser.py
214
+ └── __init__.py
215
+
216
+ Example::
217
+
218
+ src
219
+ ├── cloud
220
+ │ ├── database
221
+ │ │ ├── __init__.py
222
+ │ │ ├── query_builder
223
+ │ │ │ └── __init__.py
224
+ │ │ └── sql
225
+ │ │ ├── __init__.py
226
+ │ │ └── parser.py
227
+ │ └── database_pro
228
+ │ ├── __init__.py
229
+ │ └── query_builder.py
230
+ └── billing
231
+ └── modules
232
+ └── database_pro
233
+ ├── __init__.py
234
+ └── sql.py
235
+
236
+ :stability: experimental
237
+ :schema: BuildBackendSettings#namespace
238
+ '''
239
+ result = self._values.get("namespace")
240
+ return typing.cast(typing.Optional[builtins.bool], result)
241
+
242
+ @builtins.property
243
+ def source_exclude(self) -> typing.Optional[typing.List[builtins.str]]:
244
+ '''(experimental) Glob expressions which files and directories to exclude from the source distribution.
245
+
246
+ :stability: experimental
247
+ :schema: BuildBackendSettings#source-exclude
248
+ '''
249
+ result = self._values.get("source_exclude")
250
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
251
+
252
+ @builtins.property
253
+ def source_include(self) -> typing.Optional[typing.List[builtins.str]]:
254
+ '''(experimental) Glob expressions which files and directories to additionally include in the source distribution.
255
+
256
+ ``pyproject.toml`` and the contents of the module directory are always included.
257
+
258
+ :stability: experimental
259
+ :schema: BuildBackendSettings#source-include
260
+ '''
261
+ result = self._values.get("source_include")
262
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
263
+
264
+ @builtins.property
265
+ def wheel_exclude(self) -> typing.Optional[typing.List[builtins.str]]:
266
+ '''(experimental) Glob expressions which files and directories to exclude from the wheel.
267
+
268
+ :stability: experimental
269
+ :schema: BuildBackendSettings#wheel-exclude
270
+ '''
271
+ result = self._values.get("wheel_exclude")
272
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
273
+
274
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
275
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
276
+
277
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
278
+ return not (rhs == self)
279
+
280
+ def __repr__(self) -> str:
281
+ return "BuildBackendSettings(%s)" % ", ".join(
282
+ k + "=" + repr(v) for k, v in self._values.items()
283
+ )
284
+
285
+
286
+ @jsii.data_type(
287
+ jsii_type="projen.python.uvConfig.DependencyGroupSettings",
288
+ jsii_struct_bases=[],
289
+ name_mapping={"requires_python": "requiresPython"},
290
+ )
291
+ class DependencyGroupSettings:
292
+ def __init__(
293
+ self,
294
+ *,
295
+ requires_python: typing.Optional[builtins.str] = None,
296
+ ) -> None:
297
+ '''
298
+ :param requires_python: (experimental) Version of python to require when installing this group.
299
+
300
+ :stability: experimental
301
+ :schema: DependencyGroupSettings
302
+ '''
303
+ if __debug__:
304
+ type_hints = typing.get_type_hints(_typecheckingstub__bd491f584ee7212fb2c3697548f60d044362ecd866f97a41a269a2f581e15d60)
305
+ check_type(argname="argument requires_python", value=requires_python, expected_type=type_hints["requires_python"])
306
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
307
+ if requires_python is not None:
308
+ self._values["requires_python"] = requires_python
309
+
310
+ @builtins.property
311
+ def requires_python(self) -> typing.Optional[builtins.str]:
312
+ '''(experimental) Version of python to require when installing this group.
313
+
314
+ :stability: experimental
315
+ :schema: DependencyGroupSettings#requires-python
316
+ '''
317
+ result = self._values.get("requires_python")
318
+ return typing.cast(typing.Optional[builtins.str], result)
319
+
320
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
321
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
322
+
323
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
324
+ return not (rhs == self)
325
+
326
+ def __repr__(self) -> str:
327
+ return "DependencyGroupSettings(%s)" % ", ".join(
328
+ k + "=" + repr(v) for k, v in self._values.items()
329
+ )
330
+
331
+
332
+ @jsii.data_type(
333
+ jsii_type="projen.python.uvConfig.Index",
334
+ jsii_struct_bases=[],
335
+ name_mapping={
336
+ "url": "url",
337
+ "authenticate": "authenticate",
338
+ "cache_control": "cacheControl",
339
+ "default": "default",
340
+ "explicit": "explicit",
341
+ "format": "format",
342
+ "ignore_error_codes": "ignoreErrorCodes",
343
+ "name": "name",
344
+ "publish_url": "publishUrl",
345
+ },
346
+ )
347
+ class Index:
348
+ def __init__(
349
+ self,
350
+ *,
351
+ url: builtins.str,
352
+ authenticate: typing.Optional[builtins.str] = None,
353
+ cache_control: typing.Optional[typing.Union["IndexCacheControl", typing.Dict[builtins.str, typing.Any]]] = None,
354
+ default: typing.Optional[builtins.bool] = None,
355
+ explicit: typing.Optional[builtins.bool] = None,
356
+ format: typing.Optional[builtins.str] = None,
357
+ ignore_error_codes: typing.Optional[typing.Sequence[jsii.Number]] = None,
358
+ name: typing.Optional[builtins.str] = None,
359
+ publish_url: typing.Optional[builtins.str] = None,
360
+ ) -> None:
361
+ '''
362
+ :param url: (experimental) The URL of the index. Expects to receive a URL (e.g., ``https://pypi.org/simple``) or a local path.
363
+ :param authenticate: (experimental) When uv should use authentication for requests to the index. Example:: [[tool.uv.index]] name = "my-index" url = "https://<omitted>/simple" authenticate = "always"
364
+ :param cache_control: (experimental) Cache control configuration for this index. When set, these headers will override the server's cache control headers for both package metadata requests and artifact downloads:: [[tool.uv.index]] name = "my-index" url = "https://<omitted>/simple" cache-control = { api = "max-age=600", files = "max-age=3600" }
365
+ :param default: (experimental) Mark the index as the default index. By default, uv uses PyPI as the default index, such that even if additional indexes are defined via ``[[tool.uv.index]]``, PyPI will still be used as a fallback for packages that aren't found elsewhere. To disable the PyPI default, set ``default = true`` on at least one other index. Marking an index as default will move it to the front of the list of indexes, such that it is given the highest priority when resolving packages.
366
+ :param explicit: (experimental) Mark the index as explicit. Explicit indexes will *only* be used when explicitly requested via a ``[tool.uv.sources]`` definition, as in:: [[tool.uv.index]] name = "pytorch" url = "https://download.pytorch.org/whl/cu121" explicit = true [tool.uv.sources] torch = { index = "pytorch" }
367
+ :param format: (experimental) The format used by the index. Indexes can either be PEP 503-compliant (i.e., a PyPI-style registry implementing the Simple API) or structured as a flat list of distributions (e.g., ``--find-links``). In both cases, indexes can point to either local or remote resources.
368
+ :param ignore_error_codes: (experimental) Status codes that uv should ignore when deciding whether to continue searching in the next index after a failure. Example:: [[tool.uv.index]] name = "my-index" url = "https://<omitted>/simple" ignore-error-codes = [401, 403]
369
+ :param name: (experimental) The name of the index. Index names can be used to reference indexes elsewhere in the configuration. For example, you can pin a package to a specific index by name:: [[tool.uv.index]] name = "pytorch" url = "https://download.pytorch.org/whl/cu121" [tool.uv.sources] torch = { index = "pytorch" }
370
+ :param publish_url: (experimental) The URL of the upload endpoint. When using ``uv publish --index <name>``, this URL is used for publishing. A configuration for the default index PyPI would look as follows:: [[tool.uv.index]] name = "pypi" url = "https://pypi.org/simple" publish-url = "https://upload.pypi.org/legacy/"
371
+
372
+ :stability: experimental
373
+ :schema: Index
374
+ '''
375
+ if isinstance(cache_control, dict):
376
+ cache_control = IndexCacheControl(**cache_control)
377
+ if __debug__:
378
+ type_hints = typing.get_type_hints(_typecheckingstub__075e56d66f36a514ad1fafdc5b03260161a84fb1d2c5ce8069204ee4b239111d)
379
+ check_type(argname="argument url", value=url, expected_type=type_hints["url"])
380
+ check_type(argname="argument authenticate", value=authenticate, expected_type=type_hints["authenticate"])
381
+ check_type(argname="argument cache_control", value=cache_control, expected_type=type_hints["cache_control"])
382
+ check_type(argname="argument default", value=default, expected_type=type_hints["default"])
383
+ check_type(argname="argument explicit", value=explicit, expected_type=type_hints["explicit"])
384
+ check_type(argname="argument format", value=format, expected_type=type_hints["format"])
385
+ check_type(argname="argument ignore_error_codes", value=ignore_error_codes, expected_type=type_hints["ignore_error_codes"])
386
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
387
+ check_type(argname="argument publish_url", value=publish_url, expected_type=type_hints["publish_url"])
388
+ self._values: typing.Dict[builtins.str, typing.Any] = {
389
+ "url": url,
390
+ }
391
+ if authenticate is not None:
392
+ self._values["authenticate"] = authenticate
393
+ if cache_control is not None:
394
+ self._values["cache_control"] = cache_control
395
+ if default is not None:
396
+ self._values["default"] = default
397
+ if explicit is not None:
398
+ self._values["explicit"] = explicit
399
+ if format is not None:
400
+ self._values["format"] = format
401
+ if ignore_error_codes is not None:
402
+ self._values["ignore_error_codes"] = ignore_error_codes
403
+ if name is not None:
404
+ self._values["name"] = name
405
+ if publish_url is not None:
406
+ self._values["publish_url"] = publish_url
407
+
408
+ @builtins.property
409
+ def url(self) -> builtins.str:
410
+ '''(experimental) The URL of the index.
411
+
412
+ Expects to receive a URL (e.g., ``https://pypi.org/simple``) or a local path.
413
+
414
+ :stability: experimental
415
+ :schema: Index#url
416
+ '''
417
+ result = self._values.get("url")
418
+ assert result is not None, "Required property 'url' is missing"
419
+ return typing.cast(builtins.str, result)
420
+
421
+ @builtins.property
422
+ def authenticate(self) -> typing.Optional[builtins.str]:
423
+ '''(experimental) When uv should use authentication for requests to the index.
424
+
425
+ Example::
426
+
427
+ [[tool.uv.index]]
428
+ name = "my-index"
429
+ url = "https://<omitted>/simple"
430
+ authenticate = "always"
431
+
432
+ :stability: experimental
433
+ :schema: Index#authenticate
434
+ '''
435
+ result = self._values.get("authenticate")
436
+ return typing.cast(typing.Optional[builtins.str], result)
437
+
438
+ @builtins.property
439
+ def cache_control(self) -> typing.Optional["IndexCacheControl"]:
440
+ '''(experimental) Cache control configuration for this index.
441
+
442
+ When set, these headers will override the server's cache control headers
443
+ for both package metadata requests and artifact downloads::
444
+
445
+ [[tool.uv.index]]
446
+ name = "my-index"
447
+ url = "https://<omitted>/simple"
448
+ cache-control = { api = "max-age=600", files = "max-age=3600" }
449
+
450
+ :stability: experimental
451
+ :schema: Index#cache-control
452
+ '''
453
+ result = self._values.get("cache_control")
454
+ return typing.cast(typing.Optional["IndexCacheControl"], result)
455
+
456
+ @builtins.property
457
+ def default(self) -> typing.Optional[builtins.bool]:
458
+ '''(experimental) Mark the index as the default index.
459
+
460
+ By default, uv uses PyPI as the default index, such that even if additional indexes are
461
+ defined via ``[[tool.uv.index]]``, PyPI will still be used as a fallback for packages that
462
+ aren't found elsewhere. To disable the PyPI default, set ``default = true`` on at least one
463
+ other index.
464
+
465
+ Marking an index as default will move it to the front of the list of indexes, such that it
466
+ is given the highest priority when resolving packages.
467
+
468
+ :stability: experimental
469
+ :schema: Index#default
470
+ '''
471
+ result = self._values.get("default")
472
+ return typing.cast(typing.Optional[builtins.bool], result)
473
+
474
+ @builtins.property
475
+ def explicit(self) -> typing.Optional[builtins.bool]:
476
+ '''(experimental) Mark the index as explicit.
477
+
478
+ Explicit indexes will *only* be used when explicitly requested via a ``[tool.uv.sources]``
479
+ definition, as in::
480
+
481
+ [[tool.uv.index]]
482
+ name = "pytorch"
483
+ url = "https://download.pytorch.org/whl/cu121"
484
+ explicit = true
485
+
486
+ [tool.uv.sources]
487
+ torch = { index = "pytorch" }
488
+
489
+ :stability: experimental
490
+ :schema: Index#explicit
491
+ '''
492
+ result = self._values.get("explicit")
493
+ return typing.cast(typing.Optional[builtins.bool], result)
494
+
495
+ @builtins.property
496
+ def format(self) -> typing.Optional[builtins.str]:
497
+ '''(experimental) The format used by the index.
498
+
499
+ Indexes can either be PEP 503-compliant (i.e., a PyPI-style registry implementing the Simple
500
+ API) or structured as a flat list of distributions (e.g., ``--find-links``). In both cases,
501
+ indexes can point to either local or remote resources.
502
+
503
+ :stability: experimental
504
+ :schema: Index#format
505
+ '''
506
+ result = self._values.get("format")
507
+ return typing.cast(typing.Optional[builtins.str], result)
508
+
509
+ @builtins.property
510
+ def ignore_error_codes(self) -> typing.Optional[typing.List[jsii.Number]]:
511
+ '''(experimental) Status codes that uv should ignore when deciding whether to continue searching in the next index after a failure.
512
+
513
+ Example::
514
+
515
+ [[tool.uv.index]]
516
+ name = "my-index"
517
+ url = "https://<omitted>/simple"
518
+ ignore-error-codes = [401, 403]
519
+
520
+ :stability: experimental
521
+ :schema: Index#ignore-error-codes
522
+ '''
523
+ result = self._values.get("ignore_error_codes")
524
+ return typing.cast(typing.Optional[typing.List[jsii.Number]], result)
525
+
526
+ @builtins.property
527
+ def name(self) -> typing.Optional[builtins.str]:
528
+ '''(experimental) The name of the index.
529
+
530
+ Index names can be used to reference indexes elsewhere in the configuration. For example,
531
+ you can pin a package to a specific index by name::
532
+
533
+ [[tool.uv.index]]
534
+ name = "pytorch"
535
+ url = "https://download.pytorch.org/whl/cu121"
536
+
537
+ [tool.uv.sources]
538
+ torch = { index = "pytorch" }
539
+
540
+ :stability: experimental
541
+ :schema: Index#name
542
+ '''
543
+ result = self._values.get("name")
544
+ return typing.cast(typing.Optional[builtins.str], result)
545
+
546
+ @builtins.property
547
+ def publish_url(self) -> typing.Optional[builtins.str]:
548
+ '''(experimental) The URL of the upload endpoint.
549
+
550
+ When using ``uv publish --index <name>``, this URL is used for publishing.
551
+
552
+ A configuration for the default index PyPI would look as follows::
553
+
554
+ [[tool.uv.index]]
555
+ name = "pypi"
556
+ url = "https://pypi.org/simple"
557
+ publish-url = "https://upload.pypi.org/legacy/"
558
+
559
+ :stability: experimental
560
+ :schema: Index#publish-url
561
+ '''
562
+ result = self._values.get("publish_url")
563
+ return typing.cast(typing.Optional[builtins.str], result)
564
+
565
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
566
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
567
+
568
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
569
+ return not (rhs == self)
570
+
571
+ def __repr__(self) -> str:
572
+ return "Index(%s)" % ", ".join(
573
+ k + "=" + repr(v) for k, v in self._values.items()
574
+ )
575
+
576
+
577
+ @jsii.data_type(
578
+ jsii_type="projen.python.uvConfig.IndexCacheControl",
579
+ jsii_struct_bases=[],
580
+ name_mapping={"api": "api", "files": "files"},
581
+ )
582
+ class IndexCacheControl:
583
+ def __init__(
584
+ self,
585
+ *,
586
+ api: typing.Optional[builtins.str] = None,
587
+ files: typing.Optional[builtins.str] = None,
588
+ ) -> None:
589
+ '''(experimental) Cache control configuration for an index.
590
+
591
+ :param api: (experimental) Cache control header for Simple API requests.
592
+ :param files: (experimental) Cache control header for file downloads.
593
+
594
+ :stability: experimental
595
+ :schema: IndexCacheControl
596
+ '''
597
+ if __debug__:
598
+ type_hints = typing.get_type_hints(_typecheckingstub__dadc80a7c1e7527e1cc3946322c9b1d4206a4fd507f1046ab1298219615cd172)
599
+ check_type(argname="argument api", value=api, expected_type=type_hints["api"])
600
+ check_type(argname="argument files", value=files, expected_type=type_hints["files"])
601
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
602
+ if api is not None:
603
+ self._values["api"] = api
604
+ if files is not None:
605
+ self._values["files"] = files
606
+
607
+ @builtins.property
608
+ def api(self) -> typing.Optional[builtins.str]:
609
+ '''(experimental) Cache control header for Simple API requests.
610
+
611
+ :stability: experimental
612
+ :schema: IndexCacheControl#api
613
+ '''
614
+ result = self._values.get("api")
615
+ return typing.cast(typing.Optional[builtins.str], result)
616
+
617
+ @builtins.property
618
+ def files(self) -> typing.Optional[builtins.str]:
619
+ '''(experimental) Cache control header for file downloads.
620
+
621
+ :stability: experimental
622
+ :schema: IndexCacheControl#files
623
+ '''
624
+ result = self._values.get("files")
625
+ return typing.cast(typing.Optional[builtins.str], result)
626
+
627
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
628
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
629
+
630
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
631
+ return not (rhs == self)
632
+
633
+ def __repr__(self) -> str:
634
+ return "IndexCacheControl(%s)" % ", ".join(
635
+ k + "=" + repr(v) for k, v in self._values.items()
636
+ )
637
+
638
+
639
+ @jsii.data_type(
640
+ jsii_type="projen.python.uvConfig.PipGroupName",
641
+ jsii_struct_bases=[],
642
+ name_mapping={"name": "name", "path": "path"},
643
+ )
644
+ class PipGroupName:
645
+ def __init__(
646
+ self,
647
+ *,
648
+ name: builtins.str,
649
+ path: typing.Optional[builtins.str] = None,
650
+ ) -> None:
651
+ '''(experimental) The pip-compatible variant of a [``GroupName``].
652
+
653
+ Either or :.
654
+ If is omitted it defaults to "pyproject.toml".
655
+
656
+ :param name:
657
+ :param path:
658
+
659
+ :stability: experimental
660
+ :schema: PipGroupName
661
+ '''
662
+ if __debug__:
663
+ type_hints = typing.get_type_hints(_typecheckingstub__61408a230f83617e8924d0c29339bd155df27bf401eeae828f9b19222e91953d)
664
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
665
+ check_type(argname="argument path", value=path, expected_type=type_hints["path"])
666
+ self._values: typing.Dict[builtins.str, typing.Any] = {
667
+ "name": name,
668
+ }
669
+ if path is not None:
670
+ self._values["path"] = path
671
+
672
+ @builtins.property
673
+ def name(self) -> builtins.str:
674
+ '''
675
+ :stability: experimental
676
+ :schema: PipGroupName#name
677
+ '''
678
+ result = self._values.get("name")
679
+ assert result is not None, "Required property 'name' is missing"
680
+ return typing.cast(builtins.str, result)
681
+
682
+ @builtins.property
683
+ def path(self) -> typing.Optional[builtins.str]:
684
+ '''
685
+ :stability: experimental
686
+ :schema: PipGroupName#path
687
+ '''
688
+ result = self._values.get("path")
689
+ return typing.cast(typing.Optional[builtins.str], result)
690
+
691
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
692
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
693
+
694
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
695
+ return not (rhs == self)
696
+
697
+ def __repr__(self) -> str:
698
+ return "PipGroupName(%s)" % ", ".join(
699
+ k + "=" + repr(v) for k, v in self._values.items()
700
+ )
701
+
702
+
703
+ @jsii.data_type(
704
+ jsii_type="projen.python.uvConfig.PipOptions",
705
+ jsii_struct_bases=[],
706
+ name_mapping={
707
+ "all_extras": "allExtras",
708
+ "allow_empty_requirements": "allowEmptyRequirements",
709
+ "annotation_style": "annotationStyle",
710
+ "break_system_packages": "breakSystemPackages",
711
+ "compile_bytecode": "compileBytecode",
712
+ "config_settings": "configSettings",
713
+ "config_settings_package": "configSettingsPackage",
714
+ "custom_compile_command": "customCompileCommand",
715
+ "dependency_metadata": "dependencyMetadata",
716
+ "emit_build_options": "emitBuildOptions",
717
+ "emit_find_links": "emitFindLinks",
718
+ "emit_index_annotation": "emitIndexAnnotation",
719
+ "emit_index_url": "emitIndexUrl",
720
+ "emit_marker_expression": "emitMarkerExpression",
721
+ "exclude_newer": "excludeNewer",
722
+ "exclude_newer_package": "excludeNewerPackage",
723
+ "extra": "extra",
724
+ "extra_build_dependencies": "extraBuildDependencies",
725
+ "extra_build_variables": "extraBuildVariables",
726
+ "extra_index_url": "extraIndexUrl",
727
+ "find_links": "findLinks",
728
+ "fork_strategy": "forkStrategy",
729
+ "generate_hashes": "generateHashes",
730
+ "group": "group",
731
+ "index_strategy": "indexStrategy",
732
+ "index_url": "indexUrl",
733
+ "keyring_provider": "keyringProvider",
734
+ "link_mode": "linkMode",
735
+ "no_annotate": "noAnnotate",
736
+ "no_binary": "noBinary",
737
+ "no_build": "noBuild",
738
+ "no_build_isolation": "noBuildIsolation",
739
+ "no_build_isolation_package": "noBuildIsolationPackage",
740
+ "no_deps": "noDeps",
741
+ "no_emit_package": "noEmitPackage",
742
+ "no_extra": "noExtra",
743
+ "no_header": "noHeader",
744
+ "no_index": "noIndex",
745
+ "no_sources": "noSources",
746
+ "no_strip_extras": "noStripExtras",
747
+ "no_strip_markers": "noStripMarkers",
748
+ "only_binary": "onlyBinary",
749
+ "output_file": "outputFile",
750
+ "prefix": "prefix",
751
+ "prerelease": "prerelease",
752
+ "python": "python",
753
+ "python_platform": "pythonPlatform",
754
+ "python_version": "pythonVersion",
755
+ "reinstall": "reinstall",
756
+ "reinstall_package": "reinstallPackage",
757
+ "require_hashes": "requireHashes",
758
+ "resolution": "resolution",
759
+ "strict": "strict",
760
+ "system": "system",
761
+ "target": "target",
762
+ "torch_backend": "torchBackend",
763
+ "universal": "universal",
764
+ "upgrade": "upgrade",
765
+ "upgrade_package": "upgradePackage",
766
+ "verify_hashes": "verifyHashes",
767
+ },
768
+ )
769
+ class PipOptions:
770
+ def __init__(
771
+ self,
772
+ *,
773
+ all_extras: typing.Optional[builtins.bool] = None,
774
+ allow_empty_requirements: typing.Optional[builtins.bool] = None,
775
+ annotation_style: typing.Optional[builtins.str] = None,
776
+ break_system_packages: typing.Optional[builtins.bool] = None,
777
+ compile_bytecode: typing.Optional[builtins.bool] = None,
778
+ config_settings: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
779
+ config_settings_package: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]] = None,
780
+ custom_compile_command: typing.Optional[builtins.str] = None,
781
+ dependency_metadata: typing.Optional[typing.Sequence[typing.Union["StaticMetadata", typing.Dict[builtins.str, typing.Any]]]] = None,
782
+ emit_build_options: typing.Optional[builtins.bool] = None,
783
+ emit_find_links: typing.Optional[builtins.bool] = None,
784
+ emit_index_annotation: typing.Optional[builtins.bool] = None,
785
+ emit_index_url: typing.Optional[builtins.bool] = None,
786
+ emit_marker_expression: typing.Optional[builtins.bool] = None,
787
+ exclude_newer: typing.Optional[builtins.str] = None,
788
+ exclude_newer_package: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
789
+ extra: typing.Optional[typing.Sequence[builtins.str]] = None,
790
+ extra_build_dependencies: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[typing.Any]]] = None,
791
+ extra_build_variables: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]] = None,
792
+ extra_index_url: typing.Optional[typing.Sequence[builtins.str]] = None,
793
+ find_links: typing.Optional[typing.Sequence[builtins.str]] = None,
794
+ fork_strategy: typing.Optional[builtins.str] = None,
795
+ generate_hashes: typing.Optional[builtins.bool] = None,
796
+ group: typing.Optional[typing.Sequence[typing.Union[PipGroupName, typing.Dict[builtins.str, typing.Any]]]] = None,
797
+ index_strategy: typing.Optional[builtins.str] = None,
798
+ index_url: typing.Optional[builtins.str] = None,
799
+ keyring_provider: typing.Optional[builtins.str] = None,
800
+ link_mode: typing.Optional[builtins.str] = None,
801
+ no_annotate: typing.Optional[builtins.bool] = None,
802
+ no_binary: typing.Optional[typing.Sequence[builtins.str]] = None,
803
+ no_build: typing.Optional[builtins.bool] = None,
804
+ no_build_isolation: typing.Optional[builtins.bool] = None,
805
+ no_build_isolation_package: typing.Optional[typing.Sequence[builtins.str]] = None,
806
+ no_deps: typing.Optional[builtins.bool] = None,
807
+ no_emit_package: typing.Optional[typing.Sequence[builtins.str]] = None,
808
+ no_extra: typing.Optional[typing.Sequence[builtins.str]] = None,
809
+ no_header: typing.Optional[builtins.bool] = None,
810
+ no_index: typing.Optional[builtins.bool] = None,
811
+ no_sources: typing.Optional[builtins.bool] = None,
812
+ no_strip_extras: typing.Optional[builtins.bool] = None,
813
+ no_strip_markers: typing.Optional[builtins.bool] = None,
814
+ only_binary: typing.Optional[typing.Sequence[builtins.str]] = None,
815
+ output_file: typing.Optional[builtins.str] = None,
816
+ prefix: typing.Optional[builtins.str] = None,
817
+ prerelease: typing.Optional[builtins.str] = None,
818
+ python: typing.Optional[builtins.str] = None,
819
+ python_platform: typing.Optional[builtins.str] = None,
820
+ python_version: typing.Optional[builtins.str] = None,
821
+ reinstall: typing.Optional[builtins.bool] = None,
822
+ reinstall_package: typing.Optional[typing.Sequence[builtins.str]] = None,
823
+ require_hashes: typing.Optional[builtins.bool] = None,
824
+ resolution: typing.Optional[builtins.str] = None,
825
+ strict: typing.Optional[builtins.bool] = None,
826
+ system: typing.Optional[builtins.bool] = None,
827
+ target: typing.Optional[builtins.str] = None,
828
+ torch_backend: typing.Optional[builtins.str] = None,
829
+ universal: typing.Optional[builtins.bool] = None,
830
+ upgrade: typing.Optional[builtins.bool] = None,
831
+ upgrade_package: typing.Optional[typing.Sequence[builtins.str]] = None,
832
+ verify_hashes: typing.Optional[builtins.bool] = None,
833
+ ) -> None:
834
+ '''(experimental) Settings that are specific to the ``uv pip`` command-line interface.
835
+
836
+ These values will be ignored when running commands outside the ``uv pip`` namespace (e.g.,
837
+ ``uv lock``, ``uvx``).
838
+
839
+ :param all_extras: (experimental) Include all optional dependencies. Only applies to ``pyproject.toml``, ``setup.py``, and ``setup.cfg`` sources.
840
+ :param allow_empty_requirements: (experimental) Allow ``uv pip sync`` with empty requirements, which will clear the environment of all packages.
841
+ :param annotation_style: (experimental) The style of the annotation comments included in the output file, used to indicate the source of each package.
842
+ :param break_system_packages: (experimental) Allow uv to modify an ``EXTERNALLY-MANAGED`` Python installation. WARNING: ``--break-system-packages`` is intended for use in continuous integration (CI) environments, when installing into Python installations that are managed by an external package manager, like ``apt``. It should be used with caution, as such Python installations explicitly recommend against modifications by other package managers (like uv or pip).
843
+ :param compile_bytecode: (experimental) Compile Python files to bytecode after installation. By default, uv does not compile Python (``.py``) files to bytecode (``__pycache__/*.pyc``); instead, compilation is performed lazily the first time a module is imported. For use-cases in which start time is critical, such as CLI applications and Docker containers, this option can be enabled to trade longer installation times for faster start times. When enabled, uv will process the entire site-packages directory (including packages that are not being modified by the current operation) for consistency. Like pip, it will also ignore errors.
844
+ :param config_settings: (experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend, specified as ``KEY=VALUE`` pairs.
845
+ :param config_settings_package: (experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend for specific packages, specified as ``KEY=VALUE`` pairs.
846
+ :param custom_compile_command: (experimental) The header comment to include at the top of the output file generated by ``uv pip compile``. Used to reflect custom build scripts and commands that wrap ``uv pip compile``.
847
+ :param dependency_metadata: (experimental) Pre-defined static metadata for dependencies of the project (direct or transitive). When provided, enables the resolver to use the specified metadata instead of querying the registry or building the relevant package from source. Metadata should be provided in adherence with the `Metadata 2.3 <https://packaging.python.org/en/latest/specifications/core-metadata/>`_ standard, though only the following fields are respected: - ``name``: The name of the package. - (Optional) ``version``: The version of the package. If omitted, the metadata will be applied to all versions of the package. - (Optional) ``requires-dist``: The dependencies of the package (e.g., ``werkzeug>=0.14``). - (Optional) ``requires-python``: The Python version required by the package (e.g., ``>=3.10``). - (Optional) ``provides-extra``: The extras provided by the package.
848
+ :param emit_build_options: (experimental) Include ``--no-binary`` and ``--only-binary`` entries in the output file generated by ``uv pip compile``.
849
+ :param emit_find_links: (experimental) Include ``--find-links`` entries in the output file generated by ``uv pip compile``.
850
+ :param emit_index_annotation: (experimental) Include comment annotations indicating the index used to resolve each package (e.g., ``# from https://pypi.org/simple``).
851
+ :param emit_index_url: (experimental) Include ``--index-url`` and ``--extra-index-url`` entries in the output file generated by ``uv pip compile``.
852
+ :param emit_marker_expression: (experimental) Whether to emit a marker string indicating the conditions under which the set of pinned dependencies is valid. The pinned dependencies may be valid even when the marker expression is false, but when the expression is true, the requirements are known to be correct.
853
+ :param exclude_newer: (experimental) Limit candidate packages to those that were uploaded prior to a given point in time. Accepts a superset of `RFC 3339 <https://www.rfc-editor.org/rfc/rfc3339.html>`_ (e.g., ``2006-12-02T02:07:43Z``). A full timestamp is required to ensure that the resolver will behave consistently across timezones.
854
+ :param exclude_newer_package: (experimental) Limit candidate packages for specific packages to those that were uploaded prior to the given date. Accepts package-date pairs in a dictionary format.
855
+ :param extra: (experimental) Include optional dependencies from the specified extra; may be provided more than once. Only applies to ``pyproject.toml``, ``setup.py``, and ``setup.cfg`` sources.
856
+ :param extra_build_dependencies: (experimental) Additional build dependencies for packages. This allows extending the PEP 517 build environment for the project's dependencies with additional packages. This is useful for packages that assume the presence of packages like ``pip``, and do not declare them as build dependencies.
857
+ :param extra_build_variables: (experimental) Extra environment variables to set when building certain packages. Environment variables will be added to the environment when building the specified packages.
858
+ :param extra_index_url: (experimental) Extra URLs of package indexes to use, in addition to ``--index-url``. Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_ (the simple repository API), or a local directory laid out in the same format. All indexes provided via this flag take priority over the index specified by ```index_url`` <#index-url>`_. When multiple indexes are provided, earlier values take priority. To control uv's resolution strategy when multiple indexes are present, see ```index_strategy`` <#index-strategy>`_.
859
+ :param find_links: (experimental) Locations to search for candidate distributions, in addition to those found in the registry indexes. If a path, the target must be a directory that contains packages as wheel files (``.whl``) or source distributions (e.g., ``.tar.gz`` or ``.zip``) at the top level. If a URL, the page must contain a flat list of links to package files adhering to the formats described above.
860
+ :param fork_strategy: (experimental) The strategy to use when selecting multiple versions of a given package across Python versions and platforms. By default, uv will optimize for selecting the latest version of each package for each supported Python version (``requires-python``), while minimizing the number of selected versions across platforms. Under ``fewest``, uv will minimize the number of selected versions for each package, preferring older versions that are compatible with a wider range of supported Python versions or platforms.
861
+ :param generate_hashes: (experimental) Include distribution hashes in the output file.
862
+ :param group: (experimental) Include the following dependency groups.
863
+ :param index_strategy: (experimental) The strategy to use when resolving against multiple index URLs. By default, uv will stop at the first index on which a given package is available, and limit resolutions to those present on that first index (``first-index``). This prevents "dependency confusion" attacks, whereby an attacker can upload a malicious package under the same name to an alternate index.
864
+ :param index_url: (experimental) The URL of the Python package index (by default: `https://pypi.org/simple <https://pypi.org/simple>`_). Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_ (the simple repository API), or a local directory laid out in the same format. The index provided by this setting is given lower priority than any indexes specified via ```extra_index_url`` <#extra-index-url>`_.
865
+ :param keyring_provider: (experimental) Attempt to use ``keyring`` for authentication for index URLs. At present, only ``--keyring-provider subprocess`` is supported, which configures uv to use the ``keyring`` CLI to handle authentication.
866
+ :param link_mode: (experimental) The method to use when installing packages from the global cache. Defaults to ``clone`` (also known as Copy-on-Write) on macOS, and ``hardlink`` on Linux and Windows. WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (``uv cache clean``) will break all installed packages by way of removing the underlying source files. Use symlinks with caution. Default: clone``(also known as Copy-on-Write) on macOS, and``hardlink` on Linux and
867
+ :param no_annotate: (experimental) Exclude comment annotations indicating the source of each package from the output file generated by ``uv pip compile``.
868
+ :param no_binary: (experimental) Don't install pre-built wheels. The given packages will be built and installed from source. The resolver will still use pre-built wheels to extract package metadata, if available. Multiple packages may be provided. Disable binaries for all packages with ``:all:``. Clear previously specified packages with ``:none:``.
869
+ :param no_build: (experimental) Don't build source distributions. When enabled, resolving will not run arbitrary Python code. The cached wheels of already-built source distributions will be reused, but operations that require building distributions will exit with an error. Alias for ``--only-binary :all:``.
870
+ :param no_build_isolation: (experimental) Disable isolation when building source distributions. Assumes that build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_ are already installed.
871
+ :param no_build_isolation_package: (experimental) Disable isolation when building source distributions for a specific package. Assumes that the packages' build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_ are already installed.
872
+ :param no_deps: (experimental) Ignore package dependencies, instead only add those packages explicitly listed on the command line to the resulting requirements file.
873
+ :param no_emit_package: (experimental) Specify a package to omit from the output resolution. Its dependencies will still be included in the resolution. Equivalent to pip-compile's ``--unsafe-package`` option.
874
+ :param no_extra: (experimental) Exclude the specified optional dependencies if ``all-extras`` is supplied.
875
+ :param no_header: (experimental) Exclude the comment header at the top of output file generated by ``uv pip compile``.
876
+ :param no_index: (experimental) Ignore all registry indexes (e.g., PyPI), instead relying on direct URL dependencies and those provided via ``--find-links``.
877
+ :param no_sources: (experimental) Ignore the ``tool.uv.sources`` table when resolving dependencies. Used to lock against the standards-compliant, publishable package metadata, as opposed to using any local or Git sources.
878
+ :param no_strip_extras: (experimental) Include extras in the output file. By default, uv strips extras, as any packages pulled in by the extras are already included as dependencies in the output file directly. Further, output files generated with ``--no-strip-extras`` cannot be used as constraints files in ``install`` and ``sync`` invocations.
879
+ :param no_strip_markers: (experimental) Include environment markers in the output file generated by ``uv pip compile``. By default, uv strips environment markers, as the resolution generated by ``compile`` is only guaranteed to be correct for the target environment.
880
+ :param only_binary: (experimental) Only use pre-built wheels; don't build source distributions. When enabled, resolving will not run code from the given packages. The cached wheels of already-built source distributions will be reused, but operations that require building distributions will exit with an error. Multiple packages may be provided. Disable binaries for all packages with ``:all:``. Clear previously specified packages with ``:none:``.
881
+ :param output_file: (experimental) Write the requirements generated by ``uv pip compile`` to the given ``requirements.txt`` file. If the file already exists, the existing versions will be preferred when resolving dependencies, unless ``--upgrade`` is also specified.
882
+ :param prefix: (experimental) Install packages into ``lib``, ``bin``, and other top-level folders under the specified directory, as if a virtual environment were present at that location. In general, prefer the use of ``--python`` to install into an alternate environment, as scripts and other artifacts installed via ``--prefix`` will reference the installing interpreter, rather than any interpreter added to the ``--prefix`` directory, rendering them non-portable.
883
+ :param prerelease: (experimental) The strategy to use when considering pre-release versions. By default, uv will accept pre-releases for packages that *only* publish pre-releases, along with first-party requirements that contain an explicit pre-release marker in the declared specifiers (``if-necessary-or-explicit``).
884
+ :param python: (experimental) The Python interpreter into which packages should be installed. By default, uv installs into the virtual environment in the current working directory or any parent directory. The ``--python`` option allows you to specify a different interpreter, which is intended for use in continuous integration (CI) environments or other automated workflows. Supported formats: - ``3.10`` looks for an installed Python 3.10 in the registry on Windows (see ``py --list-paths``), or ``python3.10`` on Linux and macOS. - ``python3.10`` or ``python.exe`` looks for a binary with the given name in ``PATH``. - ``/home/ferris/.local/bin/python3.10`` uses the exact Python at the given path.
885
+ :param python_platform: (experimental) The platform for which requirements should be resolved. Represented as a "target triple", a string that describes the target platform in terms of its CPU, vendor, and operating system name, like ``x86_64-unknown-linux-gnu`` or ``aarch64-apple-darwin``.
886
+ :param python_version: (experimental) The minimum Python version that should be supported by the resolved requirements (e.g., ``3.8`` or ``3.8.17``). If a patch version is omitted, the minimum patch version is assumed. For example, ``3.8`` is mapped to ``3.8.0``.
887
+ :param reinstall: (experimental) Reinstall all packages, regardless of whether they're already installed. Implies ``refresh``.
888
+ :param reinstall_package: (experimental) Reinstall a specific package, regardless of whether it's already installed. Implies ``refresh-package``.
889
+ :param require_hashes: (experimental) Require a matching hash for each requirement. Hash-checking mode is all or nothing. If enabled, *all* requirements must be provided with a corresponding hash or set of hashes. Additionally, if enabled, *all* requirements must either be pinned to exact versions (e.g., ``==1.0.0``), or be specified via direct URL. Hash-checking mode introduces a number of additional constraints: - Git dependencies are not supported. - Editable installations are not supported. - Local dependencies are not supported, unless they point to a specific wheel (``.whl``) or source archive (``.zip``, ``.tar.gz``), as opposed to a directory.
890
+ :param resolution: (experimental) The strategy to use when selecting between the different compatible versions for a given package requirement. By default, uv will use the latest compatible version of each package (``highest``).
891
+ :param strict: (experimental) Validate the Python environment, to detect packages with missing dependencies and other issues.
892
+ :param system: (experimental) Install packages into the system Python environment. By default, uv installs into the virtual environment in the current working directory or any parent directory. The ``--system`` option instructs uv to instead use the first Python found in the system ``PATH``. WARNING: ``--system`` is intended for use in continuous integration (CI) environments and should be used with caution, as it can modify the system Python installation.
893
+ :param target: (experimental) Install packages into the specified directory, rather than into the virtual or system Python environment. The packages will be installed at the top-level of the directory.
894
+ :param torch_backend: (experimental) The backend to use when fetching packages in the PyTorch ecosystem. When set, uv will ignore the configured index URLs for packages in the PyTorch ecosystem, and will instead use the defined backend. For example, when set to ``cpu``, uv will use the CPU-only PyTorch index; when set to ``cu126``, uv will use the PyTorch index for CUDA 12.6. The ``auto`` mode will attempt to detect the appropriate PyTorch index based on the currently installed CUDA drivers. This option is in preview and may change in any future release.
895
+ :param universal: (experimental) Perform a universal resolution, attempting to generate a single ``requirements.txt`` output file that is compatible with all operating systems, architectures, and Python implementations. In universal mode, the current Python version (or user-provided ``--python-version``) will be treated as a lower bound. For example, ``--universal --python-version 3.7`` would produce a universal resolution for Python 3.7 and later.
896
+ :param upgrade: (experimental) Allow package upgrades, ignoring pinned versions in any existing output file.
897
+ :param upgrade_package: (experimental) Allow upgrades for a specific package, ignoring pinned versions in any existing output file. Accepts both standalone package names (``ruff``) and version specifiers (``ruff<0.5.0``).
898
+ :param verify_hashes: (experimental) Validate any hashes provided in the requirements file. Unlike ``--require-hashes``, ``--verify-hashes`` does not require that all requirements have hashes; instead, it will limit itself to verifying the hashes of those requirements that do include them.
899
+
900
+ :stability: experimental
901
+ :schema: PipOptions
902
+ '''
903
+ if __debug__:
904
+ type_hints = typing.get_type_hints(_typecheckingstub__945d6160c5542e9b39ed19c707a1b0e7ee5ea909cc55041a32f162098f3853e7)
905
+ check_type(argname="argument all_extras", value=all_extras, expected_type=type_hints["all_extras"])
906
+ check_type(argname="argument allow_empty_requirements", value=allow_empty_requirements, expected_type=type_hints["allow_empty_requirements"])
907
+ check_type(argname="argument annotation_style", value=annotation_style, expected_type=type_hints["annotation_style"])
908
+ check_type(argname="argument break_system_packages", value=break_system_packages, expected_type=type_hints["break_system_packages"])
909
+ check_type(argname="argument compile_bytecode", value=compile_bytecode, expected_type=type_hints["compile_bytecode"])
910
+ check_type(argname="argument config_settings", value=config_settings, expected_type=type_hints["config_settings"])
911
+ check_type(argname="argument config_settings_package", value=config_settings_package, expected_type=type_hints["config_settings_package"])
912
+ check_type(argname="argument custom_compile_command", value=custom_compile_command, expected_type=type_hints["custom_compile_command"])
913
+ check_type(argname="argument dependency_metadata", value=dependency_metadata, expected_type=type_hints["dependency_metadata"])
914
+ check_type(argname="argument emit_build_options", value=emit_build_options, expected_type=type_hints["emit_build_options"])
915
+ check_type(argname="argument emit_find_links", value=emit_find_links, expected_type=type_hints["emit_find_links"])
916
+ check_type(argname="argument emit_index_annotation", value=emit_index_annotation, expected_type=type_hints["emit_index_annotation"])
917
+ check_type(argname="argument emit_index_url", value=emit_index_url, expected_type=type_hints["emit_index_url"])
918
+ check_type(argname="argument emit_marker_expression", value=emit_marker_expression, expected_type=type_hints["emit_marker_expression"])
919
+ check_type(argname="argument exclude_newer", value=exclude_newer, expected_type=type_hints["exclude_newer"])
920
+ check_type(argname="argument exclude_newer_package", value=exclude_newer_package, expected_type=type_hints["exclude_newer_package"])
921
+ check_type(argname="argument extra", value=extra, expected_type=type_hints["extra"])
922
+ check_type(argname="argument extra_build_dependencies", value=extra_build_dependencies, expected_type=type_hints["extra_build_dependencies"])
923
+ check_type(argname="argument extra_build_variables", value=extra_build_variables, expected_type=type_hints["extra_build_variables"])
924
+ check_type(argname="argument extra_index_url", value=extra_index_url, expected_type=type_hints["extra_index_url"])
925
+ check_type(argname="argument find_links", value=find_links, expected_type=type_hints["find_links"])
926
+ check_type(argname="argument fork_strategy", value=fork_strategy, expected_type=type_hints["fork_strategy"])
927
+ check_type(argname="argument generate_hashes", value=generate_hashes, expected_type=type_hints["generate_hashes"])
928
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
929
+ check_type(argname="argument index_strategy", value=index_strategy, expected_type=type_hints["index_strategy"])
930
+ check_type(argname="argument index_url", value=index_url, expected_type=type_hints["index_url"])
931
+ check_type(argname="argument keyring_provider", value=keyring_provider, expected_type=type_hints["keyring_provider"])
932
+ check_type(argname="argument link_mode", value=link_mode, expected_type=type_hints["link_mode"])
933
+ check_type(argname="argument no_annotate", value=no_annotate, expected_type=type_hints["no_annotate"])
934
+ check_type(argname="argument no_binary", value=no_binary, expected_type=type_hints["no_binary"])
935
+ check_type(argname="argument no_build", value=no_build, expected_type=type_hints["no_build"])
936
+ check_type(argname="argument no_build_isolation", value=no_build_isolation, expected_type=type_hints["no_build_isolation"])
937
+ check_type(argname="argument no_build_isolation_package", value=no_build_isolation_package, expected_type=type_hints["no_build_isolation_package"])
938
+ check_type(argname="argument no_deps", value=no_deps, expected_type=type_hints["no_deps"])
939
+ check_type(argname="argument no_emit_package", value=no_emit_package, expected_type=type_hints["no_emit_package"])
940
+ check_type(argname="argument no_extra", value=no_extra, expected_type=type_hints["no_extra"])
941
+ check_type(argname="argument no_header", value=no_header, expected_type=type_hints["no_header"])
942
+ check_type(argname="argument no_index", value=no_index, expected_type=type_hints["no_index"])
943
+ check_type(argname="argument no_sources", value=no_sources, expected_type=type_hints["no_sources"])
944
+ check_type(argname="argument no_strip_extras", value=no_strip_extras, expected_type=type_hints["no_strip_extras"])
945
+ check_type(argname="argument no_strip_markers", value=no_strip_markers, expected_type=type_hints["no_strip_markers"])
946
+ check_type(argname="argument only_binary", value=only_binary, expected_type=type_hints["only_binary"])
947
+ check_type(argname="argument output_file", value=output_file, expected_type=type_hints["output_file"])
948
+ check_type(argname="argument prefix", value=prefix, expected_type=type_hints["prefix"])
949
+ check_type(argname="argument prerelease", value=prerelease, expected_type=type_hints["prerelease"])
950
+ check_type(argname="argument python", value=python, expected_type=type_hints["python"])
951
+ check_type(argname="argument python_platform", value=python_platform, expected_type=type_hints["python_platform"])
952
+ check_type(argname="argument python_version", value=python_version, expected_type=type_hints["python_version"])
953
+ check_type(argname="argument reinstall", value=reinstall, expected_type=type_hints["reinstall"])
954
+ check_type(argname="argument reinstall_package", value=reinstall_package, expected_type=type_hints["reinstall_package"])
955
+ check_type(argname="argument require_hashes", value=require_hashes, expected_type=type_hints["require_hashes"])
956
+ check_type(argname="argument resolution", value=resolution, expected_type=type_hints["resolution"])
957
+ check_type(argname="argument strict", value=strict, expected_type=type_hints["strict"])
958
+ check_type(argname="argument system", value=system, expected_type=type_hints["system"])
959
+ check_type(argname="argument target", value=target, expected_type=type_hints["target"])
960
+ check_type(argname="argument torch_backend", value=torch_backend, expected_type=type_hints["torch_backend"])
961
+ check_type(argname="argument universal", value=universal, expected_type=type_hints["universal"])
962
+ check_type(argname="argument upgrade", value=upgrade, expected_type=type_hints["upgrade"])
963
+ check_type(argname="argument upgrade_package", value=upgrade_package, expected_type=type_hints["upgrade_package"])
964
+ check_type(argname="argument verify_hashes", value=verify_hashes, expected_type=type_hints["verify_hashes"])
965
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
966
+ if all_extras is not None:
967
+ self._values["all_extras"] = all_extras
968
+ if allow_empty_requirements is not None:
969
+ self._values["allow_empty_requirements"] = allow_empty_requirements
970
+ if annotation_style is not None:
971
+ self._values["annotation_style"] = annotation_style
972
+ if break_system_packages is not None:
973
+ self._values["break_system_packages"] = break_system_packages
974
+ if compile_bytecode is not None:
975
+ self._values["compile_bytecode"] = compile_bytecode
976
+ if config_settings is not None:
977
+ self._values["config_settings"] = config_settings
978
+ if config_settings_package is not None:
979
+ self._values["config_settings_package"] = config_settings_package
980
+ if custom_compile_command is not None:
981
+ self._values["custom_compile_command"] = custom_compile_command
982
+ if dependency_metadata is not None:
983
+ self._values["dependency_metadata"] = dependency_metadata
984
+ if emit_build_options is not None:
985
+ self._values["emit_build_options"] = emit_build_options
986
+ if emit_find_links is not None:
987
+ self._values["emit_find_links"] = emit_find_links
988
+ if emit_index_annotation is not None:
989
+ self._values["emit_index_annotation"] = emit_index_annotation
990
+ if emit_index_url is not None:
991
+ self._values["emit_index_url"] = emit_index_url
992
+ if emit_marker_expression is not None:
993
+ self._values["emit_marker_expression"] = emit_marker_expression
994
+ if exclude_newer is not None:
995
+ self._values["exclude_newer"] = exclude_newer
996
+ if exclude_newer_package is not None:
997
+ self._values["exclude_newer_package"] = exclude_newer_package
998
+ if extra is not None:
999
+ self._values["extra"] = extra
1000
+ if extra_build_dependencies is not None:
1001
+ self._values["extra_build_dependencies"] = extra_build_dependencies
1002
+ if extra_build_variables is not None:
1003
+ self._values["extra_build_variables"] = extra_build_variables
1004
+ if extra_index_url is not None:
1005
+ self._values["extra_index_url"] = extra_index_url
1006
+ if find_links is not None:
1007
+ self._values["find_links"] = find_links
1008
+ if fork_strategy is not None:
1009
+ self._values["fork_strategy"] = fork_strategy
1010
+ if generate_hashes is not None:
1011
+ self._values["generate_hashes"] = generate_hashes
1012
+ if group is not None:
1013
+ self._values["group"] = group
1014
+ if index_strategy is not None:
1015
+ self._values["index_strategy"] = index_strategy
1016
+ if index_url is not None:
1017
+ self._values["index_url"] = index_url
1018
+ if keyring_provider is not None:
1019
+ self._values["keyring_provider"] = keyring_provider
1020
+ if link_mode is not None:
1021
+ self._values["link_mode"] = link_mode
1022
+ if no_annotate is not None:
1023
+ self._values["no_annotate"] = no_annotate
1024
+ if no_binary is not None:
1025
+ self._values["no_binary"] = no_binary
1026
+ if no_build is not None:
1027
+ self._values["no_build"] = no_build
1028
+ if no_build_isolation is not None:
1029
+ self._values["no_build_isolation"] = no_build_isolation
1030
+ if no_build_isolation_package is not None:
1031
+ self._values["no_build_isolation_package"] = no_build_isolation_package
1032
+ if no_deps is not None:
1033
+ self._values["no_deps"] = no_deps
1034
+ if no_emit_package is not None:
1035
+ self._values["no_emit_package"] = no_emit_package
1036
+ if no_extra is not None:
1037
+ self._values["no_extra"] = no_extra
1038
+ if no_header is not None:
1039
+ self._values["no_header"] = no_header
1040
+ if no_index is not None:
1041
+ self._values["no_index"] = no_index
1042
+ if no_sources is not None:
1043
+ self._values["no_sources"] = no_sources
1044
+ if no_strip_extras is not None:
1045
+ self._values["no_strip_extras"] = no_strip_extras
1046
+ if no_strip_markers is not None:
1047
+ self._values["no_strip_markers"] = no_strip_markers
1048
+ if only_binary is not None:
1049
+ self._values["only_binary"] = only_binary
1050
+ if output_file is not None:
1051
+ self._values["output_file"] = output_file
1052
+ if prefix is not None:
1053
+ self._values["prefix"] = prefix
1054
+ if prerelease is not None:
1055
+ self._values["prerelease"] = prerelease
1056
+ if python is not None:
1057
+ self._values["python"] = python
1058
+ if python_platform is not None:
1059
+ self._values["python_platform"] = python_platform
1060
+ if python_version is not None:
1061
+ self._values["python_version"] = python_version
1062
+ if reinstall is not None:
1063
+ self._values["reinstall"] = reinstall
1064
+ if reinstall_package is not None:
1065
+ self._values["reinstall_package"] = reinstall_package
1066
+ if require_hashes is not None:
1067
+ self._values["require_hashes"] = require_hashes
1068
+ if resolution is not None:
1069
+ self._values["resolution"] = resolution
1070
+ if strict is not None:
1071
+ self._values["strict"] = strict
1072
+ if system is not None:
1073
+ self._values["system"] = system
1074
+ if target is not None:
1075
+ self._values["target"] = target
1076
+ if torch_backend is not None:
1077
+ self._values["torch_backend"] = torch_backend
1078
+ if universal is not None:
1079
+ self._values["universal"] = universal
1080
+ if upgrade is not None:
1081
+ self._values["upgrade"] = upgrade
1082
+ if upgrade_package is not None:
1083
+ self._values["upgrade_package"] = upgrade_package
1084
+ if verify_hashes is not None:
1085
+ self._values["verify_hashes"] = verify_hashes
1086
+
1087
+ @builtins.property
1088
+ def all_extras(self) -> typing.Optional[builtins.bool]:
1089
+ '''(experimental) Include all optional dependencies.
1090
+
1091
+ Only applies to ``pyproject.toml``, ``setup.py``, and ``setup.cfg`` sources.
1092
+
1093
+ :stability: experimental
1094
+ :schema: PipOptions#all-extras
1095
+ '''
1096
+ result = self._values.get("all_extras")
1097
+ return typing.cast(typing.Optional[builtins.bool], result)
1098
+
1099
+ @builtins.property
1100
+ def allow_empty_requirements(self) -> typing.Optional[builtins.bool]:
1101
+ '''(experimental) Allow ``uv pip sync`` with empty requirements, which will clear the environment of all packages.
1102
+
1103
+ :stability: experimental
1104
+ :schema: PipOptions#allow-empty-requirements
1105
+ '''
1106
+ result = self._values.get("allow_empty_requirements")
1107
+ return typing.cast(typing.Optional[builtins.bool], result)
1108
+
1109
+ @builtins.property
1110
+ def annotation_style(self) -> typing.Optional[builtins.str]:
1111
+ '''(experimental) The style of the annotation comments included in the output file, used to indicate the source of each package.
1112
+
1113
+ :stability: experimental
1114
+ :schema: PipOptions#annotation-style
1115
+ '''
1116
+ result = self._values.get("annotation_style")
1117
+ return typing.cast(typing.Optional[builtins.str], result)
1118
+
1119
+ @builtins.property
1120
+ def break_system_packages(self) -> typing.Optional[builtins.bool]:
1121
+ '''(experimental) Allow uv to modify an ``EXTERNALLY-MANAGED`` Python installation.
1122
+
1123
+ WARNING: ``--break-system-packages`` is intended for use in continuous integration (CI)
1124
+ environments, when installing into Python installations that are managed by an external
1125
+ package manager, like ``apt``. It should be used with caution, as such Python installations
1126
+ explicitly recommend against modifications by other package managers (like uv or pip).
1127
+
1128
+ :stability: experimental
1129
+ :schema: PipOptions#break-system-packages
1130
+ '''
1131
+ result = self._values.get("break_system_packages")
1132
+ return typing.cast(typing.Optional[builtins.bool], result)
1133
+
1134
+ @builtins.property
1135
+ def compile_bytecode(self) -> typing.Optional[builtins.bool]:
1136
+ '''(experimental) Compile Python files to bytecode after installation.
1137
+
1138
+ By default, uv does not compile Python (``.py``) files to bytecode (``__pycache__/*.pyc``);
1139
+ instead, compilation is performed lazily the first time a module is imported. For use-cases
1140
+ in which start time is critical, such as CLI applications and Docker containers, this option
1141
+ can be enabled to trade longer installation times for faster start times.
1142
+
1143
+ When enabled, uv will process the entire site-packages directory (including packages that
1144
+ are not being modified by the current operation) for consistency. Like pip, it will also
1145
+ ignore errors.
1146
+
1147
+ :stability: experimental
1148
+ :schema: PipOptions#compile-bytecode
1149
+ '''
1150
+ result = self._values.get("compile_bytecode")
1151
+ return typing.cast(typing.Optional[builtins.bool], result)
1152
+
1153
+ @builtins.property
1154
+ def config_settings(
1155
+ self,
1156
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Any]]:
1157
+ '''(experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend, specified as ``KEY=VALUE`` pairs.
1158
+
1159
+ :stability: experimental
1160
+ :schema: PipOptions#config-settings
1161
+ '''
1162
+ result = self._values.get("config_settings")
1163
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Any]], result)
1164
+
1165
+ @builtins.property
1166
+ def config_settings_package(
1167
+ self,
1168
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]]:
1169
+ '''(experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend for specific packages, specified as ``KEY=VALUE`` pairs.
1170
+
1171
+ :stability: experimental
1172
+ :schema: PipOptions#config-settings-package
1173
+ '''
1174
+ result = self._values.get("config_settings_package")
1175
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]], result)
1176
+
1177
+ @builtins.property
1178
+ def custom_compile_command(self) -> typing.Optional[builtins.str]:
1179
+ '''(experimental) The header comment to include at the top of the output file generated by ``uv pip compile``.
1180
+
1181
+ Used to reflect custom build scripts and commands that wrap ``uv pip compile``.
1182
+
1183
+ :stability: experimental
1184
+ :schema: PipOptions#custom-compile-command
1185
+ '''
1186
+ result = self._values.get("custom_compile_command")
1187
+ return typing.cast(typing.Optional[builtins.str], result)
1188
+
1189
+ @builtins.property
1190
+ def dependency_metadata(self) -> typing.Optional[typing.List["StaticMetadata"]]:
1191
+ '''(experimental) Pre-defined static metadata for dependencies of the project (direct or transitive).
1192
+
1193
+ When
1194
+ provided, enables the resolver to use the specified metadata instead of querying the
1195
+ registry or building the relevant package from source.
1196
+
1197
+ Metadata should be provided in adherence with the `Metadata 2.3 <https://packaging.python.org/en/latest/specifications/core-metadata/>`_
1198
+ standard, though only the following fields are respected:
1199
+
1200
+ - ``name``: The name of the package.
1201
+ - (Optional) ``version``: The version of the package. If omitted, the metadata will be applied
1202
+ to all versions of the package.
1203
+ - (Optional) ``requires-dist``: The dependencies of the package (e.g., ``werkzeug>=0.14``).
1204
+ - (Optional) ``requires-python``: The Python version required by the package (e.g., ``>=3.10``).
1205
+ - (Optional) ``provides-extra``: The extras provided by the package.
1206
+
1207
+ :stability: experimental
1208
+ :schema: PipOptions#dependency-metadata
1209
+ '''
1210
+ result = self._values.get("dependency_metadata")
1211
+ return typing.cast(typing.Optional[typing.List["StaticMetadata"]], result)
1212
+
1213
+ @builtins.property
1214
+ def emit_build_options(self) -> typing.Optional[builtins.bool]:
1215
+ '''(experimental) Include ``--no-binary`` and ``--only-binary`` entries in the output file generated by ``uv pip compile``.
1216
+
1217
+ :stability: experimental
1218
+ :schema: PipOptions#emit-build-options
1219
+ '''
1220
+ result = self._values.get("emit_build_options")
1221
+ return typing.cast(typing.Optional[builtins.bool], result)
1222
+
1223
+ @builtins.property
1224
+ def emit_find_links(self) -> typing.Optional[builtins.bool]:
1225
+ '''(experimental) Include ``--find-links`` entries in the output file generated by ``uv pip compile``.
1226
+
1227
+ :stability: experimental
1228
+ :schema: PipOptions#emit-find-links
1229
+ '''
1230
+ result = self._values.get("emit_find_links")
1231
+ return typing.cast(typing.Optional[builtins.bool], result)
1232
+
1233
+ @builtins.property
1234
+ def emit_index_annotation(self) -> typing.Optional[builtins.bool]:
1235
+ '''(experimental) Include comment annotations indicating the index used to resolve each package (e.g., ``# from https://pypi.org/simple``).
1236
+
1237
+ :stability: experimental
1238
+ :schema: PipOptions#emit-index-annotation
1239
+ '''
1240
+ result = self._values.get("emit_index_annotation")
1241
+ return typing.cast(typing.Optional[builtins.bool], result)
1242
+
1243
+ @builtins.property
1244
+ def emit_index_url(self) -> typing.Optional[builtins.bool]:
1245
+ '''(experimental) Include ``--index-url`` and ``--extra-index-url`` entries in the output file generated by ``uv pip compile``.
1246
+
1247
+ :stability: experimental
1248
+ :schema: PipOptions#emit-index-url
1249
+ '''
1250
+ result = self._values.get("emit_index_url")
1251
+ return typing.cast(typing.Optional[builtins.bool], result)
1252
+
1253
+ @builtins.property
1254
+ def emit_marker_expression(self) -> typing.Optional[builtins.bool]:
1255
+ '''(experimental) Whether to emit a marker string indicating the conditions under which the set of pinned dependencies is valid.
1256
+
1257
+ The pinned dependencies may be valid even when the marker expression is
1258
+ false, but when the expression is true, the requirements are known to
1259
+ be correct.
1260
+
1261
+ :stability: experimental
1262
+ :schema: PipOptions#emit-marker-expression
1263
+ '''
1264
+ result = self._values.get("emit_marker_expression")
1265
+ return typing.cast(typing.Optional[builtins.bool], result)
1266
+
1267
+ @builtins.property
1268
+ def exclude_newer(self) -> typing.Optional[builtins.str]:
1269
+ '''(experimental) Limit candidate packages to those that were uploaded prior to a given point in time.
1270
+
1271
+ Accepts a superset of `RFC 3339 <https://www.rfc-editor.org/rfc/rfc3339.html>`_ (e.g.,
1272
+ ``2006-12-02T02:07:43Z``). A full timestamp is required to ensure that the resolver will
1273
+ behave consistently across timezones.
1274
+
1275
+ :stability: experimental
1276
+ :schema: PipOptions#exclude-newer
1277
+ '''
1278
+ result = self._values.get("exclude_newer")
1279
+ return typing.cast(typing.Optional[builtins.str], result)
1280
+
1281
+ @builtins.property
1282
+ def exclude_newer_package(
1283
+ self,
1284
+ ) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
1285
+ '''(experimental) Limit candidate packages for specific packages to those that were uploaded prior to the given date.
1286
+
1287
+ Accepts package-date pairs in a dictionary format.
1288
+
1289
+ :stability: experimental
1290
+ :schema: PipOptions#exclude-newer-package
1291
+ '''
1292
+ result = self._values.get("exclude_newer_package")
1293
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
1294
+
1295
+ @builtins.property
1296
+ def extra(self) -> typing.Optional[typing.List[builtins.str]]:
1297
+ '''(experimental) Include optional dependencies from the specified extra; may be provided more than once.
1298
+
1299
+ Only applies to ``pyproject.toml``, ``setup.py``, and ``setup.cfg`` sources.
1300
+
1301
+ :stability: experimental
1302
+ :schema: PipOptions#extra
1303
+ '''
1304
+ result = self._values.get("extra")
1305
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1306
+
1307
+ @builtins.property
1308
+ def extra_build_dependencies(
1309
+ self,
1310
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.List[typing.Any]]]:
1311
+ '''(experimental) Additional build dependencies for packages.
1312
+
1313
+ This allows extending the PEP 517 build environment for the project's dependencies with
1314
+ additional packages. This is useful for packages that assume the presence of packages like
1315
+ ``pip``, and do not declare them as build dependencies.
1316
+
1317
+ :stability: experimental
1318
+ :schema: PipOptions#extra-build-dependencies
1319
+ '''
1320
+ result = self._values.get("extra_build_dependencies")
1321
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.List[typing.Any]]], result)
1322
+
1323
+ @builtins.property
1324
+ def extra_build_variables(
1325
+ self,
1326
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]]:
1327
+ '''(experimental) Extra environment variables to set when building certain packages.
1328
+
1329
+ Environment variables will be added to the environment when building the
1330
+ specified packages.
1331
+
1332
+ :stability: experimental
1333
+ :schema: PipOptions#extra-build-variables
1334
+ '''
1335
+ result = self._values.get("extra_build_variables")
1336
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]], result)
1337
+
1338
+ @builtins.property
1339
+ def extra_index_url(self) -> typing.Optional[typing.List[builtins.str]]:
1340
+ '''(experimental) Extra URLs of package indexes to use, in addition to ``--index-url``.
1341
+
1342
+ Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_
1343
+ (the simple repository API), or a local directory laid out in the same format.
1344
+
1345
+ All indexes provided via this flag take priority over the index specified by
1346
+ ```index_url`` <#index-url>`_. When multiple indexes are provided, earlier values take priority.
1347
+
1348
+ To control uv's resolution strategy when multiple indexes are present, see
1349
+ ```index_strategy`` <#index-strategy>`_.
1350
+
1351
+ :stability: experimental
1352
+ :schema: PipOptions#extra-index-url
1353
+ '''
1354
+ result = self._values.get("extra_index_url")
1355
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1356
+
1357
+ @builtins.property
1358
+ def find_links(self) -> typing.Optional[typing.List[builtins.str]]:
1359
+ '''(experimental) Locations to search for candidate distributions, in addition to those found in the registry indexes.
1360
+
1361
+ If a path, the target must be a directory that contains packages as wheel files (``.whl``) or
1362
+ source distributions (e.g., ``.tar.gz`` or ``.zip``) at the top level.
1363
+
1364
+ If a URL, the page must contain a flat list of links to package files adhering to the
1365
+ formats described above.
1366
+
1367
+ :stability: experimental
1368
+ :schema: PipOptions#find-links
1369
+ '''
1370
+ result = self._values.get("find_links")
1371
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1372
+
1373
+ @builtins.property
1374
+ def fork_strategy(self) -> typing.Optional[builtins.str]:
1375
+ '''(experimental) The strategy to use when selecting multiple versions of a given package across Python versions and platforms.
1376
+
1377
+ By default, uv will optimize for selecting the latest version of each package for each
1378
+ supported Python version (``requires-python``), while minimizing the number of selected
1379
+ versions across platforms.
1380
+
1381
+ Under ``fewest``, uv will minimize the number of selected versions for each package,
1382
+ preferring older versions that are compatible with a wider range of supported Python
1383
+ versions or platforms.
1384
+
1385
+ :stability: experimental
1386
+ :schema: PipOptions#fork-strategy
1387
+ '''
1388
+ result = self._values.get("fork_strategy")
1389
+ return typing.cast(typing.Optional[builtins.str], result)
1390
+
1391
+ @builtins.property
1392
+ def generate_hashes(self) -> typing.Optional[builtins.bool]:
1393
+ '''(experimental) Include distribution hashes in the output file.
1394
+
1395
+ :stability: experimental
1396
+ :schema: PipOptions#generate-hashes
1397
+ '''
1398
+ result = self._values.get("generate_hashes")
1399
+ return typing.cast(typing.Optional[builtins.bool], result)
1400
+
1401
+ @builtins.property
1402
+ def group(self) -> typing.Optional[typing.List[PipGroupName]]:
1403
+ '''(experimental) Include the following dependency groups.
1404
+
1405
+ :stability: experimental
1406
+ :schema: PipOptions#group
1407
+ '''
1408
+ result = self._values.get("group")
1409
+ return typing.cast(typing.Optional[typing.List[PipGroupName]], result)
1410
+
1411
+ @builtins.property
1412
+ def index_strategy(self) -> typing.Optional[builtins.str]:
1413
+ '''(experimental) The strategy to use when resolving against multiple index URLs.
1414
+
1415
+ By default, uv will stop at the first index on which a given package is available, and
1416
+ limit resolutions to those present on that first index (``first-index``). This prevents
1417
+ "dependency confusion" attacks, whereby an attacker can upload a malicious package under the
1418
+ same name to an alternate index.
1419
+
1420
+ :stability: experimental
1421
+ :schema: PipOptions#index-strategy
1422
+ '''
1423
+ result = self._values.get("index_strategy")
1424
+ return typing.cast(typing.Optional[builtins.str], result)
1425
+
1426
+ @builtins.property
1427
+ def index_url(self) -> typing.Optional[builtins.str]:
1428
+ '''(experimental) The URL of the Python package index (by default: `https://pypi.org/simple <https://pypi.org/simple>`_).
1429
+
1430
+ Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_
1431
+ (the simple repository API), or a local directory laid out in the same format.
1432
+
1433
+ The index provided by this setting is given lower priority than any indexes specified via
1434
+ ```extra_index_url`` <#extra-index-url>`_.
1435
+
1436
+ :stability: experimental
1437
+ :schema: PipOptions#index-url
1438
+ '''
1439
+ result = self._values.get("index_url")
1440
+ return typing.cast(typing.Optional[builtins.str], result)
1441
+
1442
+ @builtins.property
1443
+ def keyring_provider(self) -> typing.Optional[builtins.str]:
1444
+ '''(experimental) Attempt to use ``keyring`` for authentication for index URLs.
1445
+
1446
+ At present, only ``--keyring-provider subprocess`` is supported, which configures uv to
1447
+ use the ``keyring`` CLI to handle authentication.
1448
+
1449
+ :stability: experimental
1450
+ :schema: PipOptions#keyring-provider
1451
+ '''
1452
+ result = self._values.get("keyring_provider")
1453
+ return typing.cast(typing.Optional[builtins.str], result)
1454
+
1455
+ @builtins.property
1456
+ def link_mode(self) -> typing.Optional[builtins.str]:
1457
+ '''(experimental) The method to use when installing packages from the global cache.
1458
+
1459
+ Defaults to ``clone`` (also known as Copy-on-Write) on macOS, and ``hardlink`` on Linux and
1460
+ Windows.
1461
+
1462
+ WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
1463
+ the cache and the target environment. For example, clearing the cache (``uv cache clean``)
1464
+ will break all installed packages by way of removing the underlying source files. Use
1465
+ symlinks with caution.
1466
+
1467
+ :default: clone``(also known as Copy-on-Write) on macOS, and``hardlink` on Linux and
1468
+
1469
+ :stability: experimental
1470
+ :schema: PipOptions#link-mode
1471
+ '''
1472
+ result = self._values.get("link_mode")
1473
+ return typing.cast(typing.Optional[builtins.str], result)
1474
+
1475
+ @builtins.property
1476
+ def no_annotate(self) -> typing.Optional[builtins.bool]:
1477
+ '''(experimental) Exclude comment annotations indicating the source of each package from the output file generated by ``uv pip compile``.
1478
+
1479
+ :stability: experimental
1480
+ :schema: PipOptions#no-annotate
1481
+ '''
1482
+ result = self._values.get("no_annotate")
1483
+ return typing.cast(typing.Optional[builtins.bool], result)
1484
+
1485
+ @builtins.property
1486
+ def no_binary(self) -> typing.Optional[typing.List[builtins.str]]:
1487
+ '''(experimental) Don't install pre-built wheels.
1488
+
1489
+ The given packages will be built and installed from source. The resolver will still use
1490
+ pre-built wheels to extract package metadata, if available.
1491
+
1492
+ Multiple packages may be provided. Disable binaries for all packages with ``:all:``.
1493
+ Clear previously specified packages with ``:none:``.
1494
+
1495
+ :stability: experimental
1496
+ :schema: PipOptions#no-binary
1497
+ '''
1498
+ result = self._values.get("no_binary")
1499
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1500
+
1501
+ @builtins.property
1502
+ def no_build(self) -> typing.Optional[builtins.bool]:
1503
+ '''(experimental) Don't build source distributions.
1504
+
1505
+ When enabled, resolving will not run arbitrary Python code. The cached wheels of
1506
+ already-built source distributions will be reused, but operations that require building
1507
+ distributions will exit with an error.
1508
+
1509
+ Alias for ``--only-binary :all:``.
1510
+
1511
+ :stability: experimental
1512
+ :schema: PipOptions#no-build
1513
+ '''
1514
+ result = self._values.get("no_build")
1515
+ return typing.cast(typing.Optional[builtins.bool], result)
1516
+
1517
+ @builtins.property
1518
+ def no_build_isolation(self) -> typing.Optional[builtins.bool]:
1519
+ '''(experimental) Disable isolation when building source distributions.
1520
+
1521
+ Assumes that build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_
1522
+ are already installed.
1523
+
1524
+ :stability: experimental
1525
+ :schema: PipOptions#no-build-isolation
1526
+ '''
1527
+ result = self._values.get("no_build_isolation")
1528
+ return typing.cast(typing.Optional[builtins.bool], result)
1529
+
1530
+ @builtins.property
1531
+ def no_build_isolation_package(self) -> typing.Optional[typing.List[builtins.str]]:
1532
+ '''(experimental) Disable isolation when building source distributions for a specific package.
1533
+
1534
+ Assumes that the packages' build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_
1535
+ are already installed.
1536
+
1537
+ :stability: experimental
1538
+ :schema: PipOptions#no-build-isolation-package
1539
+ '''
1540
+ result = self._values.get("no_build_isolation_package")
1541
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1542
+
1543
+ @builtins.property
1544
+ def no_deps(self) -> typing.Optional[builtins.bool]:
1545
+ '''(experimental) Ignore package dependencies, instead only add those packages explicitly listed on the command line to the resulting requirements file.
1546
+
1547
+ :stability: experimental
1548
+ :schema: PipOptions#no-deps
1549
+ '''
1550
+ result = self._values.get("no_deps")
1551
+ return typing.cast(typing.Optional[builtins.bool], result)
1552
+
1553
+ @builtins.property
1554
+ def no_emit_package(self) -> typing.Optional[typing.List[builtins.str]]:
1555
+ '''(experimental) Specify a package to omit from the output resolution.
1556
+
1557
+ Its dependencies will still be
1558
+ included in the resolution. Equivalent to pip-compile's ``--unsafe-package`` option.
1559
+
1560
+ :stability: experimental
1561
+ :schema: PipOptions#no-emit-package
1562
+ '''
1563
+ result = self._values.get("no_emit_package")
1564
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1565
+
1566
+ @builtins.property
1567
+ def no_extra(self) -> typing.Optional[typing.List[builtins.str]]:
1568
+ '''(experimental) Exclude the specified optional dependencies if ``all-extras`` is supplied.
1569
+
1570
+ :stability: experimental
1571
+ :schema: PipOptions#no-extra
1572
+ '''
1573
+ result = self._values.get("no_extra")
1574
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1575
+
1576
+ @builtins.property
1577
+ def no_header(self) -> typing.Optional[builtins.bool]:
1578
+ '''(experimental) Exclude the comment header at the top of output file generated by ``uv pip compile``.
1579
+
1580
+ :stability: experimental
1581
+ :schema: PipOptions#no-header
1582
+ '''
1583
+ result = self._values.get("no_header")
1584
+ return typing.cast(typing.Optional[builtins.bool], result)
1585
+
1586
+ @builtins.property
1587
+ def no_index(self) -> typing.Optional[builtins.bool]:
1588
+ '''(experimental) Ignore all registry indexes (e.g., PyPI), instead relying on direct URL dependencies and those provided via ``--find-links``.
1589
+
1590
+ :stability: experimental
1591
+ :schema: PipOptions#no-index
1592
+ '''
1593
+ result = self._values.get("no_index")
1594
+ return typing.cast(typing.Optional[builtins.bool], result)
1595
+
1596
+ @builtins.property
1597
+ def no_sources(self) -> typing.Optional[builtins.bool]:
1598
+ '''(experimental) Ignore the ``tool.uv.sources`` table when resolving dependencies. Used to lock against the standards-compliant, publishable package metadata, as opposed to using any local or Git sources.
1599
+
1600
+ :stability: experimental
1601
+ :schema: PipOptions#no-sources
1602
+ '''
1603
+ result = self._values.get("no_sources")
1604
+ return typing.cast(typing.Optional[builtins.bool], result)
1605
+
1606
+ @builtins.property
1607
+ def no_strip_extras(self) -> typing.Optional[builtins.bool]:
1608
+ '''(experimental) Include extras in the output file.
1609
+
1610
+ By default, uv strips extras, as any packages pulled in by the extras are already included
1611
+ as dependencies in the output file directly. Further, output files generated with
1612
+ ``--no-strip-extras`` cannot be used as constraints files in ``install`` and ``sync`` invocations.
1613
+
1614
+ :stability: experimental
1615
+ :schema: PipOptions#no-strip-extras
1616
+ '''
1617
+ result = self._values.get("no_strip_extras")
1618
+ return typing.cast(typing.Optional[builtins.bool], result)
1619
+
1620
+ @builtins.property
1621
+ def no_strip_markers(self) -> typing.Optional[builtins.bool]:
1622
+ '''(experimental) Include environment markers in the output file generated by ``uv pip compile``.
1623
+
1624
+ By default, uv strips environment markers, as the resolution generated by ``compile`` is
1625
+ only guaranteed to be correct for the target environment.
1626
+
1627
+ :stability: experimental
1628
+ :schema: PipOptions#no-strip-markers
1629
+ '''
1630
+ result = self._values.get("no_strip_markers")
1631
+ return typing.cast(typing.Optional[builtins.bool], result)
1632
+
1633
+ @builtins.property
1634
+ def only_binary(self) -> typing.Optional[typing.List[builtins.str]]:
1635
+ '''(experimental) Only use pre-built wheels; don't build source distributions.
1636
+
1637
+ When enabled, resolving will not run code from the given packages. The cached wheels of already-built
1638
+ source distributions will be reused, but operations that require building distributions will
1639
+ exit with an error.
1640
+
1641
+ Multiple packages may be provided. Disable binaries for all packages with ``:all:``.
1642
+ Clear previously specified packages with ``:none:``.
1643
+
1644
+ :stability: experimental
1645
+ :schema: PipOptions#only-binary
1646
+ '''
1647
+ result = self._values.get("only_binary")
1648
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1649
+
1650
+ @builtins.property
1651
+ def output_file(self) -> typing.Optional[builtins.str]:
1652
+ '''(experimental) Write the requirements generated by ``uv pip compile`` to the given ``requirements.txt`` file.
1653
+
1654
+ If the file already exists, the existing versions will be preferred when resolving
1655
+ dependencies, unless ``--upgrade`` is also specified.
1656
+
1657
+ :stability: experimental
1658
+ :schema: PipOptions#output-file
1659
+ '''
1660
+ result = self._values.get("output_file")
1661
+ return typing.cast(typing.Optional[builtins.str], result)
1662
+
1663
+ @builtins.property
1664
+ def prefix(self) -> typing.Optional[builtins.str]:
1665
+ '''(experimental) Install packages into ``lib``, ``bin``, and other top-level folders under the specified directory, as if a virtual environment were present at that location.
1666
+
1667
+ In general, prefer the use of ``--python`` to install into an alternate environment, as
1668
+ scripts and other artifacts installed via ``--prefix`` will reference the installing
1669
+ interpreter, rather than any interpreter added to the ``--prefix`` directory, rendering them
1670
+ non-portable.
1671
+
1672
+ :stability: experimental
1673
+ :schema: PipOptions#prefix
1674
+ '''
1675
+ result = self._values.get("prefix")
1676
+ return typing.cast(typing.Optional[builtins.str], result)
1677
+
1678
+ @builtins.property
1679
+ def prerelease(self) -> typing.Optional[builtins.str]:
1680
+ '''(experimental) The strategy to use when considering pre-release versions.
1681
+
1682
+ By default, uv will accept pre-releases for packages that *only* publish pre-releases,
1683
+ along with first-party requirements that contain an explicit pre-release marker in the
1684
+ declared specifiers (``if-necessary-or-explicit``).
1685
+
1686
+ :stability: experimental
1687
+ :schema: PipOptions#prerelease
1688
+ '''
1689
+ result = self._values.get("prerelease")
1690
+ return typing.cast(typing.Optional[builtins.str], result)
1691
+
1692
+ @builtins.property
1693
+ def python(self) -> typing.Optional[builtins.str]:
1694
+ '''(experimental) The Python interpreter into which packages should be installed.
1695
+
1696
+ By default, uv installs into the virtual environment in the current working directory or
1697
+ any parent directory. The ``--python`` option allows you to specify a different interpreter,
1698
+ which is intended for use in continuous integration (CI) environments or other automated
1699
+ workflows.
1700
+
1701
+ Supported formats:
1702
+
1703
+ - ``3.10`` looks for an installed Python 3.10 in the registry on Windows (see
1704
+ ``py --list-paths``), or ``python3.10`` on Linux and macOS.
1705
+ - ``python3.10`` or ``python.exe`` looks for a binary with the given name in ``PATH``.
1706
+ - ``/home/ferris/.local/bin/python3.10`` uses the exact Python at the given path.
1707
+
1708
+ :stability: experimental
1709
+ :schema: PipOptions#python
1710
+ '''
1711
+ result = self._values.get("python")
1712
+ return typing.cast(typing.Optional[builtins.str], result)
1713
+
1714
+ @builtins.property
1715
+ def python_platform(self) -> typing.Optional[builtins.str]:
1716
+ '''(experimental) The platform for which requirements should be resolved.
1717
+
1718
+ Represented as a "target triple", a string that describes the target platform in terms of
1719
+ its CPU, vendor, and operating system name, like ``x86_64-unknown-linux-gnu`` or
1720
+ ``aarch64-apple-darwin``.
1721
+
1722
+ :stability: experimental
1723
+ :schema: PipOptions#python-platform
1724
+ '''
1725
+ result = self._values.get("python_platform")
1726
+ return typing.cast(typing.Optional[builtins.str], result)
1727
+
1728
+ @builtins.property
1729
+ def python_version(self) -> typing.Optional[builtins.str]:
1730
+ '''(experimental) The minimum Python version that should be supported by the resolved requirements (e.g., ``3.8`` or ``3.8.17``).
1731
+
1732
+ If a patch version is omitted, the minimum patch version is assumed. For example, ``3.8`` is
1733
+ mapped to ``3.8.0``.
1734
+
1735
+ :stability: experimental
1736
+ :schema: PipOptions#python-version
1737
+ '''
1738
+ result = self._values.get("python_version")
1739
+ return typing.cast(typing.Optional[builtins.str], result)
1740
+
1741
+ @builtins.property
1742
+ def reinstall(self) -> typing.Optional[builtins.bool]:
1743
+ '''(experimental) Reinstall all packages, regardless of whether they're already installed.
1744
+
1745
+ Implies ``refresh``.
1746
+
1747
+ :stability: experimental
1748
+ :schema: PipOptions#reinstall
1749
+ '''
1750
+ result = self._values.get("reinstall")
1751
+ return typing.cast(typing.Optional[builtins.bool], result)
1752
+
1753
+ @builtins.property
1754
+ def reinstall_package(self) -> typing.Optional[typing.List[builtins.str]]:
1755
+ '''(experimental) Reinstall a specific package, regardless of whether it's already installed.
1756
+
1757
+ Implies
1758
+ ``refresh-package``.
1759
+
1760
+ :stability: experimental
1761
+ :schema: PipOptions#reinstall-package
1762
+ '''
1763
+ result = self._values.get("reinstall_package")
1764
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1765
+
1766
+ @builtins.property
1767
+ def require_hashes(self) -> typing.Optional[builtins.bool]:
1768
+ '''(experimental) Require a matching hash for each requirement.
1769
+
1770
+ Hash-checking mode is all or nothing. If enabled, *all* requirements must be provided
1771
+ with a corresponding hash or set of hashes. Additionally, if enabled, *all* requirements
1772
+ must either be pinned to exact versions (e.g., ``==1.0.0``), or be specified via direct URL.
1773
+
1774
+ Hash-checking mode introduces a number of additional constraints:
1775
+
1776
+ - Git dependencies are not supported.
1777
+ - Editable installations are not supported.
1778
+ - Local dependencies are not supported, unless they point to a specific wheel (``.whl``) or
1779
+ source archive (``.zip``, ``.tar.gz``), as opposed to a directory.
1780
+
1781
+ :stability: experimental
1782
+ :schema: PipOptions#require-hashes
1783
+ '''
1784
+ result = self._values.get("require_hashes")
1785
+ return typing.cast(typing.Optional[builtins.bool], result)
1786
+
1787
+ @builtins.property
1788
+ def resolution(self) -> typing.Optional[builtins.str]:
1789
+ '''(experimental) The strategy to use when selecting between the different compatible versions for a given package requirement.
1790
+
1791
+ By default, uv will use the latest compatible version of each package (``highest``).
1792
+
1793
+ :stability: experimental
1794
+ :schema: PipOptions#resolution
1795
+ '''
1796
+ result = self._values.get("resolution")
1797
+ return typing.cast(typing.Optional[builtins.str], result)
1798
+
1799
+ @builtins.property
1800
+ def strict(self) -> typing.Optional[builtins.bool]:
1801
+ '''(experimental) Validate the Python environment, to detect packages with missing dependencies and other issues.
1802
+
1803
+ :stability: experimental
1804
+ :schema: PipOptions#strict
1805
+ '''
1806
+ result = self._values.get("strict")
1807
+ return typing.cast(typing.Optional[builtins.bool], result)
1808
+
1809
+ @builtins.property
1810
+ def system(self) -> typing.Optional[builtins.bool]:
1811
+ '''(experimental) Install packages into the system Python environment.
1812
+
1813
+ By default, uv installs into the virtual environment in the current working directory or
1814
+ any parent directory. The ``--system`` option instructs uv to instead use the first Python
1815
+ found in the system ``PATH``.
1816
+
1817
+ WARNING: ``--system`` is intended for use in continuous integration (CI) environments and
1818
+ should be used with caution, as it can modify the system Python installation.
1819
+
1820
+ :stability: experimental
1821
+ :schema: PipOptions#system
1822
+ '''
1823
+ result = self._values.get("system")
1824
+ return typing.cast(typing.Optional[builtins.bool], result)
1825
+
1826
+ @builtins.property
1827
+ def target(self) -> typing.Optional[builtins.str]:
1828
+ '''(experimental) Install packages into the specified directory, rather than into the virtual or system Python environment.
1829
+
1830
+ The packages will be installed at the top-level of the directory.
1831
+
1832
+ :stability: experimental
1833
+ :schema: PipOptions#target
1834
+ '''
1835
+ result = self._values.get("target")
1836
+ return typing.cast(typing.Optional[builtins.str], result)
1837
+
1838
+ @builtins.property
1839
+ def torch_backend(self) -> typing.Optional[builtins.str]:
1840
+ '''(experimental) The backend to use when fetching packages in the PyTorch ecosystem.
1841
+
1842
+ When set, uv will ignore the configured index URLs for packages in the PyTorch ecosystem,
1843
+ and will instead use the defined backend.
1844
+
1845
+ For example, when set to ``cpu``, uv will use the CPU-only PyTorch index; when set to ``cu126``,
1846
+ uv will use the PyTorch index for CUDA 12.6.
1847
+
1848
+ The ``auto`` mode will attempt to detect the appropriate PyTorch index based on the currently
1849
+ installed CUDA drivers.
1850
+
1851
+ This option is in preview and may change in any future release.
1852
+
1853
+ :stability: experimental
1854
+ :schema: PipOptions#torch-backend
1855
+ '''
1856
+ result = self._values.get("torch_backend")
1857
+ return typing.cast(typing.Optional[builtins.str], result)
1858
+
1859
+ @builtins.property
1860
+ def universal(self) -> typing.Optional[builtins.bool]:
1861
+ '''(experimental) Perform a universal resolution, attempting to generate a single ``requirements.txt`` output file that is compatible with all operating systems, architectures, and Python implementations.
1862
+
1863
+ In universal mode, the current Python version (or user-provided ``--python-version``) will be
1864
+ treated as a lower bound. For example, ``--universal --python-version 3.7`` would produce a
1865
+ universal resolution for Python 3.7 and later.
1866
+
1867
+ :stability: experimental
1868
+ :schema: PipOptions#universal
1869
+ '''
1870
+ result = self._values.get("universal")
1871
+ return typing.cast(typing.Optional[builtins.bool], result)
1872
+
1873
+ @builtins.property
1874
+ def upgrade(self) -> typing.Optional[builtins.bool]:
1875
+ '''(experimental) Allow package upgrades, ignoring pinned versions in any existing output file.
1876
+
1877
+ :stability: experimental
1878
+ :schema: PipOptions#upgrade
1879
+ '''
1880
+ result = self._values.get("upgrade")
1881
+ return typing.cast(typing.Optional[builtins.bool], result)
1882
+
1883
+ @builtins.property
1884
+ def upgrade_package(self) -> typing.Optional[typing.List[builtins.str]]:
1885
+ '''(experimental) Allow upgrades for a specific package, ignoring pinned versions in any existing output file.
1886
+
1887
+ Accepts both standalone package names (``ruff``) and version specifiers (``ruff<0.5.0``).
1888
+
1889
+ :stability: experimental
1890
+ :schema: PipOptions#upgrade-package
1891
+ '''
1892
+ result = self._values.get("upgrade_package")
1893
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1894
+
1895
+ @builtins.property
1896
+ def verify_hashes(self) -> typing.Optional[builtins.bool]:
1897
+ '''(experimental) Validate any hashes provided in the requirements file.
1898
+
1899
+ Unlike ``--require-hashes``, ``--verify-hashes`` does not require that all requirements have
1900
+ hashes; instead, it will limit itself to verifying the hashes of those requirements that do
1901
+ include them.
1902
+
1903
+ :stability: experimental
1904
+ :schema: PipOptions#verify-hashes
1905
+ '''
1906
+ result = self._values.get("verify_hashes")
1907
+ return typing.cast(typing.Optional[builtins.bool], result)
1908
+
1909
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1910
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1911
+
1912
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1913
+ return not (rhs == self)
1914
+
1915
+ def __repr__(self) -> str:
1916
+ return "PipOptions(%s)" % ", ".join(
1917
+ k + "=" + repr(v) for k, v in self._values.items()
1918
+ )
1919
+
1920
+
1921
+ @jsii.data_type(
1922
+ jsii_type="projen.python.uvConfig.SchemaConflictItem",
1923
+ jsii_struct_bases=[],
1924
+ name_mapping={"extra": "extra", "group": "group", "package": "package"},
1925
+ )
1926
+ class SchemaConflictItem:
1927
+ def __init__(
1928
+ self,
1929
+ *,
1930
+ extra: typing.Optional[builtins.str] = None,
1931
+ group: typing.Optional[builtins.str] = None,
1932
+ package: typing.Optional[builtins.str] = None,
1933
+ ) -> None:
1934
+ '''(experimental) A single item in a conflicting set.
1935
+
1936
+ Each item is a pair of an (optional) package and a corresponding extra or group name for that
1937
+ package.
1938
+
1939
+ :param extra:
1940
+ :param group:
1941
+ :param package:
1942
+
1943
+ :stability: experimental
1944
+ :schema: SchemaConflictItem
1945
+ '''
1946
+ if __debug__:
1947
+ type_hints = typing.get_type_hints(_typecheckingstub__5b46b2b7c2469ab6410378ad3f31dbc8765e96c46f61c3c1491291cc61b80c51)
1948
+ check_type(argname="argument extra", value=extra, expected_type=type_hints["extra"])
1949
+ check_type(argname="argument group", value=group, expected_type=type_hints["group"])
1950
+ check_type(argname="argument package", value=package, expected_type=type_hints["package"])
1951
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1952
+ if extra is not None:
1953
+ self._values["extra"] = extra
1954
+ if group is not None:
1955
+ self._values["group"] = group
1956
+ if package is not None:
1957
+ self._values["package"] = package
1958
+
1959
+ @builtins.property
1960
+ def extra(self) -> typing.Optional[builtins.str]:
1961
+ '''
1962
+ :stability: experimental
1963
+ :schema: SchemaConflictItem#extra
1964
+ '''
1965
+ result = self._values.get("extra")
1966
+ return typing.cast(typing.Optional[builtins.str], result)
1967
+
1968
+ @builtins.property
1969
+ def group(self) -> typing.Optional[builtins.str]:
1970
+ '''
1971
+ :stability: experimental
1972
+ :schema: SchemaConflictItem#group
1973
+ '''
1974
+ result = self._values.get("group")
1975
+ return typing.cast(typing.Optional[builtins.str], result)
1976
+
1977
+ @builtins.property
1978
+ def package(self) -> typing.Optional[builtins.str]:
1979
+ '''
1980
+ :stability: experimental
1981
+ :schema: SchemaConflictItem#package
1982
+ '''
1983
+ result = self._values.get("package")
1984
+ return typing.cast(typing.Optional[builtins.str], result)
1985
+
1986
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1987
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1988
+
1989
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1990
+ return not (rhs == self)
1991
+
1992
+ def __repr__(self) -> str:
1993
+ return "SchemaConflictItem(%s)" % ", ".join(
1994
+ k + "=" + repr(v) for k, v in self._values.items()
1995
+ )
1996
+
1997
+
1998
+ @jsii.data_type(
1999
+ jsii_type="projen.python.uvConfig.StaticMetadata",
2000
+ jsii_struct_bases=[],
2001
+ name_mapping={
2002
+ "name": "name",
2003
+ "provides_extra": "providesExtra",
2004
+ "requires_dist": "requiresDist",
2005
+ "requires_python": "requiresPython",
2006
+ "version": "version",
2007
+ },
2008
+ )
2009
+ class StaticMetadata:
2010
+ def __init__(
2011
+ self,
2012
+ *,
2013
+ name: builtins.str,
2014
+ provides_extra: typing.Optional[typing.Sequence[builtins.str]] = None,
2015
+ requires_dist: typing.Optional[typing.Sequence[builtins.str]] = None,
2016
+ requires_python: typing.Optional[builtins.str] = None,
2017
+ version: typing.Optional[builtins.str] = None,
2018
+ ) -> None:
2019
+ '''(experimental) A subset of the Python Package Metadata 2.3 standard as specified in `https://packaging.python.org/specifications/core-metadata/ <https://packaging.python.org/specifications/core-metadata/>`_.
2020
+
2021
+ :param name:
2022
+ :param provides_extra:
2023
+ :param requires_dist:
2024
+ :param requires_python: (experimental) PEP 508-style Python requirement, e.g., ``>=3.10``.
2025
+ :param version: (experimental) PEP 440-style package version, e.g., ``1.2.3``.
2026
+
2027
+ :stability: experimental
2028
+ :schema: StaticMetadata
2029
+ '''
2030
+ if __debug__:
2031
+ type_hints = typing.get_type_hints(_typecheckingstub__95950a1bc1c16c14e86122ea689404f253b5e734ee94d174a1c7d2cb8d2e1b13)
2032
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2033
+ check_type(argname="argument provides_extra", value=provides_extra, expected_type=type_hints["provides_extra"])
2034
+ check_type(argname="argument requires_dist", value=requires_dist, expected_type=type_hints["requires_dist"])
2035
+ check_type(argname="argument requires_python", value=requires_python, expected_type=type_hints["requires_python"])
2036
+ check_type(argname="argument version", value=version, expected_type=type_hints["version"])
2037
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2038
+ "name": name,
2039
+ }
2040
+ if provides_extra is not None:
2041
+ self._values["provides_extra"] = provides_extra
2042
+ if requires_dist is not None:
2043
+ self._values["requires_dist"] = requires_dist
2044
+ if requires_python is not None:
2045
+ self._values["requires_python"] = requires_python
2046
+ if version is not None:
2047
+ self._values["version"] = version
2048
+
2049
+ @builtins.property
2050
+ def name(self) -> builtins.str:
2051
+ '''
2052
+ :stability: experimental
2053
+ :schema: StaticMetadata#name
2054
+ '''
2055
+ result = self._values.get("name")
2056
+ assert result is not None, "Required property 'name' is missing"
2057
+ return typing.cast(builtins.str, result)
2058
+
2059
+ @builtins.property
2060
+ def provides_extra(self) -> typing.Optional[typing.List[builtins.str]]:
2061
+ '''
2062
+ :stability: experimental
2063
+ :schema: StaticMetadata#provides-extra
2064
+ '''
2065
+ result = self._values.get("provides_extra")
2066
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2067
+
2068
+ @builtins.property
2069
+ def requires_dist(self) -> typing.Optional[typing.List[builtins.str]]:
2070
+ '''
2071
+ :stability: experimental
2072
+ :schema: StaticMetadata#requires-dist
2073
+ '''
2074
+ result = self._values.get("requires_dist")
2075
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2076
+
2077
+ @builtins.property
2078
+ def requires_python(self) -> typing.Optional[builtins.str]:
2079
+ '''(experimental) PEP 508-style Python requirement, e.g., ``>=3.10``.
2080
+
2081
+ :stability: experimental
2082
+ :schema: StaticMetadata#requires-python
2083
+ '''
2084
+ result = self._values.get("requires_python")
2085
+ return typing.cast(typing.Optional[builtins.str], result)
2086
+
2087
+ @builtins.property
2088
+ def version(self) -> typing.Optional[builtins.str]:
2089
+ '''(experimental) PEP 440-style package version, e.g., ``1.2.3``.
2090
+
2091
+ :stability: experimental
2092
+ :schema: StaticMetadata#version
2093
+ '''
2094
+ result = self._values.get("version")
2095
+ return typing.cast(typing.Optional[builtins.str], result)
2096
+
2097
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2098
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2099
+
2100
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2101
+ return not (rhs == self)
2102
+
2103
+ def __repr__(self) -> str:
2104
+ return "StaticMetadata(%s)" % ", ".join(
2105
+ k + "=" + repr(v) for k, v in self._values.items()
2106
+ )
2107
+
2108
+
2109
+ @jsii.data_type(
2110
+ jsii_type="projen.python.uvConfig.ToolUvWorkspace",
2111
+ jsii_struct_bases=[],
2112
+ name_mapping={"exclude": "exclude", "members": "members"},
2113
+ )
2114
+ class ToolUvWorkspace:
2115
+ def __init__(
2116
+ self,
2117
+ *,
2118
+ exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
2119
+ members: typing.Optional[typing.Sequence[builtins.str]] = None,
2120
+ ) -> None:
2121
+ '''
2122
+ :param exclude: (experimental) Packages to exclude as workspace members. If a package matches both ``members`` and ``exclude``, it will be excluded. Supports both globs and explicit paths. For more information on the glob syntax, refer to the ```glob`` documentation <https://docs.rs/glob/latest/glob/struct.Pattern.html>`_.
2123
+ :param members: (experimental) Packages to include as workspace members. Supports both globs and explicit paths. For more information on the glob syntax, refer to the ```glob`` documentation <https://docs.rs/glob/latest/glob/struct.Pattern.html>`_.
2124
+
2125
+ :stability: experimental
2126
+ :schema: ToolUvWorkspace
2127
+ '''
2128
+ if __debug__:
2129
+ type_hints = typing.get_type_hints(_typecheckingstub__104c3e675eb0f61a5c9f7a762fb9754ae023eb9e0db4e9434a1631ad9e3119bb)
2130
+ check_type(argname="argument exclude", value=exclude, expected_type=type_hints["exclude"])
2131
+ check_type(argname="argument members", value=members, expected_type=type_hints["members"])
2132
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
2133
+ if exclude is not None:
2134
+ self._values["exclude"] = exclude
2135
+ if members is not None:
2136
+ self._values["members"] = members
2137
+
2138
+ @builtins.property
2139
+ def exclude(self) -> typing.Optional[typing.List[builtins.str]]:
2140
+ '''(experimental) Packages to exclude as workspace members. If a package matches both ``members`` and ``exclude``, it will be excluded.
2141
+
2142
+ Supports both globs and explicit paths.
2143
+
2144
+ For more information on the glob syntax, refer to the ```glob`` documentation <https://docs.rs/glob/latest/glob/struct.Pattern.html>`_.
2145
+
2146
+ :stability: experimental
2147
+ :schema: ToolUvWorkspace#exclude
2148
+ '''
2149
+ result = self._values.get("exclude")
2150
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2151
+
2152
+ @builtins.property
2153
+ def members(self) -> typing.Optional[typing.List[builtins.str]]:
2154
+ '''(experimental) Packages to include as workspace members.
2155
+
2156
+ Supports both globs and explicit paths.
2157
+
2158
+ For more information on the glob syntax, refer to the ```glob`` documentation <https://docs.rs/glob/latest/glob/struct.Pattern.html>`_.
2159
+
2160
+ :stability: experimental
2161
+ :schema: ToolUvWorkspace#members
2162
+ '''
2163
+ result = self._values.get("members")
2164
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2165
+
2166
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2167
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2168
+
2169
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2170
+ return not (rhs == self)
2171
+
2172
+ def __repr__(self) -> str:
2173
+ return "ToolUvWorkspace(%s)" % ", ".join(
2174
+ k + "=" + repr(v) for k, v in self._values.items()
2175
+ )
2176
+
2177
+
2178
+ @jsii.enum(jsii_type="projen.python.uvConfig.TrustedPublishing")
2179
+ class TrustedPublishing(enum.Enum):
2180
+ '''
2181
+ :stability: experimental
2182
+ :schema: TrustedPublishing
2183
+ '''
2184
+
2185
+ ALWAYS = "ALWAYS"
2186
+ '''(experimental) always.
2187
+
2188
+ :stability: experimental
2189
+ '''
2190
+ NEVER = "NEVER"
2191
+ '''(experimental) never.
2192
+
2193
+ :stability: experimental
2194
+ '''
2195
+
2196
+
2197
+ @jsii.data_type(
2198
+ jsii_type="projen.python.uvConfig.UvConfiguration",
2199
+ jsii_struct_bases=[],
2200
+ name_mapping={
2201
+ "add_bounds": "addBounds",
2202
+ "allow_insecure_host": "allowInsecureHost",
2203
+ "build_backend": "buildBackend",
2204
+ "build_constraint_dependencies": "buildConstraintDependencies",
2205
+ "cache_dir": "cacheDir",
2206
+ "cache_keys": "cacheKeys",
2207
+ "check_url": "checkUrl",
2208
+ "compile_bytecode": "compileBytecode",
2209
+ "concurrent_builds": "concurrentBuilds",
2210
+ "concurrent_downloads": "concurrentDownloads",
2211
+ "concurrent_installs": "concurrentInstalls",
2212
+ "config_settings": "configSettings",
2213
+ "config_settings_package": "configSettingsPackage",
2214
+ "conflicts": "conflicts",
2215
+ "constraint_dependencies": "constraintDependencies",
2216
+ "default_groups": "defaultGroups",
2217
+ "dependency_groups": "dependencyGroups",
2218
+ "dependency_metadata": "dependencyMetadata",
2219
+ "dev_dependencies": "devDependencies",
2220
+ "environments": "environments",
2221
+ "exclude_dependencies": "excludeDependencies",
2222
+ "exclude_newer": "excludeNewer",
2223
+ "exclude_newer_package": "excludeNewerPackage",
2224
+ "extra_build_dependencies": "extraBuildDependencies",
2225
+ "extra_build_variables": "extraBuildVariables",
2226
+ "extra_index_url": "extraIndexUrl",
2227
+ "find_links": "findLinks",
2228
+ "fork_strategy": "forkStrategy",
2229
+ "index": "index",
2230
+ "index_strategy": "indexStrategy",
2231
+ "index_url": "indexUrl",
2232
+ "keyring_provider": "keyringProvider",
2233
+ "link_mode": "linkMode",
2234
+ "managed": "managed",
2235
+ "native_tls": "nativeTls",
2236
+ "no_binary": "noBinary",
2237
+ "no_binary_package": "noBinaryPackage",
2238
+ "no_build": "noBuild",
2239
+ "no_build_isolation": "noBuildIsolation",
2240
+ "no_build_isolation_package": "noBuildIsolationPackage",
2241
+ "no_build_package": "noBuildPackage",
2242
+ "no_cache": "noCache",
2243
+ "no_index": "noIndex",
2244
+ "no_sources": "noSources",
2245
+ "offline": "offline",
2246
+ "override_dependencies": "overrideDependencies",
2247
+ "package": "package",
2248
+ "pip": "pip",
2249
+ "prerelease": "prerelease",
2250
+ "preview": "preview",
2251
+ "publish_url": "publishUrl",
2252
+ "pypy_install_mirror": "pypyInstallMirror",
2253
+ "python_downloads": "pythonDownloads",
2254
+ "python_downloads_json_url": "pythonDownloadsJsonUrl",
2255
+ "python_install_mirror": "pythonInstallMirror",
2256
+ "python_preference": "pythonPreference",
2257
+ "reinstall": "reinstall",
2258
+ "reinstall_package": "reinstallPackage",
2259
+ "required_environments": "requiredEnvironments",
2260
+ "required_version": "requiredVersion",
2261
+ "resolution": "resolution",
2262
+ "sources": "sources",
2263
+ "trusted_publishing": "trustedPublishing",
2264
+ "upgrade": "upgrade",
2265
+ "upgrade_package": "upgradePackage",
2266
+ "workspace": "workspace",
2267
+ },
2268
+ )
2269
+ class UvConfiguration:
2270
+ def __init__(
2271
+ self,
2272
+ *,
2273
+ add_bounds: typing.Optional[builtins.str] = None,
2274
+ allow_insecure_host: typing.Optional[typing.Sequence[builtins.str]] = None,
2275
+ build_backend: typing.Optional[typing.Union[BuildBackendSettings, typing.Dict[builtins.str, typing.Any]]] = None,
2276
+ build_constraint_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
2277
+ cache_dir: typing.Optional[builtins.str] = None,
2278
+ cache_keys: typing.Optional[typing.Sequence[typing.Any]] = None,
2279
+ check_url: typing.Optional[builtins.str] = None,
2280
+ compile_bytecode: typing.Optional[builtins.bool] = None,
2281
+ concurrent_builds: typing.Optional[jsii.Number] = None,
2282
+ concurrent_downloads: typing.Optional[jsii.Number] = None,
2283
+ concurrent_installs: typing.Optional[jsii.Number] = None,
2284
+ config_settings: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
2285
+ config_settings_package: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]] = None,
2286
+ conflicts: typing.Optional[typing.Sequence[typing.Sequence[typing.Union[SchemaConflictItem, typing.Dict[builtins.str, typing.Any]]]]] = None,
2287
+ constraint_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
2288
+ default_groups: typing.Any = None,
2289
+ dependency_groups: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependencyGroupSettings, typing.Dict[builtins.str, typing.Any]]]] = None,
2290
+ dependency_metadata: typing.Optional[typing.Sequence[typing.Union[StaticMetadata, typing.Dict[builtins.str, typing.Any]]]] = None,
2291
+ dev_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
2292
+ environments: typing.Optional[typing.Sequence[builtins.str]] = None,
2293
+ exclude_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
2294
+ exclude_newer: typing.Optional[builtins.str] = None,
2295
+ exclude_newer_package: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
2296
+ extra_build_dependencies: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[typing.Any]]] = None,
2297
+ extra_build_variables: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]] = None,
2298
+ extra_index_url: typing.Optional[typing.Sequence[builtins.str]] = None,
2299
+ find_links: typing.Optional[typing.Sequence[builtins.str]] = None,
2300
+ fork_strategy: typing.Optional[builtins.str] = None,
2301
+ index: typing.Optional[typing.Sequence[typing.Union[Index, typing.Dict[builtins.str, typing.Any]]]] = None,
2302
+ index_strategy: typing.Optional[builtins.str] = None,
2303
+ index_url: typing.Optional[builtins.str] = None,
2304
+ keyring_provider: typing.Optional[builtins.str] = None,
2305
+ link_mode: typing.Optional[builtins.str] = None,
2306
+ managed: typing.Optional[builtins.bool] = None,
2307
+ native_tls: typing.Optional[builtins.bool] = None,
2308
+ no_binary: typing.Optional[builtins.bool] = None,
2309
+ no_binary_package: typing.Optional[typing.Sequence[builtins.str]] = None,
2310
+ no_build: typing.Optional[builtins.bool] = None,
2311
+ no_build_isolation: typing.Optional[builtins.bool] = None,
2312
+ no_build_isolation_package: typing.Optional[typing.Sequence[builtins.str]] = None,
2313
+ no_build_package: typing.Optional[typing.Sequence[builtins.str]] = None,
2314
+ no_cache: typing.Optional[builtins.bool] = None,
2315
+ no_index: typing.Optional[builtins.bool] = None,
2316
+ no_sources: typing.Optional[builtins.bool] = None,
2317
+ offline: typing.Optional[builtins.bool] = None,
2318
+ override_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
2319
+ package: typing.Optional[builtins.bool] = None,
2320
+ pip: typing.Optional[typing.Union[PipOptions, typing.Dict[builtins.str, typing.Any]]] = None,
2321
+ prerelease: typing.Optional[builtins.str] = None,
2322
+ preview: typing.Optional[builtins.bool] = None,
2323
+ publish_url: typing.Optional[builtins.str] = None,
2324
+ pypy_install_mirror: typing.Optional[builtins.str] = None,
2325
+ python_downloads: typing.Optional[builtins.str] = None,
2326
+ python_downloads_json_url: typing.Optional[builtins.str] = None,
2327
+ python_install_mirror: typing.Optional[builtins.str] = None,
2328
+ python_preference: typing.Optional[builtins.str] = None,
2329
+ reinstall: typing.Optional[builtins.bool] = None,
2330
+ reinstall_package: typing.Optional[typing.Sequence[builtins.str]] = None,
2331
+ required_environments: typing.Optional[typing.Sequence[builtins.str]] = None,
2332
+ required_version: typing.Optional[builtins.str] = None,
2333
+ resolution: typing.Optional[builtins.str] = None,
2334
+ sources: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[typing.Any]]] = None,
2335
+ trusted_publishing: typing.Optional[TrustedPublishing] = None,
2336
+ upgrade: typing.Optional[builtins.bool] = None,
2337
+ upgrade_package: typing.Optional[typing.Sequence[builtins.str]] = None,
2338
+ workspace: typing.Optional[typing.Union[ToolUvWorkspace, typing.Dict[builtins.str, typing.Any]]] = None,
2339
+ ) -> None:
2340
+ '''(experimental) Metadata and configuration for uv.
2341
+
2342
+ :param add_bounds: (experimental) The default version specifier when adding a dependency. When adding a dependency to the project, if no constraint or URL is provided, a constraint is added based on the latest compatible version of the package. By default, a lower bound constraint is used, e.g., ``>=1.2.3``. When ``--frozen`` is provided, no resolution is performed, and dependencies are always added without constraints. This option is in preview and may change in any future release.
2343
+ :param allow_insecure_host: (experimental) Allow insecure connections to host. Expects to receive either a hostname (e.g., ``localhost``), a host-port pair (e.g., ``localhost:8080``), or a URL (e.g., ``https://localhost``). WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use ``--allow-insecure-host`` in a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.
2344
+ :param build_backend: (experimental) Configuration for the uv build backend. Note that those settings only apply when using the ``uv_build`` backend, other build backends (such as hatchling) have their own configuration.
2345
+ :param build_constraint_dependencies: (experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
2346
+ :param cache_dir: (experimental) Path to the cache directory.
2347
+ :param cache_keys: (experimental) The keys to consider when caching builds for the project. Cache keys enable you to specify the files or directories that should trigger a rebuild when modified. By default, uv will rebuild a project whenever the ``pyproject.toml``, ``setup.py``, or ``setup.cfg`` files in the project directory are modified, or if a ``src`` directory is added or removed, i.e.:: cache-keys = [{ file = "pyproject.toml" }, { file = "setup.py" }, { file = "setup.cfg" }, { dir = "src" }] As an example: if a project uses dynamic metadata to read its dependencies from a ``requirements.txt`` file, you can specify ``cache-keys = [{ file = "requirements.txt" }, { file = "pyproject.toml" }]`` to ensure that the project is rebuilt whenever the ``requirements.txt`` file is modified (in addition to watching the ``pyproject.toml``). Globs are supported, following the syntax of the ```glob`` <https://docs.rs/glob/0.3.1/glob/struct.Pattern.html>`_ crate. For example, to invalidate the cache whenever a ``.toml`` file in the project directory or any of its subdirectories is modified, you can specify ``cache-keys = [{ file = "*_/*.toml" }]``. Note that the use of globs can be expensive, as uv may need to walk the filesystem to determine whether any files have changed. Cache keys can also include version control information. For example, if a project uses ``setuptools_scm`` to read its version from a Git commit, you can specify ``cache-keys = [{ git = { commit = true }, { file = "pyproject.toml" }]`` to include the current Git commit hash in the cache key (in addition to the ``pyproject.toml``). Git tags are also supported via ``cache-keys = [{ git = { commit = true, tags = true } }]``. Cache keys can also include environment variables. For example, if a project relies on ``MACOSX_DEPLOYMENT_TARGET`` or other environment variables to determine its behavior, you can specify ``cache-keys = [{ env = "MACOSX_DEPLOYMENT_TARGET" }]`` to invalidate the cache whenever the environment variable changes. Cache keys only affect the project defined by the ``pyproject.toml`` in which they're specified (as opposed to, e.g., affecting all members in a workspace), and all paths and globs are interpreted as relative to the project directory.
2348
+ :param check_url: (experimental) Check an index URL for existing files to skip duplicate uploads. This option allows retrying publishing that failed after only some, but not all files have been uploaded, and handles error due to parallel uploads of the same file. Before uploading, the index is checked. If the exact same file already exists in the index, the file will not be uploaded. If an error occurred during the upload, the index is checked again, to handle cases where the identical file was uploaded twice in parallel. The exact behavior will vary based on the index. When uploading to PyPI, uploading the same file succeeds even without ``--check-url``, while most other indexes error. The index must provide one of the supported hashes (SHA-256, SHA-384, or SHA-512).
2349
+ :param compile_bytecode: (experimental) Compile Python files to bytecode after installation. By default, uv does not compile Python (``.py``) files to bytecode (``__pycache__/*.pyc``); instead, compilation is performed lazily the first time a module is imported. For use-cases in which start time is critical, such as CLI applications and Docker containers, this option can be enabled to trade longer installation times for faster start times. When enabled, uv will process the entire site-packages directory (including packages that are not being modified by the current operation) for consistency. Like pip, it will also ignore errors.
2350
+ :param concurrent_builds: (experimental) The maximum number of source distributions that uv will build concurrently at any given time. Defaults to the number of available CPU cores. Default: the number of available CPU cores.
2351
+ :param concurrent_downloads: (experimental) The maximum number of in-flight concurrent downloads that uv will perform at any given time.
2352
+ :param concurrent_installs: (experimental) The number of threads used when installing and unzipping packages. Defaults to the number of available CPU cores. Default: the number of available CPU cores.
2353
+ :param config_settings: (experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend, specified as ``KEY=VALUE`` pairs.
2354
+ :param config_settings_package: (experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend for specific packages, specified as ``KEY=VALUE`` pairs. Accepts a map from package names to string key-value pairs.
2355
+ :param conflicts: (experimental) A list of sets of conflicting groups or extras.
2356
+ :param constraint_dependencies: (experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
2357
+ :param default_groups: (experimental) The list of ``dependency-groups`` to install by default. Can also be the literal ``"all"`` to default enable all groups.
2358
+ :param dependency_groups: (experimental) Additional settings for ``dependency-groups``. Currently this can only be used to add ``requires-python`` constraints to dependency groups (typically to inform uv that your dev tooling has a higher python requirement than your actual project). This cannot be used to define dependency groups, use the top-level ``[dependency-groups]`` table for that.
2359
+ :param dependency_metadata: (experimental) Pre-defined static metadata for dependencies of the project (direct or transitive). When provided, enables the resolver to use the specified metadata instead of querying the registry or building the relevant package from source. Metadata should be provided in adherence with the `Metadata 2.3 <https://packaging.python.org/en/latest/specifications/core-metadata/>`_ standard, though only the following fields are respected: - ``name``: The name of the package. - (Optional) ``version``: The version of the package. If omitted, the metadata will be applied to all versions of the package. - (Optional) ``requires-dist``: The dependencies of the package (e.g., ``werkzeug>=0.14``). - (Optional) ``requires-python``: The Python version required by the package (e.g., ``>=3.10``). - (Optional) ``provides-extra``: The extras provided by the package.
2360
+ :param dev_dependencies: (experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
2361
+ :param environments: (experimental) A list of environment markers, e.g., ``python_version >= '3.6'``.
2362
+ :param exclude_dependencies: (experimental) Package names to exclude, e.g., ``werkzeug``, ``numpy``.
2363
+ :param exclude_newer: (experimental) Limit candidate packages to those that were uploaded prior to a given point in time. Accepts a superset of `RFC 3339 <https://www.rfc-editor.org/rfc/rfc3339.html>`_ (e.g., ``2006-12-02T02:07:43Z``). A full timestamp is required to ensure that the resolver will behave consistently across timezones.
2364
+ :param exclude_newer_package: (experimental) Limit candidate packages for specific packages to those that were uploaded prior to the given date. Accepts package-date pairs in a dictionary format.
2365
+ :param extra_build_dependencies: (experimental) Additional build dependencies for packages. This allows extending the PEP 517 build environment for the project's dependencies with additional packages. This is useful for packages that assume the presence of packages like ``pip``, and do not declare them as build dependencies.
2366
+ :param extra_build_variables: (experimental) Extra environment variables to set when building certain packages. Environment variables will be added to the environment when building the specified packages.
2367
+ :param extra_index_url: (experimental) Extra URLs of package indexes to use, in addition to ``--index-url``. Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_ (the simple repository API), or a local directory laid out in the same format. All indexes provided via this flag take priority over the index specified by ```index_url`` <#index-url>`_ or ```index`` <#index>`_ with ``default = true``. When multiple indexes are provided, earlier values take priority. To control uv's resolution strategy when multiple indexes are present, see ```index_strategy`` <#index-strategy>`_. (Deprecated: use ``index`` instead.)
2368
+ :param find_links: (experimental) Locations to search for candidate distributions, in addition to those found in the registry indexes. If a path, the target must be a directory that contains packages as wheel files (``.whl``) or source distributions (e.g., ``.tar.gz`` or ``.zip``) at the top level. If a URL, the page must contain a flat list of links to package files adhering to the formats described above.
2369
+ :param fork_strategy: (experimental) The strategy to use when selecting multiple versions of a given package across Python versions and platforms. By default, uv will optimize for selecting the latest version of each package for each supported Python version (``requires-python``), while minimizing the number of selected versions across platforms. Under ``fewest``, uv will minimize the number of selected versions for each package, preferring older versions that are compatible with a wider range of supported Python versions or platforms.
2370
+ :param index: (experimental) The indexes to use when resolving dependencies. Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_ (the simple repository API), or a local directory laid out in the same format. Indexes are considered in the order in which they're defined, such that the first-defined index has the highest priority. Further, the indexes provided by this setting are given higher priority than any indexes specified via ```index_url`` <#index-url>`_ or ```extra_index_url`` <#extra-index-url>`_. uv will only consider the first index that contains a given package, unless an alternative `index strategy <#index-strategy>`_ is specified. If an index is marked as ``explicit = true``, it will be used exclusively for the dependencies that select it explicitly via ``[tool.uv.sources]``, as in:: [[tool.uv.index]] name = "pytorch" url = "https://download.pytorch.org/whl/cu121" explicit = true [tool.uv.sources] torch = { index = "pytorch" } If an index is marked as ``default = true``, it will be moved to the end of the prioritized list, such that it is given the lowest priority when resolving packages. Additionally, marking an index as default will disable the PyPI default index.
2371
+ :param index_strategy: (experimental) The strategy to use when resolving against multiple index URLs. By default, uv will stop at the first index on which a given package is available, and limit resolutions to those present on that first index (``first-index``). This prevents "dependency confusion" attacks, whereby an attacker can upload a malicious package under the same name to an alternate index.
2372
+ :param index_url: (experimental) The URL of the Python package index (by default: `https://pypi.org/simple <https://pypi.org/simple>`_). Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_ (the simple repository API), or a local directory laid out in the same format. The index provided by this setting is given lower priority than any indexes specified via ```extra_index_url`` <#extra-index-url>`_ or ```index`` <#index>`_. (Deprecated: use ``index`` instead.)
2373
+ :param keyring_provider: (experimental) Attempt to use ``keyring`` for authentication for index URLs. At present, only ``--keyring-provider subprocess`` is supported, which configures uv to use the ``keyring`` CLI to handle authentication.
2374
+ :param link_mode: (experimental) The method to use when installing packages from the global cache. Defaults to ``clone`` (also known as Copy-on-Write) on macOS, and ``hardlink`` on Linux and Windows. WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (``uv cache clean``) will break all installed packages by way of removing the underlying source files. Use symlinks with caution. Default: clone``(also known as Copy-on-Write) on macOS, and``hardlink` on Linux and
2375
+ :param managed: (experimental) Whether the project is managed by uv. If ``false``, uv will ignore the project when ``uv run`` is invoked.
2376
+ :param native_tls: (experimental) Whether to load TLS certificates from the platform's native certificate store. By default, uv loads certificates from the bundled ``webpki-roots`` crate. The ``webpki-roots`` are a reliable set of trust roots from Mozilla, and including them in uv improves portability and performance (especially on macOS). However, in some cases, you may want to use the platform's native certificate store, especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's included in your system's certificate store.
2377
+ :param no_binary: (experimental) Don't install pre-built wheels. The given packages will be built and installed from source. The resolver will still use pre-built wheels to extract package metadata, if available.
2378
+ :param no_binary_package: (experimental) Don't install pre-built wheels for a specific package.
2379
+ :param no_build: (experimental) Don't build source distributions. When enabled, resolving will not run arbitrary Python code. The cached wheels of already-built source distributions will be reused, but operations that require building distributions will exit with an error.
2380
+ :param no_build_isolation: (experimental) Disable isolation when building source distributions. Assumes that build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_ are already installed.
2381
+ :param no_build_isolation_package: (experimental) Disable isolation when building source distributions for a specific package. Assumes that the packages' build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_ are already installed.
2382
+ :param no_build_package: (experimental) Don't build source distributions for a specific package.
2383
+ :param no_cache: (experimental) Avoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation.
2384
+ :param no_index: (experimental) Ignore all registry indexes (e.g., PyPI), instead relying on direct URL dependencies and those provided via ``--find-links``.
2385
+ :param no_sources: (experimental) Ignore the ``tool.uv.sources`` table when resolving dependencies. Used to lock against the standards-compliant, publishable package metadata, as opposed to using any local or Git sources.
2386
+ :param offline: (experimental) Disable network access, relying only on locally cached data and locally available files.
2387
+ :param override_dependencies: (experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
2388
+ :param package: (experimental) Whether the project should be considered a Python package, or a non-package ("virtual") project. Packages are built and installed into the virtual environment in editable mode and thus require a build backend, while virtual projects are *not* built or installed; instead, only their dependencies are included in the virtual environment. Creating a package requires that a ``build-system`` is present in the ``pyproject.toml``, and that the project adheres to a structure that adheres to the build backend's expectations (e.g., a ``src`` layout).
2389
+ :param pip:
2390
+ :param prerelease: (experimental) The strategy to use when considering pre-release versions. By default, uv will accept pre-releases for packages that *only* publish pre-releases, along with first-party requirements that contain an explicit pre-release marker in the declared specifiers (``if-necessary-or-explicit``).
2391
+ :param preview: (experimental) Whether to enable experimental, preview features.
2392
+ :param publish_url: (experimental) The URL for publishing packages to the Python package index (by default: `https://upload.pypi.org/legacy/ <https://upload.pypi.org/legacy/>`_).
2393
+ :param pypy_install_mirror: (experimental) Mirror URL to use for downloading managed PyPy installations. By default, managed PyPy installations are downloaded from `downloads.python.org <https://downloads.python.org/>`_. This variable can be set to a mirror URL to use a different source for PyPy installations. The provided URL will replace ``https://downloads.python.org/pypy`` in, e.g., ``https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2``. Distributions can be read from a local directory by using the ``file://`` URL scheme.
2394
+ :param python_downloads: (experimental) Whether to allow Python downloads.
2395
+ :param python_downloads_json_url: (experimental) URL pointing to JSON of custom Python installations. Note that currently, only local paths are supported.
2396
+ :param python_install_mirror: (experimental) Mirror URL for downloading managed Python installations. By default, managed Python installations are downloaded from ```python-build-standalone`` <https://github.com/astral-sh/python-build-standalone>`_. This variable can be set to a mirror URL to use a different source for Python installations. The provided URL will replace ``https://github.com/astral-sh/python-build-standalone/releases/download`` in, e.g., ``https://github.com/astral-sh/python-build-standalone/releases/download/20240713/cpython-3.12.4%2B20240713-aarch64-apple-darwin-install_only.tar.gz``. Distributions can be read from a local directory by using the ``file://`` URL scheme.
2397
+ :param python_preference: (experimental) Whether to prefer using Python installations that are already present on the system, or those that are downloaded and installed by uv.
2398
+ :param reinstall: (experimental) Reinstall all packages, regardless of whether they're already installed. Implies ``refresh``.
2399
+ :param reinstall_package: (experimental) Reinstall a specific package, regardless of whether it's already installed. Implies ``refresh-package``.
2400
+ :param required_environments: (experimental) A list of environment markers, e.g., `sys_platform == 'darwin'.
2401
+ :param required_version: (experimental) Enforce a requirement on the version of uv. If the version of uv does not meet the requirement at runtime, uv will exit with an error. Accepts a `PEP 440 <https://peps.python.org/pep-0440/>`_ specifier, like ``==0.5.0`` or ``>=0.5.0``.
2402
+ :param resolution: (experimental) The strategy to use when selecting between the different compatible versions for a given package requirement. By default, uv will use the latest compatible version of each package (``highest``).
2403
+ :param sources: (experimental) The sources to use when resolving dependencies. ``tool.uv.sources`` enriches the dependency metadata with additional sources, incorporated during development. A dependency source can be a Git repository, a URL, a local path, or an alternative registry. See `Dependencies <https://docs.astral.sh/uv/concepts/projects/dependencies/>`_ for more.
2404
+ :param trusted_publishing: (experimental) Configure trusted publishing. By default, uv checks for trusted publishing when running in a supported environment, but ignores it if it isn't configured. uv's supported environments for trusted publishing include GitHub Actions and GitLab CI/CD.
2405
+ :param upgrade: (experimental) Allow package upgrades, ignoring pinned versions in any existing output file.
2406
+ :param upgrade_package: (experimental) Allow upgrades for a specific package, ignoring pinned versions in any existing output file. Accepts both standalone package names (``ruff``) and version specifiers (``ruff<0.5.0``).
2407
+ :param workspace: (experimental) The workspace definition for the project, if any.
2408
+
2409
+ :stability: experimental
2410
+ :schema: UvConfiguration
2411
+ '''
2412
+ if isinstance(build_backend, dict):
2413
+ build_backend = BuildBackendSettings(**build_backend)
2414
+ if isinstance(pip, dict):
2415
+ pip = PipOptions(**pip)
2416
+ if isinstance(workspace, dict):
2417
+ workspace = ToolUvWorkspace(**workspace)
2418
+ if __debug__:
2419
+ type_hints = typing.get_type_hints(_typecheckingstub__dc04a41ac6b3f4657c0dca1f873f83584612a895d87f8c6a6b420bd4d56e6612)
2420
+ check_type(argname="argument add_bounds", value=add_bounds, expected_type=type_hints["add_bounds"])
2421
+ check_type(argname="argument allow_insecure_host", value=allow_insecure_host, expected_type=type_hints["allow_insecure_host"])
2422
+ check_type(argname="argument build_backend", value=build_backend, expected_type=type_hints["build_backend"])
2423
+ check_type(argname="argument build_constraint_dependencies", value=build_constraint_dependencies, expected_type=type_hints["build_constraint_dependencies"])
2424
+ check_type(argname="argument cache_dir", value=cache_dir, expected_type=type_hints["cache_dir"])
2425
+ check_type(argname="argument cache_keys", value=cache_keys, expected_type=type_hints["cache_keys"])
2426
+ check_type(argname="argument check_url", value=check_url, expected_type=type_hints["check_url"])
2427
+ check_type(argname="argument compile_bytecode", value=compile_bytecode, expected_type=type_hints["compile_bytecode"])
2428
+ check_type(argname="argument concurrent_builds", value=concurrent_builds, expected_type=type_hints["concurrent_builds"])
2429
+ check_type(argname="argument concurrent_downloads", value=concurrent_downloads, expected_type=type_hints["concurrent_downloads"])
2430
+ check_type(argname="argument concurrent_installs", value=concurrent_installs, expected_type=type_hints["concurrent_installs"])
2431
+ check_type(argname="argument config_settings", value=config_settings, expected_type=type_hints["config_settings"])
2432
+ check_type(argname="argument config_settings_package", value=config_settings_package, expected_type=type_hints["config_settings_package"])
2433
+ check_type(argname="argument conflicts", value=conflicts, expected_type=type_hints["conflicts"])
2434
+ check_type(argname="argument constraint_dependencies", value=constraint_dependencies, expected_type=type_hints["constraint_dependencies"])
2435
+ check_type(argname="argument default_groups", value=default_groups, expected_type=type_hints["default_groups"])
2436
+ check_type(argname="argument dependency_groups", value=dependency_groups, expected_type=type_hints["dependency_groups"])
2437
+ check_type(argname="argument dependency_metadata", value=dependency_metadata, expected_type=type_hints["dependency_metadata"])
2438
+ check_type(argname="argument dev_dependencies", value=dev_dependencies, expected_type=type_hints["dev_dependencies"])
2439
+ check_type(argname="argument environments", value=environments, expected_type=type_hints["environments"])
2440
+ check_type(argname="argument exclude_dependencies", value=exclude_dependencies, expected_type=type_hints["exclude_dependencies"])
2441
+ check_type(argname="argument exclude_newer", value=exclude_newer, expected_type=type_hints["exclude_newer"])
2442
+ check_type(argname="argument exclude_newer_package", value=exclude_newer_package, expected_type=type_hints["exclude_newer_package"])
2443
+ check_type(argname="argument extra_build_dependencies", value=extra_build_dependencies, expected_type=type_hints["extra_build_dependencies"])
2444
+ check_type(argname="argument extra_build_variables", value=extra_build_variables, expected_type=type_hints["extra_build_variables"])
2445
+ check_type(argname="argument extra_index_url", value=extra_index_url, expected_type=type_hints["extra_index_url"])
2446
+ check_type(argname="argument find_links", value=find_links, expected_type=type_hints["find_links"])
2447
+ check_type(argname="argument fork_strategy", value=fork_strategy, expected_type=type_hints["fork_strategy"])
2448
+ check_type(argname="argument index", value=index, expected_type=type_hints["index"])
2449
+ check_type(argname="argument index_strategy", value=index_strategy, expected_type=type_hints["index_strategy"])
2450
+ check_type(argname="argument index_url", value=index_url, expected_type=type_hints["index_url"])
2451
+ check_type(argname="argument keyring_provider", value=keyring_provider, expected_type=type_hints["keyring_provider"])
2452
+ check_type(argname="argument link_mode", value=link_mode, expected_type=type_hints["link_mode"])
2453
+ check_type(argname="argument managed", value=managed, expected_type=type_hints["managed"])
2454
+ check_type(argname="argument native_tls", value=native_tls, expected_type=type_hints["native_tls"])
2455
+ check_type(argname="argument no_binary", value=no_binary, expected_type=type_hints["no_binary"])
2456
+ check_type(argname="argument no_binary_package", value=no_binary_package, expected_type=type_hints["no_binary_package"])
2457
+ check_type(argname="argument no_build", value=no_build, expected_type=type_hints["no_build"])
2458
+ check_type(argname="argument no_build_isolation", value=no_build_isolation, expected_type=type_hints["no_build_isolation"])
2459
+ check_type(argname="argument no_build_isolation_package", value=no_build_isolation_package, expected_type=type_hints["no_build_isolation_package"])
2460
+ check_type(argname="argument no_build_package", value=no_build_package, expected_type=type_hints["no_build_package"])
2461
+ check_type(argname="argument no_cache", value=no_cache, expected_type=type_hints["no_cache"])
2462
+ check_type(argname="argument no_index", value=no_index, expected_type=type_hints["no_index"])
2463
+ check_type(argname="argument no_sources", value=no_sources, expected_type=type_hints["no_sources"])
2464
+ check_type(argname="argument offline", value=offline, expected_type=type_hints["offline"])
2465
+ check_type(argname="argument override_dependencies", value=override_dependencies, expected_type=type_hints["override_dependencies"])
2466
+ check_type(argname="argument package", value=package, expected_type=type_hints["package"])
2467
+ check_type(argname="argument pip", value=pip, expected_type=type_hints["pip"])
2468
+ check_type(argname="argument prerelease", value=prerelease, expected_type=type_hints["prerelease"])
2469
+ check_type(argname="argument preview", value=preview, expected_type=type_hints["preview"])
2470
+ check_type(argname="argument publish_url", value=publish_url, expected_type=type_hints["publish_url"])
2471
+ check_type(argname="argument pypy_install_mirror", value=pypy_install_mirror, expected_type=type_hints["pypy_install_mirror"])
2472
+ check_type(argname="argument python_downloads", value=python_downloads, expected_type=type_hints["python_downloads"])
2473
+ check_type(argname="argument python_downloads_json_url", value=python_downloads_json_url, expected_type=type_hints["python_downloads_json_url"])
2474
+ check_type(argname="argument python_install_mirror", value=python_install_mirror, expected_type=type_hints["python_install_mirror"])
2475
+ check_type(argname="argument python_preference", value=python_preference, expected_type=type_hints["python_preference"])
2476
+ check_type(argname="argument reinstall", value=reinstall, expected_type=type_hints["reinstall"])
2477
+ check_type(argname="argument reinstall_package", value=reinstall_package, expected_type=type_hints["reinstall_package"])
2478
+ check_type(argname="argument required_environments", value=required_environments, expected_type=type_hints["required_environments"])
2479
+ check_type(argname="argument required_version", value=required_version, expected_type=type_hints["required_version"])
2480
+ check_type(argname="argument resolution", value=resolution, expected_type=type_hints["resolution"])
2481
+ check_type(argname="argument sources", value=sources, expected_type=type_hints["sources"])
2482
+ check_type(argname="argument trusted_publishing", value=trusted_publishing, expected_type=type_hints["trusted_publishing"])
2483
+ check_type(argname="argument upgrade", value=upgrade, expected_type=type_hints["upgrade"])
2484
+ check_type(argname="argument upgrade_package", value=upgrade_package, expected_type=type_hints["upgrade_package"])
2485
+ check_type(argname="argument workspace", value=workspace, expected_type=type_hints["workspace"])
2486
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
2487
+ if add_bounds is not None:
2488
+ self._values["add_bounds"] = add_bounds
2489
+ if allow_insecure_host is not None:
2490
+ self._values["allow_insecure_host"] = allow_insecure_host
2491
+ if build_backend is not None:
2492
+ self._values["build_backend"] = build_backend
2493
+ if build_constraint_dependencies is not None:
2494
+ self._values["build_constraint_dependencies"] = build_constraint_dependencies
2495
+ if cache_dir is not None:
2496
+ self._values["cache_dir"] = cache_dir
2497
+ if cache_keys is not None:
2498
+ self._values["cache_keys"] = cache_keys
2499
+ if check_url is not None:
2500
+ self._values["check_url"] = check_url
2501
+ if compile_bytecode is not None:
2502
+ self._values["compile_bytecode"] = compile_bytecode
2503
+ if concurrent_builds is not None:
2504
+ self._values["concurrent_builds"] = concurrent_builds
2505
+ if concurrent_downloads is not None:
2506
+ self._values["concurrent_downloads"] = concurrent_downloads
2507
+ if concurrent_installs is not None:
2508
+ self._values["concurrent_installs"] = concurrent_installs
2509
+ if config_settings is not None:
2510
+ self._values["config_settings"] = config_settings
2511
+ if config_settings_package is not None:
2512
+ self._values["config_settings_package"] = config_settings_package
2513
+ if conflicts is not None:
2514
+ self._values["conflicts"] = conflicts
2515
+ if constraint_dependencies is not None:
2516
+ self._values["constraint_dependencies"] = constraint_dependencies
2517
+ if default_groups is not None:
2518
+ self._values["default_groups"] = default_groups
2519
+ if dependency_groups is not None:
2520
+ self._values["dependency_groups"] = dependency_groups
2521
+ if dependency_metadata is not None:
2522
+ self._values["dependency_metadata"] = dependency_metadata
2523
+ if dev_dependencies is not None:
2524
+ self._values["dev_dependencies"] = dev_dependencies
2525
+ if environments is not None:
2526
+ self._values["environments"] = environments
2527
+ if exclude_dependencies is not None:
2528
+ self._values["exclude_dependencies"] = exclude_dependencies
2529
+ if exclude_newer is not None:
2530
+ self._values["exclude_newer"] = exclude_newer
2531
+ if exclude_newer_package is not None:
2532
+ self._values["exclude_newer_package"] = exclude_newer_package
2533
+ if extra_build_dependencies is not None:
2534
+ self._values["extra_build_dependencies"] = extra_build_dependencies
2535
+ if extra_build_variables is not None:
2536
+ self._values["extra_build_variables"] = extra_build_variables
2537
+ if extra_index_url is not None:
2538
+ self._values["extra_index_url"] = extra_index_url
2539
+ if find_links is not None:
2540
+ self._values["find_links"] = find_links
2541
+ if fork_strategy is not None:
2542
+ self._values["fork_strategy"] = fork_strategy
2543
+ if index is not None:
2544
+ self._values["index"] = index
2545
+ if index_strategy is not None:
2546
+ self._values["index_strategy"] = index_strategy
2547
+ if index_url is not None:
2548
+ self._values["index_url"] = index_url
2549
+ if keyring_provider is not None:
2550
+ self._values["keyring_provider"] = keyring_provider
2551
+ if link_mode is not None:
2552
+ self._values["link_mode"] = link_mode
2553
+ if managed is not None:
2554
+ self._values["managed"] = managed
2555
+ if native_tls is not None:
2556
+ self._values["native_tls"] = native_tls
2557
+ if no_binary is not None:
2558
+ self._values["no_binary"] = no_binary
2559
+ if no_binary_package is not None:
2560
+ self._values["no_binary_package"] = no_binary_package
2561
+ if no_build is not None:
2562
+ self._values["no_build"] = no_build
2563
+ if no_build_isolation is not None:
2564
+ self._values["no_build_isolation"] = no_build_isolation
2565
+ if no_build_isolation_package is not None:
2566
+ self._values["no_build_isolation_package"] = no_build_isolation_package
2567
+ if no_build_package is not None:
2568
+ self._values["no_build_package"] = no_build_package
2569
+ if no_cache is not None:
2570
+ self._values["no_cache"] = no_cache
2571
+ if no_index is not None:
2572
+ self._values["no_index"] = no_index
2573
+ if no_sources is not None:
2574
+ self._values["no_sources"] = no_sources
2575
+ if offline is not None:
2576
+ self._values["offline"] = offline
2577
+ if override_dependencies is not None:
2578
+ self._values["override_dependencies"] = override_dependencies
2579
+ if package is not None:
2580
+ self._values["package"] = package
2581
+ if pip is not None:
2582
+ self._values["pip"] = pip
2583
+ if prerelease is not None:
2584
+ self._values["prerelease"] = prerelease
2585
+ if preview is not None:
2586
+ self._values["preview"] = preview
2587
+ if publish_url is not None:
2588
+ self._values["publish_url"] = publish_url
2589
+ if pypy_install_mirror is not None:
2590
+ self._values["pypy_install_mirror"] = pypy_install_mirror
2591
+ if python_downloads is not None:
2592
+ self._values["python_downloads"] = python_downloads
2593
+ if python_downloads_json_url is not None:
2594
+ self._values["python_downloads_json_url"] = python_downloads_json_url
2595
+ if python_install_mirror is not None:
2596
+ self._values["python_install_mirror"] = python_install_mirror
2597
+ if python_preference is not None:
2598
+ self._values["python_preference"] = python_preference
2599
+ if reinstall is not None:
2600
+ self._values["reinstall"] = reinstall
2601
+ if reinstall_package is not None:
2602
+ self._values["reinstall_package"] = reinstall_package
2603
+ if required_environments is not None:
2604
+ self._values["required_environments"] = required_environments
2605
+ if required_version is not None:
2606
+ self._values["required_version"] = required_version
2607
+ if resolution is not None:
2608
+ self._values["resolution"] = resolution
2609
+ if sources is not None:
2610
+ self._values["sources"] = sources
2611
+ if trusted_publishing is not None:
2612
+ self._values["trusted_publishing"] = trusted_publishing
2613
+ if upgrade is not None:
2614
+ self._values["upgrade"] = upgrade
2615
+ if upgrade_package is not None:
2616
+ self._values["upgrade_package"] = upgrade_package
2617
+ if workspace is not None:
2618
+ self._values["workspace"] = workspace
2619
+
2620
+ @builtins.property
2621
+ def add_bounds(self) -> typing.Optional[builtins.str]:
2622
+ '''(experimental) The default version specifier when adding a dependency.
2623
+
2624
+ When adding a dependency to the project, if no constraint or URL is provided, a constraint
2625
+ is added based on the latest compatible version of the package. By default, a lower bound
2626
+ constraint is used, e.g., ``>=1.2.3``.
2627
+
2628
+ When ``--frozen`` is provided, no resolution is performed, and dependencies are always added
2629
+ without constraints.
2630
+
2631
+ This option is in preview and may change in any future release.
2632
+
2633
+ :stability: experimental
2634
+ :schema: UvConfiguration#add-bounds
2635
+ '''
2636
+ result = self._values.get("add_bounds")
2637
+ return typing.cast(typing.Optional[builtins.str], result)
2638
+
2639
+ @builtins.property
2640
+ def allow_insecure_host(self) -> typing.Optional[typing.List[builtins.str]]:
2641
+ '''(experimental) Allow insecure connections to host.
2642
+
2643
+ Expects to receive either a hostname (e.g., ``localhost``), a host-port pair (e.g.,
2644
+ ``localhost:8080``), or a URL (e.g., ``https://localhost``).
2645
+
2646
+ WARNING: Hosts included in this list will not be verified against the system's certificate
2647
+ store. Only use ``--allow-insecure-host`` in a secure network with verified sources, as it
2648
+ bypasses SSL verification and could expose you to MITM attacks.
2649
+
2650
+ :stability: experimental
2651
+ :schema: UvConfiguration#allow-insecure-host
2652
+ '''
2653
+ result = self._values.get("allow_insecure_host")
2654
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2655
+
2656
+ @builtins.property
2657
+ def build_backend(self) -> typing.Optional[BuildBackendSettings]:
2658
+ '''(experimental) Configuration for the uv build backend.
2659
+
2660
+ Note that those settings only apply when using the ``uv_build`` backend, other build backends
2661
+ (such as hatchling) have their own configuration.
2662
+
2663
+ :stability: experimental
2664
+ :schema: UvConfiguration#build-backend
2665
+ '''
2666
+ result = self._values.get("build_backend")
2667
+ return typing.cast(typing.Optional[BuildBackendSettings], result)
2668
+
2669
+ @builtins.property
2670
+ def build_constraint_dependencies(
2671
+ self,
2672
+ ) -> typing.Optional[typing.List[builtins.str]]:
2673
+ '''(experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
2674
+
2675
+ :stability: experimental
2676
+ :schema: UvConfiguration#build-constraint-dependencies
2677
+ '''
2678
+ result = self._values.get("build_constraint_dependencies")
2679
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2680
+
2681
+ @builtins.property
2682
+ def cache_dir(self) -> typing.Optional[builtins.str]:
2683
+ '''(experimental) Path to the cache directory.
2684
+
2685
+ :stability: experimental
2686
+ :schema: UvConfiguration#cache-dir
2687
+ '''
2688
+ result = self._values.get("cache_dir")
2689
+ return typing.cast(typing.Optional[builtins.str], result)
2690
+
2691
+ @builtins.property
2692
+ def cache_keys(self) -> typing.Optional[typing.List[typing.Any]]:
2693
+ '''(experimental) The keys to consider when caching builds for the project.
2694
+
2695
+ Cache keys enable you to specify the files or directories that should trigger a rebuild when
2696
+ modified. By default, uv will rebuild a project whenever the ``pyproject.toml``, ``setup.py``,
2697
+ or ``setup.cfg`` files in the project directory are modified, or if a ``src`` directory is
2698
+ added or removed, i.e.::
2699
+
2700
+ cache-keys = [{ file = "pyproject.toml" }, { file = "setup.py" }, { file = "setup.cfg" }, { dir = "src" }]
2701
+
2702
+ As an example: if a project uses dynamic metadata to read its dependencies from a
2703
+ ``requirements.txt`` file, you can specify ``cache-keys = [{ file = "requirements.txt" }, { file = "pyproject.toml" }]``
2704
+ to ensure that the project is rebuilt whenever the ``requirements.txt`` file is modified (in
2705
+ addition to watching the ``pyproject.toml``).
2706
+
2707
+ Globs are supported, following the syntax of the ```glob`` <https://docs.rs/glob/0.3.1/glob/struct.Pattern.html>`_
2708
+ crate. For example, to invalidate the cache whenever a ``.toml`` file in the project directory
2709
+ or any of its subdirectories is modified, you can specify ``cache-keys = [{ file = "*_/*.toml" }]``.
2710
+ Note that the use of globs can be expensive, as uv may need to walk the filesystem to
2711
+ determine whether any files have changed.
2712
+
2713
+ Cache keys can also include version control information. For example, if a project uses
2714
+ ``setuptools_scm`` to read its version from a Git commit, you can specify ``cache-keys = [{ git = { commit = true }, { file = "pyproject.toml" }]``
2715
+ to include the current Git commit hash in the cache key (in addition to the
2716
+ ``pyproject.toml``). Git tags are also supported via ``cache-keys = [{ git = { commit = true, tags = true } }]``.
2717
+
2718
+ Cache keys can also include environment variables. For example, if a project relies on
2719
+ ``MACOSX_DEPLOYMENT_TARGET`` or other environment variables to determine its behavior, you can
2720
+ specify ``cache-keys = [{ env = "MACOSX_DEPLOYMENT_TARGET" }]`` to invalidate the cache
2721
+ whenever the environment variable changes.
2722
+
2723
+ Cache keys only affect the project defined by the ``pyproject.toml`` in which they're
2724
+ specified (as opposed to, e.g., affecting all members in a workspace), and all paths and
2725
+ globs are interpreted as relative to the project directory.
2726
+
2727
+ :stability: experimental
2728
+ :schema: UvConfiguration#cache-keys
2729
+ '''
2730
+ result = self._values.get("cache_keys")
2731
+ return typing.cast(typing.Optional[typing.List[typing.Any]], result)
2732
+
2733
+ @builtins.property
2734
+ def check_url(self) -> typing.Optional[builtins.str]:
2735
+ '''(experimental) Check an index URL for existing files to skip duplicate uploads.
2736
+
2737
+ This option allows retrying publishing that failed after only some, but not all files have
2738
+ been uploaded, and handles error due to parallel uploads of the same file.
2739
+
2740
+ Before uploading, the index is checked. If the exact same file already exists in the index,
2741
+ the file will not be uploaded. If an error occurred during the upload, the index is checked
2742
+ again, to handle cases where the identical file was uploaded twice in parallel.
2743
+
2744
+ The exact behavior will vary based on the index. When uploading to PyPI, uploading the same
2745
+ file succeeds even without ``--check-url``, while most other indexes error.
2746
+
2747
+ The index must provide one of the supported hashes (SHA-256, SHA-384, or SHA-512).
2748
+
2749
+ :stability: experimental
2750
+ :schema: UvConfiguration#check-url
2751
+ '''
2752
+ result = self._values.get("check_url")
2753
+ return typing.cast(typing.Optional[builtins.str], result)
2754
+
2755
+ @builtins.property
2756
+ def compile_bytecode(self) -> typing.Optional[builtins.bool]:
2757
+ '''(experimental) Compile Python files to bytecode after installation.
2758
+
2759
+ By default, uv does not compile Python (``.py``) files to bytecode (``__pycache__/*.pyc``);
2760
+ instead, compilation is performed lazily the first time a module is imported. For use-cases
2761
+ in which start time is critical, such as CLI applications and Docker containers, this option
2762
+ can be enabled to trade longer installation times for faster start times.
2763
+
2764
+ When enabled, uv will process the entire site-packages directory (including packages that
2765
+ are not being modified by the current operation) for consistency. Like pip, it will also
2766
+ ignore errors.
2767
+
2768
+ :stability: experimental
2769
+ :schema: UvConfiguration#compile-bytecode
2770
+ '''
2771
+ result = self._values.get("compile_bytecode")
2772
+ return typing.cast(typing.Optional[builtins.bool], result)
2773
+
2774
+ @builtins.property
2775
+ def concurrent_builds(self) -> typing.Optional[jsii.Number]:
2776
+ '''(experimental) The maximum number of source distributions that uv will build concurrently at any given time.
2777
+
2778
+ Defaults to the number of available CPU cores.
2779
+
2780
+ :default: the number of available CPU cores.
2781
+
2782
+ :stability: experimental
2783
+ :schema: UvConfiguration#concurrent-builds
2784
+ '''
2785
+ result = self._values.get("concurrent_builds")
2786
+ return typing.cast(typing.Optional[jsii.Number], result)
2787
+
2788
+ @builtins.property
2789
+ def concurrent_downloads(self) -> typing.Optional[jsii.Number]:
2790
+ '''(experimental) The maximum number of in-flight concurrent downloads that uv will perform at any given time.
2791
+
2792
+ :stability: experimental
2793
+ :schema: UvConfiguration#concurrent-downloads
2794
+ '''
2795
+ result = self._values.get("concurrent_downloads")
2796
+ return typing.cast(typing.Optional[jsii.Number], result)
2797
+
2798
+ @builtins.property
2799
+ def concurrent_installs(self) -> typing.Optional[jsii.Number]:
2800
+ '''(experimental) The number of threads used when installing and unzipping packages.
2801
+
2802
+ Defaults to the number of available CPU cores.
2803
+
2804
+ :default: the number of available CPU cores.
2805
+
2806
+ :stability: experimental
2807
+ :schema: UvConfiguration#concurrent-installs
2808
+ '''
2809
+ result = self._values.get("concurrent_installs")
2810
+ return typing.cast(typing.Optional[jsii.Number], result)
2811
+
2812
+ @builtins.property
2813
+ def config_settings(
2814
+ self,
2815
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Any]]:
2816
+ '''(experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend, specified as ``KEY=VALUE`` pairs.
2817
+
2818
+ :stability: experimental
2819
+ :schema: UvConfiguration#config-settings
2820
+ '''
2821
+ result = self._values.get("config_settings")
2822
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Any]], result)
2823
+
2824
+ @builtins.property
2825
+ def config_settings_package(
2826
+ self,
2827
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]]:
2828
+ '''(experimental) Settings to pass to the `PEP 517 <https://peps.python.org/pep-0517/>`_ build backend for specific packages, specified as ``KEY=VALUE`` pairs.
2829
+
2830
+ Accepts a map from package names to string key-value pairs.
2831
+
2832
+ :stability: experimental
2833
+ :schema: UvConfiguration#config-settings-package
2834
+ '''
2835
+ result = self._values.get("config_settings_package")
2836
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]], result)
2837
+
2838
+ @builtins.property
2839
+ def conflicts(
2840
+ self,
2841
+ ) -> typing.Optional[typing.List[typing.List[SchemaConflictItem]]]:
2842
+ '''(experimental) A list of sets of conflicting groups or extras.
2843
+
2844
+ :stability: experimental
2845
+ :schema: UvConfiguration#conflicts
2846
+ '''
2847
+ result = self._values.get("conflicts")
2848
+ return typing.cast(typing.Optional[typing.List[typing.List[SchemaConflictItem]]], result)
2849
+
2850
+ @builtins.property
2851
+ def constraint_dependencies(self) -> typing.Optional[typing.List[builtins.str]]:
2852
+ '''(experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
2853
+
2854
+ :stability: experimental
2855
+ :schema: UvConfiguration#constraint-dependencies
2856
+ '''
2857
+ result = self._values.get("constraint_dependencies")
2858
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2859
+
2860
+ @builtins.property
2861
+ def default_groups(self) -> typing.Any:
2862
+ '''(experimental) The list of ``dependency-groups`` to install by default.
2863
+
2864
+ Can also be the literal ``"all"`` to default enable all groups.
2865
+
2866
+ :stability: experimental
2867
+ :schema: UvConfiguration#default-groups
2868
+ '''
2869
+ result = self._values.get("default_groups")
2870
+ return typing.cast(typing.Any, result)
2871
+
2872
+ @builtins.property
2873
+ def dependency_groups(
2874
+ self,
2875
+ ) -> typing.Optional[typing.Mapping[builtins.str, DependencyGroupSettings]]:
2876
+ '''(experimental) Additional settings for ``dependency-groups``.
2877
+
2878
+ Currently this can only be used to add ``requires-python`` constraints
2879
+ to dependency groups (typically to inform uv that your dev tooling
2880
+ has a higher python requirement than your actual project).
2881
+
2882
+ This cannot be used to define dependency groups, use the top-level
2883
+ ``[dependency-groups]`` table for that.
2884
+
2885
+ :stability: experimental
2886
+ :schema: UvConfiguration#dependency-groups
2887
+ '''
2888
+ result = self._values.get("dependency_groups")
2889
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, DependencyGroupSettings]], result)
2890
+
2891
+ @builtins.property
2892
+ def dependency_metadata(self) -> typing.Optional[typing.List[StaticMetadata]]:
2893
+ '''(experimental) Pre-defined static metadata for dependencies of the project (direct or transitive).
2894
+
2895
+ When
2896
+ provided, enables the resolver to use the specified metadata instead of querying the
2897
+ registry or building the relevant package from source.
2898
+
2899
+ Metadata should be provided in adherence with the `Metadata 2.3 <https://packaging.python.org/en/latest/specifications/core-metadata/>`_
2900
+ standard, though only the following fields are respected:
2901
+
2902
+ - ``name``: The name of the package.
2903
+ - (Optional) ``version``: The version of the package. If omitted, the metadata will be applied
2904
+ to all versions of the package.
2905
+ - (Optional) ``requires-dist``: The dependencies of the package (e.g., ``werkzeug>=0.14``).
2906
+ - (Optional) ``requires-python``: The Python version required by the package (e.g., ``>=3.10``).
2907
+ - (Optional) ``provides-extra``: The extras provided by the package.
2908
+
2909
+ :stability: experimental
2910
+ :schema: UvConfiguration#dependency-metadata
2911
+ '''
2912
+ result = self._values.get("dependency_metadata")
2913
+ return typing.cast(typing.Optional[typing.List[StaticMetadata]], result)
2914
+
2915
+ @builtins.property
2916
+ def dev_dependencies(self) -> typing.Optional[typing.List[builtins.str]]:
2917
+ '''(experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
2918
+
2919
+ :stability: experimental
2920
+ :schema: UvConfiguration#dev-dependencies
2921
+ '''
2922
+ result = self._values.get("dev_dependencies")
2923
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2924
+
2925
+ @builtins.property
2926
+ def environments(self) -> typing.Optional[typing.List[builtins.str]]:
2927
+ '''(experimental) A list of environment markers, e.g., ``python_version >= '3.6'``.
2928
+
2929
+ :stability: experimental
2930
+ :schema: UvConfiguration#environments
2931
+ '''
2932
+ result = self._values.get("environments")
2933
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2934
+
2935
+ @builtins.property
2936
+ def exclude_dependencies(self) -> typing.Optional[typing.List[builtins.str]]:
2937
+ '''(experimental) Package names to exclude, e.g., ``werkzeug``, ``numpy``.
2938
+
2939
+ :stability: experimental
2940
+ :schema: UvConfiguration#exclude-dependencies
2941
+ '''
2942
+ result = self._values.get("exclude_dependencies")
2943
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2944
+
2945
+ @builtins.property
2946
+ def exclude_newer(self) -> typing.Optional[builtins.str]:
2947
+ '''(experimental) Limit candidate packages to those that were uploaded prior to a given point in time.
2948
+
2949
+ Accepts a superset of `RFC 3339 <https://www.rfc-editor.org/rfc/rfc3339.html>`_ (e.g.,
2950
+ ``2006-12-02T02:07:43Z``). A full timestamp is required to ensure that the resolver will
2951
+ behave consistently across timezones.
2952
+
2953
+ :stability: experimental
2954
+ :schema: UvConfiguration#exclude-newer
2955
+ '''
2956
+ result = self._values.get("exclude_newer")
2957
+ return typing.cast(typing.Optional[builtins.str], result)
2958
+
2959
+ @builtins.property
2960
+ def exclude_newer_package(
2961
+ self,
2962
+ ) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
2963
+ '''(experimental) Limit candidate packages for specific packages to those that were uploaded prior to the given date.
2964
+
2965
+ Accepts package-date pairs in a dictionary format.
2966
+
2967
+ :stability: experimental
2968
+ :schema: UvConfiguration#exclude-newer-package
2969
+ '''
2970
+ result = self._values.get("exclude_newer_package")
2971
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
2972
+
2973
+ @builtins.property
2974
+ def extra_build_dependencies(
2975
+ self,
2976
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.List[typing.Any]]]:
2977
+ '''(experimental) Additional build dependencies for packages.
2978
+
2979
+ This allows extending the PEP 517 build environment for the project's dependencies with
2980
+ additional packages. This is useful for packages that assume the presence of packages like
2981
+ ``pip``, and do not declare them as build dependencies.
2982
+
2983
+ :stability: experimental
2984
+ :schema: UvConfiguration#extra-build-dependencies
2985
+ '''
2986
+ result = self._values.get("extra_build_dependencies")
2987
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.List[typing.Any]]], result)
2988
+
2989
+ @builtins.property
2990
+ def extra_build_variables(
2991
+ self,
2992
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]]:
2993
+ '''(experimental) Extra environment variables to set when building certain packages.
2994
+
2995
+ Environment variables will be added to the environment when building the
2996
+ specified packages.
2997
+
2998
+ :stability: experimental
2999
+ :schema: UvConfiguration#extra-build-variables
3000
+ '''
3001
+ result = self._values.get("extra_build_variables")
3002
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]], result)
3003
+
3004
+ @builtins.property
3005
+ def extra_index_url(self) -> typing.Optional[typing.List[builtins.str]]:
3006
+ '''(experimental) Extra URLs of package indexes to use, in addition to ``--index-url``.
3007
+
3008
+ Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_
3009
+ (the simple repository API), or a local directory laid out in the same format.
3010
+
3011
+ All indexes provided via this flag take priority over the index specified by
3012
+ ```index_url`` <#index-url>`_ or ```index`` <#index>`_ with ``default = true``. When multiple indexes
3013
+ are provided, earlier values take priority.
3014
+
3015
+ To control uv's resolution strategy when multiple indexes are present, see
3016
+ ```index_strategy`` <#index-strategy>`_.
3017
+
3018
+ (Deprecated: use ``index`` instead.)
3019
+
3020
+ :stability: experimental
3021
+ :schema: UvConfiguration#extra-index-url
3022
+ '''
3023
+ result = self._values.get("extra_index_url")
3024
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3025
+
3026
+ @builtins.property
3027
+ def find_links(self) -> typing.Optional[typing.List[builtins.str]]:
3028
+ '''(experimental) Locations to search for candidate distributions, in addition to those found in the registry indexes.
3029
+
3030
+ If a path, the target must be a directory that contains packages as wheel files (``.whl``) or
3031
+ source distributions (e.g., ``.tar.gz`` or ``.zip``) at the top level.
3032
+
3033
+ If a URL, the page must contain a flat list of links to package files adhering to the
3034
+ formats described above.
3035
+
3036
+ :stability: experimental
3037
+ :schema: UvConfiguration#find-links
3038
+ '''
3039
+ result = self._values.get("find_links")
3040
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3041
+
3042
+ @builtins.property
3043
+ def fork_strategy(self) -> typing.Optional[builtins.str]:
3044
+ '''(experimental) The strategy to use when selecting multiple versions of a given package across Python versions and platforms.
3045
+
3046
+ By default, uv will optimize for selecting the latest version of each package for each
3047
+ supported Python version (``requires-python``), while minimizing the number of selected
3048
+ versions across platforms.
3049
+
3050
+ Under ``fewest``, uv will minimize the number of selected versions for each package,
3051
+ preferring older versions that are compatible with a wider range of supported Python
3052
+ versions or platforms.
3053
+
3054
+ :stability: experimental
3055
+ :schema: UvConfiguration#fork-strategy
3056
+ '''
3057
+ result = self._values.get("fork_strategy")
3058
+ return typing.cast(typing.Optional[builtins.str], result)
3059
+
3060
+ @builtins.property
3061
+ def index(self) -> typing.Optional[typing.List[Index]]:
3062
+ '''(experimental) The indexes to use when resolving dependencies.
3063
+
3064
+ Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_
3065
+ (the simple repository API), or a local directory laid out in the same format.
3066
+
3067
+ Indexes are considered in the order in which they're defined, such that the first-defined
3068
+ index has the highest priority. Further, the indexes provided by this setting are given
3069
+ higher priority than any indexes specified via ```index_url`` <#index-url>`_ or
3070
+ ```extra_index_url`` <#extra-index-url>`_. uv will only consider the first index that contains
3071
+ a given package, unless an alternative `index strategy <#index-strategy>`_ is specified.
3072
+
3073
+ If an index is marked as ``explicit = true``, it will be used exclusively for the
3074
+ dependencies that select it explicitly via ``[tool.uv.sources]``, as in::
3075
+
3076
+ [[tool.uv.index]]
3077
+ name = "pytorch"
3078
+ url = "https://download.pytorch.org/whl/cu121"
3079
+ explicit = true
3080
+
3081
+ [tool.uv.sources]
3082
+ torch = { index = "pytorch" }
3083
+
3084
+ If an index is marked as ``default = true``, it will be moved to the end of the prioritized list, such that it is
3085
+ given the lowest priority when resolving packages. Additionally, marking an index as default will disable the
3086
+ PyPI default index.
3087
+
3088
+ :stability: experimental
3089
+ :schema: UvConfiguration#index
3090
+ '''
3091
+ result = self._values.get("index")
3092
+ return typing.cast(typing.Optional[typing.List[Index]], result)
3093
+
3094
+ @builtins.property
3095
+ def index_strategy(self) -> typing.Optional[builtins.str]:
3096
+ '''(experimental) The strategy to use when resolving against multiple index URLs.
3097
+
3098
+ By default, uv will stop at the first index on which a given package is available, and
3099
+ limit resolutions to those present on that first index (``first-index``). This prevents
3100
+ "dependency confusion" attacks, whereby an attacker can upload a malicious package under the
3101
+ same name to an alternate index.
3102
+
3103
+ :stability: experimental
3104
+ :schema: UvConfiguration#index-strategy
3105
+ '''
3106
+ result = self._values.get("index_strategy")
3107
+ return typing.cast(typing.Optional[builtins.str], result)
3108
+
3109
+ @builtins.property
3110
+ def index_url(self) -> typing.Optional[builtins.str]:
3111
+ '''(experimental) The URL of the Python package index (by default: `https://pypi.org/simple <https://pypi.org/simple>`_).
3112
+
3113
+ Accepts either a repository compliant with `PEP 503 <https://peps.python.org/pep-0503/>`_
3114
+ (the simple repository API), or a local directory laid out in the same format.
3115
+
3116
+ The index provided by this setting is given lower priority than any indexes specified via
3117
+ ```extra_index_url`` <#extra-index-url>`_ or ```index`` <#index>`_.
3118
+
3119
+ (Deprecated: use ``index`` instead.)
3120
+
3121
+ :stability: experimental
3122
+ :schema: UvConfiguration#index-url
3123
+ '''
3124
+ result = self._values.get("index_url")
3125
+ return typing.cast(typing.Optional[builtins.str], result)
3126
+
3127
+ @builtins.property
3128
+ def keyring_provider(self) -> typing.Optional[builtins.str]:
3129
+ '''(experimental) Attempt to use ``keyring`` for authentication for index URLs.
3130
+
3131
+ At present, only ``--keyring-provider subprocess`` is supported, which configures uv to
3132
+ use the ``keyring`` CLI to handle authentication.
3133
+
3134
+ :stability: experimental
3135
+ :schema: UvConfiguration#keyring-provider
3136
+ '''
3137
+ result = self._values.get("keyring_provider")
3138
+ return typing.cast(typing.Optional[builtins.str], result)
3139
+
3140
+ @builtins.property
3141
+ def link_mode(self) -> typing.Optional[builtins.str]:
3142
+ '''(experimental) The method to use when installing packages from the global cache.
3143
+
3144
+ Defaults to ``clone`` (also known as Copy-on-Write) on macOS, and ``hardlink`` on Linux and
3145
+ Windows.
3146
+
3147
+ WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
3148
+ the cache and the target environment. For example, clearing the cache (``uv cache clean``)
3149
+ will break all installed packages by way of removing the underlying source files. Use
3150
+ symlinks with caution.
3151
+
3152
+ :default: clone``(also known as Copy-on-Write) on macOS, and``hardlink` on Linux and
3153
+
3154
+ :stability: experimental
3155
+ :schema: UvConfiguration#link-mode
3156
+ '''
3157
+ result = self._values.get("link_mode")
3158
+ return typing.cast(typing.Optional[builtins.str], result)
3159
+
3160
+ @builtins.property
3161
+ def managed(self) -> typing.Optional[builtins.bool]:
3162
+ '''(experimental) Whether the project is managed by uv.
3163
+
3164
+ If ``false``, uv will ignore the project when
3165
+ ``uv run`` is invoked.
3166
+
3167
+ :stability: experimental
3168
+ :schema: UvConfiguration#managed
3169
+ '''
3170
+ result = self._values.get("managed")
3171
+ return typing.cast(typing.Optional[builtins.bool], result)
3172
+
3173
+ @builtins.property
3174
+ def native_tls(self) -> typing.Optional[builtins.bool]:
3175
+ '''(experimental) Whether to load TLS certificates from the platform's native certificate store.
3176
+
3177
+ By default, uv loads certificates from the bundled ``webpki-roots`` crate. The
3178
+ ``webpki-roots`` are a reliable set of trust roots from Mozilla, and including them in uv
3179
+ improves portability and performance (especially on macOS).
3180
+
3181
+ However, in some cases, you may want to use the platform's native certificate store,
3182
+ especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's
3183
+ included in your system's certificate store.
3184
+
3185
+ :stability: experimental
3186
+ :schema: UvConfiguration#native-tls
3187
+ '''
3188
+ result = self._values.get("native_tls")
3189
+ return typing.cast(typing.Optional[builtins.bool], result)
3190
+
3191
+ @builtins.property
3192
+ def no_binary(self) -> typing.Optional[builtins.bool]:
3193
+ '''(experimental) Don't install pre-built wheels.
3194
+
3195
+ The given packages will be built and installed from source. The resolver will still use
3196
+ pre-built wheels to extract package metadata, if available.
3197
+
3198
+ :stability: experimental
3199
+ :schema: UvConfiguration#no-binary
3200
+ '''
3201
+ result = self._values.get("no_binary")
3202
+ return typing.cast(typing.Optional[builtins.bool], result)
3203
+
3204
+ @builtins.property
3205
+ def no_binary_package(self) -> typing.Optional[typing.List[builtins.str]]:
3206
+ '''(experimental) Don't install pre-built wheels for a specific package.
3207
+
3208
+ :stability: experimental
3209
+ :schema: UvConfiguration#no-binary-package
3210
+ '''
3211
+ result = self._values.get("no_binary_package")
3212
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3213
+
3214
+ @builtins.property
3215
+ def no_build(self) -> typing.Optional[builtins.bool]:
3216
+ '''(experimental) Don't build source distributions.
3217
+
3218
+ When enabled, resolving will not run arbitrary Python code. The cached wheels of
3219
+ already-built source distributions will be reused, but operations that require building
3220
+ distributions will exit with an error.
3221
+
3222
+ :stability: experimental
3223
+ :schema: UvConfiguration#no-build
3224
+ '''
3225
+ result = self._values.get("no_build")
3226
+ return typing.cast(typing.Optional[builtins.bool], result)
3227
+
3228
+ @builtins.property
3229
+ def no_build_isolation(self) -> typing.Optional[builtins.bool]:
3230
+ '''(experimental) Disable isolation when building source distributions.
3231
+
3232
+ Assumes that build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_
3233
+ are already installed.
3234
+
3235
+ :stability: experimental
3236
+ :schema: UvConfiguration#no-build-isolation
3237
+ '''
3238
+ result = self._values.get("no_build_isolation")
3239
+ return typing.cast(typing.Optional[builtins.bool], result)
3240
+
3241
+ @builtins.property
3242
+ def no_build_isolation_package(self) -> typing.Optional[typing.List[builtins.str]]:
3243
+ '''(experimental) Disable isolation when building source distributions for a specific package.
3244
+
3245
+ Assumes that the packages' build dependencies specified by `PEP 518 <https://peps.python.org/pep-0518/>`_
3246
+ are already installed.
3247
+
3248
+ :stability: experimental
3249
+ :schema: UvConfiguration#no-build-isolation-package
3250
+ '''
3251
+ result = self._values.get("no_build_isolation_package")
3252
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3253
+
3254
+ @builtins.property
3255
+ def no_build_package(self) -> typing.Optional[typing.List[builtins.str]]:
3256
+ '''(experimental) Don't build source distributions for a specific package.
3257
+
3258
+ :stability: experimental
3259
+ :schema: UvConfiguration#no-build-package
3260
+ '''
3261
+ result = self._values.get("no_build_package")
3262
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3263
+
3264
+ @builtins.property
3265
+ def no_cache(self) -> typing.Optional[builtins.bool]:
3266
+ '''(experimental) Avoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation.
3267
+
3268
+ :stability: experimental
3269
+ :schema: UvConfiguration#no-cache
3270
+ '''
3271
+ result = self._values.get("no_cache")
3272
+ return typing.cast(typing.Optional[builtins.bool], result)
3273
+
3274
+ @builtins.property
3275
+ def no_index(self) -> typing.Optional[builtins.bool]:
3276
+ '''(experimental) Ignore all registry indexes (e.g., PyPI), instead relying on direct URL dependencies and those provided via ``--find-links``.
3277
+
3278
+ :stability: experimental
3279
+ :schema: UvConfiguration#no-index
3280
+ '''
3281
+ result = self._values.get("no_index")
3282
+ return typing.cast(typing.Optional[builtins.bool], result)
3283
+
3284
+ @builtins.property
3285
+ def no_sources(self) -> typing.Optional[builtins.bool]:
3286
+ '''(experimental) Ignore the ``tool.uv.sources`` table when resolving dependencies. Used to lock against the standards-compliant, publishable package metadata, as opposed to using any local or Git sources.
3287
+
3288
+ :stability: experimental
3289
+ :schema: UvConfiguration#no-sources
3290
+ '''
3291
+ result = self._values.get("no_sources")
3292
+ return typing.cast(typing.Optional[builtins.bool], result)
3293
+
3294
+ @builtins.property
3295
+ def offline(self) -> typing.Optional[builtins.bool]:
3296
+ '''(experimental) Disable network access, relying only on locally cached data and locally available files.
3297
+
3298
+ :stability: experimental
3299
+ :schema: UvConfiguration#offline
3300
+ '''
3301
+ result = self._values.get("offline")
3302
+ return typing.cast(typing.Optional[builtins.bool], result)
3303
+
3304
+ @builtins.property
3305
+ def override_dependencies(self) -> typing.Optional[typing.List[builtins.str]]:
3306
+ '''(experimental) PEP 508-style requirements, e.g., ``ruff==0.5.0``, or ``ruff @ https://...``.
3307
+
3308
+ :stability: experimental
3309
+ :schema: UvConfiguration#override-dependencies
3310
+ '''
3311
+ result = self._values.get("override_dependencies")
3312
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3313
+
3314
+ @builtins.property
3315
+ def package(self) -> typing.Optional[builtins.bool]:
3316
+ '''(experimental) Whether the project should be considered a Python package, or a non-package ("virtual") project.
3317
+
3318
+ Packages are built and installed into the virtual environment in editable mode and thus
3319
+ require a build backend, while virtual projects are *not* built or installed; instead, only
3320
+ their dependencies are included in the virtual environment.
3321
+
3322
+ Creating a package requires that a ``build-system`` is present in the ``pyproject.toml``, and
3323
+ that the project adheres to a structure that adheres to the build backend's expectations
3324
+ (e.g., a ``src`` layout).
3325
+
3326
+ :stability: experimental
3327
+ :schema: UvConfiguration#package
3328
+ '''
3329
+ result = self._values.get("package")
3330
+ return typing.cast(typing.Optional[builtins.bool], result)
3331
+
3332
+ @builtins.property
3333
+ def pip(self) -> typing.Optional[PipOptions]:
3334
+ '''
3335
+ :stability: experimental
3336
+ :schema: UvConfiguration#pip
3337
+ '''
3338
+ result = self._values.get("pip")
3339
+ return typing.cast(typing.Optional[PipOptions], result)
3340
+
3341
+ @builtins.property
3342
+ def prerelease(self) -> typing.Optional[builtins.str]:
3343
+ '''(experimental) The strategy to use when considering pre-release versions.
3344
+
3345
+ By default, uv will accept pre-releases for packages that *only* publish pre-releases,
3346
+ along with first-party requirements that contain an explicit pre-release marker in the
3347
+ declared specifiers (``if-necessary-or-explicit``).
3348
+
3349
+ :stability: experimental
3350
+ :schema: UvConfiguration#prerelease
3351
+ '''
3352
+ result = self._values.get("prerelease")
3353
+ return typing.cast(typing.Optional[builtins.str], result)
3354
+
3355
+ @builtins.property
3356
+ def preview(self) -> typing.Optional[builtins.bool]:
3357
+ '''(experimental) Whether to enable experimental, preview features.
3358
+
3359
+ :stability: experimental
3360
+ :schema: UvConfiguration#preview
3361
+ '''
3362
+ result = self._values.get("preview")
3363
+ return typing.cast(typing.Optional[builtins.bool], result)
3364
+
3365
+ @builtins.property
3366
+ def publish_url(self) -> typing.Optional[builtins.str]:
3367
+ '''(experimental) The URL for publishing packages to the Python package index (by default: `https://upload.pypi.org/legacy/ <https://upload.pypi.org/legacy/>`_).
3368
+
3369
+ :stability: experimental
3370
+ :schema: UvConfiguration#publish-url
3371
+ '''
3372
+ result = self._values.get("publish_url")
3373
+ return typing.cast(typing.Optional[builtins.str], result)
3374
+
3375
+ @builtins.property
3376
+ def pypy_install_mirror(self) -> typing.Optional[builtins.str]:
3377
+ '''(experimental) Mirror URL to use for downloading managed PyPy installations.
3378
+
3379
+ By default, managed PyPy installations are downloaded from `downloads.python.org <https://downloads.python.org/>`_.
3380
+ This variable can be set to a mirror URL to use a different source for PyPy installations.
3381
+ The provided URL will replace ``https://downloads.python.org/pypy`` in, e.g., ``https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2``.
3382
+
3383
+ Distributions can be read from a
3384
+ local directory by using the ``file://`` URL scheme.
3385
+
3386
+ :stability: experimental
3387
+ :schema: UvConfiguration#pypy-install-mirror
3388
+ '''
3389
+ result = self._values.get("pypy_install_mirror")
3390
+ return typing.cast(typing.Optional[builtins.str], result)
3391
+
3392
+ @builtins.property
3393
+ def python_downloads(self) -> typing.Optional[builtins.str]:
3394
+ '''(experimental) Whether to allow Python downloads.
3395
+
3396
+ :stability: experimental
3397
+ :schema: UvConfiguration#python-downloads
3398
+ '''
3399
+ result = self._values.get("python_downloads")
3400
+ return typing.cast(typing.Optional[builtins.str], result)
3401
+
3402
+ @builtins.property
3403
+ def python_downloads_json_url(self) -> typing.Optional[builtins.str]:
3404
+ '''(experimental) URL pointing to JSON of custom Python installations.
3405
+
3406
+ Note that currently, only local paths are supported.
3407
+
3408
+ :stability: experimental
3409
+ :schema: UvConfiguration#python-downloads-json-url
3410
+ '''
3411
+ result = self._values.get("python_downloads_json_url")
3412
+ return typing.cast(typing.Optional[builtins.str], result)
3413
+
3414
+ @builtins.property
3415
+ def python_install_mirror(self) -> typing.Optional[builtins.str]:
3416
+ '''(experimental) Mirror URL for downloading managed Python installations.
3417
+
3418
+ By default, managed Python installations are downloaded from ```python-build-standalone`` <https://github.com/astral-sh/python-build-standalone>`_.
3419
+ This variable can be set to a mirror URL to use a different source for Python installations.
3420
+ The provided URL will replace ``https://github.com/astral-sh/python-build-standalone/releases/download`` in, e.g., ``https://github.com/astral-sh/python-build-standalone/releases/download/20240713/cpython-3.12.4%2B20240713-aarch64-apple-darwin-install_only.tar.gz``.
3421
+
3422
+ Distributions can be read from a local directory by using the ``file://`` URL scheme.
3423
+
3424
+ :stability: experimental
3425
+ :schema: UvConfiguration#python-install-mirror
3426
+ '''
3427
+ result = self._values.get("python_install_mirror")
3428
+ return typing.cast(typing.Optional[builtins.str], result)
3429
+
3430
+ @builtins.property
3431
+ def python_preference(self) -> typing.Optional[builtins.str]:
3432
+ '''(experimental) Whether to prefer using Python installations that are already present on the system, or those that are downloaded and installed by uv.
3433
+
3434
+ :stability: experimental
3435
+ :schema: UvConfiguration#python-preference
3436
+ '''
3437
+ result = self._values.get("python_preference")
3438
+ return typing.cast(typing.Optional[builtins.str], result)
3439
+
3440
+ @builtins.property
3441
+ def reinstall(self) -> typing.Optional[builtins.bool]:
3442
+ '''(experimental) Reinstall all packages, regardless of whether they're already installed.
3443
+
3444
+ Implies ``refresh``.
3445
+
3446
+ :stability: experimental
3447
+ :schema: UvConfiguration#reinstall
3448
+ '''
3449
+ result = self._values.get("reinstall")
3450
+ return typing.cast(typing.Optional[builtins.bool], result)
3451
+
3452
+ @builtins.property
3453
+ def reinstall_package(self) -> typing.Optional[typing.List[builtins.str]]:
3454
+ '''(experimental) Reinstall a specific package, regardless of whether it's already installed.
3455
+
3456
+ Implies
3457
+ ``refresh-package``.
3458
+
3459
+ :stability: experimental
3460
+ :schema: UvConfiguration#reinstall-package
3461
+ '''
3462
+ result = self._values.get("reinstall_package")
3463
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3464
+
3465
+ @builtins.property
3466
+ def required_environments(self) -> typing.Optional[typing.List[builtins.str]]:
3467
+ '''(experimental) A list of environment markers, e.g., `sys_platform == 'darwin'.
3468
+
3469
+ :stability: experimental
3470
+ :schema: UvConfiguration#required-environments
3471
+ '''
3472
+ result = self._values.get("required_environments")
3473
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3474
+
3475
+ @builtins.property
3476
+ def required_version(self) -> typing.Optional[builtins.str]:
3477
+ '''(experimental) Enforce a requirement on the version of uv.
3478
+
3479
+ If the version of uv does not meet the requirement at runtime, uv will exit
3480
+ with an error.
3481
+
3482
+ Accepts a `PEP 440 <https://peps.python.org/pep-0440/>`_ specifier, like ``==0.5.0`` or ``>=0.5.0``.
3483
+
3484
+ :stability: experimental
3485
+ :schema: UvConfiguration#required-version
3486
+ '''
3487
+ result = self._values.get("required_version")
3488
+ return typing.cast(typing.Optional[builtins.str], result)
3489
+
3490
+ @builtins.property
3491
+ def resolution(self) -> typing.Optional[builtins.str]:
3492
+ '''(experimental) The strategy to use when selecting between the different compatible versions for a given package requirement.
3493
+
3494
+ By default, uv will use the latest compatible version of each package (``highest``).
3495
+
3496
+ :stability: experimental
3497
+ :schema: UvConfiguration#resolution
3498
+ '''
3499
+ result = self._values.get("resolution")
3500
+ return typing.cast(typing.Optional[builtins.str], result)
3501
+
3502
+ @builtins.property
3503
+ def sources(
3504
+ self,
3505
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.List[typing.Any]]]:
3506
+ '''(experimental) The sources to use when resolving dependencies.
3507
+
3508
+ ``tool.uv.sources`` enriches the dependency metadata with additional sources, incorporated
3509
+ during development. A dependency source can be a Git repository, a URL, a local path, or an
3510
+ alternative registry.
3511
+
3512
+ See `Dependencies <https://docs.astral.sh/uv/concepts/projects/dependencies/>`_ for more.
3513
+
3514
+ :stability: experimental
3515
+ :schema: UvConfiguration#sources
3516
+ '''
3517
+ result = self._values.get("sources")
3518
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.List[typing.Any]]], result)
3519
+
3520
+ @builtins.property
3521
+ def trusted_publishing(self) -> typing.Optional[TrustedPublishing]:
3522
+ '''(experimental) Configure trusted publishing.
3523
+
3524
+ By default, uv checks for trusted publishing when running in a supported environment, but
3525
+ ignores it if it isn't configured.
3526
+
3527
+ uv's supported environments for trusted publishing include GitHub Actions and GitLab CI/CD.
3528
+
3529
+ :stability: experimental
3530
+ :schema: UvConfiguration#trusted-publishing
3531
+ '''
3532
+ result = self._values.get("trusted_publishing")
3533
+ return typing.cast(typing.Optional[TrustedPublishing], result)
3534
+
3535
+ @builtins.property
3536
+ def upgrade(self) -> typing.Optional[builtins.bool]:
3537
+ '''(experimental) Allow package upgrades, ignoring pinned versions in any existing output file.
3538
+
3539
+ :stability: experimental
3540
+ :schema: UvConfiguration#upgrade
3541
+ '''
3542
+ result = self._values.get("upgrade")
3543
+ return typing.cast(typing.Optional[builtins.bool], result)
3544
+
3545
+ @builtins.property
3546
+ def upgrade_package(self) -> typing.Optional[typing.List[builtins.str]]:
3547
+ '''(experimental) Allow upgrades for a specific package, ignoring pinned versions in any existing output file.
3548
+
3549
+ Accepts both standalone package names (``ruff``) and version specifiers (``ruff<0.5.0``).
3550
+
3551
+ :stability: experimental
3552
+ :schema: UvConfiguration#upgrade-package
3553
+ '''
3554
+ result = self._values.get("upgrade_package")
3555
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
3556
+
3557
+ @builtins.property
3558
+ def workspace(self) -> typing.Optional[ToolUvWorkspace]:
3559
+ '''(experimental) The workspace definition for the project, if any.
3560
+
3561
+ :stability: experimental
3562
+ :schema: UvConfiguration#workspace
3563
+ '''
3564
+ result = self._values.get("workspace")
3565
+ return typing.cast(typing.Optional[ToolUvWorkspace], result)
3566
+
3567
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
3568
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
3569
+
3570
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
3571
+ return not (rhs == self)
3572
+
3573
+ def __repr__(self) -> str:
3574
+ return "UvConfiguration(%s)" % ", ".join(
3575
+ k + "=" + repr(v) for k, v in self._values.items()
3576
+ )
3577
+
3578
+
3579
+ @jsii.data_type(
3580
+ jsii_type="projen.python.uvConfig.WheelDataIncludes",
3581
+ jsii_struct_bases=[],
3582
+ name_mapping={
3583
+ "data": "data",
3584
+ "headers": "headers",
3585
+ "platlib": "platlib",
3586
+ "purelib": "purelib",
3587
+ "scripts": "scripts",
3588
+ },
3589
+ )
3590
+ class WheelDataIncludes:
3591
+ def __init__(
3592
+ self,
3593
+ *,
3594
+ data: typing.Optional[builtins.str] = None,
3595
+ headers: typing.Optional[builtins.str] = None,
3596
+ platlib: typing.Optional[builtins.str] = None,
3597
+ purelib: typing.Optional[builtins.str] = None,
3598
+ scripts: typing.Optional[builtins.str] = None,
3599
+ ) -> None:
3600
+ '''(experimental) Data includes for wheels.
3601
+
3602
+ See ``BuildBackendSettings::data``.
3603
+
3604
+ :param data:
3605
+ :param headers:
3606
+ :param platlib:
3607
+ :param purelib:
3608
+ :param scripts:
3609
+
3610
+ :stability: experimental
3611
+ :schema: WheelDataIncludes
3612
+ '''
3613
+ if __debug__:
3614
+ type_hints = typing.get_type_hints(_typecheckingstub__0be987521727f135b7dbd7d35da55b57aed2eaf5c64a6c79a5c0e3283d6277aa)
3615
+ check_type(argname="argument data", value=data, expected_type=type_hints["data"])
3616
+ check_type(argname="argument headers", value=headers, expected_type=type_hints["headers"])
3617
+ check_type(argname="argument platlib", value=platlib, expected_type=type_hints["platlib"])
3618
+ check_type(argname="argument purelib", value=purelib, expected_type=type_hints["purelib"])
3619
+ check_type(argname="argument scripts", value=scripts, expected_type=type_hints["scripts"])
3620
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
3621
+ if data is not None:
3622
+ self._values["data"] = data
3623
+ if headers is not None:
3624
+ self._values["headers"] = headers
3625
+ if platlib is not None:
3626
+ self._values["platlib"] = platlib
3627
+ if purelib is not None:
3628
+ self._values["purelib"] = purelib
3629
+ if scripts is not None:
3630
+ self._values["scripts"] = scripts
3631
+
3632
+ @builtins.property
3633
+ def data(self) -> typing.Optional[builtins.str]:
3634
+ '''
3635
+ :stability: experimental
3636
+ :schema: WheelDataIncludes#data
3637
+ '''
3638
+ result = self._values.get("data")
3639
+ return typing.cast(typing.Optional[builtins.str], result)
3640
+
3641
+ @builtins.property
3642
+ def headers(self) -> typing.Optional[builtins.str]:
3643
+ '''
3644
+ :stability: experimental
3645
+ :schema: WheelDataIncludes#headers
3646
+ '''
3647
+ result = self._values.get("headers")
3648
+ return typing.cast(typing.Optional[builtins.str], result)
3649
+
3650
+ @builtins.property
3651
+ def platlib(self) -> typing.Optional[builtins.str]:
3652
+ '''
3653
+ :stability: experimental
3654
+ :schema: WheelDataIncludes#platlib
3655
+ '''
3656
+ result = self._values.get("platlib")
3657
+ return typing.cast(typing.Optional[builtins.str], result)
3658
+
3659
+ @builtins.property
3660
+ def purelib(self) -> typing.Optional[builtins.str]:
3661
+ '''
3662
+ :stability: experimental
3663
+ :schema: WheelDataIncludes#purelib
3664
+ '''
3665
+ result = self._values.get("purelib")
3666
+ return typing.cast(typing.Optional[builtins.str], result)
3667
+
3668
+ @builtins.property
3669
+ def scripts(self) -> typing.Optional[builtins.str]:
3670
+ '''
3671
+ :stability: experimental
3672
+ :schema: WheelDataIncludes#scripts
3673
+ '''
3674
+ result = self._values.get("scripts")
3675
+ return typing.cast(typing.Optional[builtins.str], result)
3676
+
3677
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
3678
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
3679
+
3680
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
3681
+ return not (rhs == self)
3682
+
3683
+ def __repr__(self) -> str:
3684
+ return "WheelDataIncludes(%s)" % ", ".join(
3685
+ k + "=" + repr(v) for k, v in self._values.items()
3686
+ )
3687
+
3688
+
3689
+ __all__ = [
3690
+ "BuildBackendSettings",
3691
+ "DependencyGroupSettings",
3692
+ "Index",
3693
+ "IndexCacheControl",
3694
+ "PipGroupName",
3695
+ "PipOptions",
3696
+ "SchemaConflictItem",
3697
+ "StaticMetadata",
3698
+ "ToolUvWorkspace",
3699
+ "TrustedPublishing",
3700
+ "UvConfiguration",
3701
+ "WheelDataIncludes",
3702
+ ]
3703
+
3704
+ publication.publish()
3705
+
3706
+ def _typecheckingstub__e8edb4b678376787a735855010994c917f5562ec1c18ac7700c5f21373aa27eb(
3707
+ *,
3708
+ data: typing.Optional[typing.Union[WheelDataIncludes, typing.Dict[builtins.str, typing.Any]]] = None,
3709
+ default_excludes: typing.Optional[builtins.bool] = None,
3710
+ module_name: typing.Any = None,
3711
+ module_root: typing.Optional[builtins.str] = None,
3712
+ namespace: typing.Optional[builtins.bool] = None,
3713
+ source_exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
3714
+ source_include: typing.Optional[typing.Sequence[builtins.str]] = None,
3715
+ wheel_exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
3716
+ ) -> None:
3717
+ """Type checking stubs"""
3718
+ pass
3719
+
3720
+ def _typecheckingstub__bd491f584ee7212fb2c3697548f60d044362ecd866f97a41a269a2f581e15d60(
3721
+ *,
3722
+ requires_python: typing.Optional[builtins.str] = None,
3723
+ ) -> None:
3724
+ """Type checking stubs"""
3725
+ pass
3726
+
3727
+ def _typecheckingstub__075e56d66f36a514ad1fafdc5b03260161a84fb1d2c5ce8069204ee4b239111d(
3728
+ *,
3729
+ url: builtins.str,
3730
+ authenticate: typing.Optional[builtins.str] = None,
3731
+ cache_control: typing.Optional[typing.Union[IndexCacheControl, typing.Dict[builtins.str, typing.Any]]] = None,
3732
+ default: typing.Optional[builtins.bool] = None,
3733
+ explicit: typing.Optional[builtins.bool] = None,
3734
+ format: typing.Optional[builtins.str] = None,
3735
+ ignore_error_codes: typing.Optional[typing.Sequence[jsii.Number]] = None,
3736
+ name: typing.Optional[builtins.str] = None,
3737
+ publish_url: typing.Optional[builtins.str] = None,
3738
+ ) -> None:
3739
+ """Type checking stubs"""
3740
+ pass
3741
+
3742
+ def _typecheckingstub__dadc80a7c1e7527e1cc3946322c9b1d4206a4fd507f1046ab1298219615cd172(
3743
+ *,
3744
+ api: typing.Optional[builtins.str] = None,
3745
+ files: typing.Optional[builtins.str] = None,
3746
+ ) -> None:
3747
+ """Type checking stubs"""
3748
+ pass
3749
+
3750
+ def _typecheckingstub__61408a230f83617e8924d0c29339bd155df27bf401eeae828f9b19222e91953d(
3751
+ *,
3752
+ name: builtins.str,
3753
+ path: typing.Optional[builtins.str] = None,
3754
+ ) -> None:
3755
+ """Type checking stubs"""
3756
+ pass
3757
+
3758
+ def _typecheckingstub__945d6160c5542e9b39ed19c707a1b0e7ee5ea909cc55041a32f162098f3853e7(
3759
+ *,
3760
+ all_extras: typing.Optional[builtins.bool] = None,
3761
+ allow_empty_requirements: typing.Optional[builtins.bool] = None,
3762
+ annotation_style: typing.Optional[builtins.str] = None,
3763
+ break_system_packages: typing.Optional[builtins.bool] = None,
3764
+ compile_bytecode: typing.Optional[builtins.bool] = None,
3765
+ config_settings: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
3766
+ config_settings_package: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]] = None,
3767
+ custom_compile_command: typing.Optional[builtins.str] = None,
3768
+ dependency_metadata: typing.Optional[typing.Sequence[typing.Union[StaticMetadata, typing.Dict[builtins.str, typing.Any]]]] = None,
3769
+ emit_build_options: typing.Optional[builtins.bool] = None,
3770
+ emit_find_links: typing.Optional[builtins.bool] = None,
3771
+ emit_index_annotation: typing.Optional[builtins.bool] = None,
3772
+ emit_index_url: typing.Optional[builtins.bool] = None,
3773
+ emit_marker_expression: typing.Optional[builtins.bool] = None,
3774
+ exclude_newer: typing.Optional[builtins.str] = None,
3775
+ exclude_newer_package: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
3776
+ extra: typing.Optional[typing.Sequence[builtins.str]] = None,
3777
+ extra_build_dependencies: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[typing.Any]]] = None,
3778
+ extra_build_variables: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]] = None,
3779
+ extra_index_url: typing.Optional[typing.Sequence[builtins.str]] = None,
3780
+ find_links: typing.Optional[typing.Sequence[builtins.str]] = None,
3781
+ fork_strategy: typing.Optional[builtins.str] = None,
3782
+ generate_hashes: typing.Optional[builtins.bool] = None,
3783
+ group: typing.Optional[typing.Sequence[typing.Union[PipGroupName, typing.Dict[builtins.str, typing.Any]]]] = None,
3784
+ index_strategy: typing.Optional[builtins.str] = None,
3785
+ index_url: typing.Optional[builtins.str] = None,
3786
+ keyring_provider: typing.Optional[builtins.str] = None,
3787
+ link_mode: typing.Optional[builtins.str] = None,
3788
+ no_annotate: typing.Optional[builtins.bool] = None,
3789
+ no_binary: typing.Optional[typing.Sequence[builtins.str]] = None,
3790
+ no_build: typing.Optional[builtins.bool] = None,
3791
+ no_build_isolation: typing.Optional[builtins.bool] = None,
3792
+ no_build_isolation_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3793
+ no_deps: typing.Optional[builtins.bool] = None,
3794
+ no_emit_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3795
+ no_extra: typing.Optional[typing.Sequence[builtins.str]] = None,
3796
+ no_header: typing.Optional[builtins.bool] = None,
3797
+ no_index: typing.Optional[builtins.bool] = None,
3798
+ no_sources: typing.Optional[builtins.bool] = None,
3799
+ no_strip_extras: typing.Optional[builtins.bool] = None,
3800
+ no_strip_markers: typing.Optional[builtins.bool] = None,
3801
+ only_binary: typing.Optional[typing.Sequence[builtins.str]] = None,
3802
+ output_file: typing.Optional[builtins.str] = None,
3803
+ prefix: typing.Optional[builtins.str] = None,
3804
+ prerelease: typing.Optional[builtins.str] = None,
3805
+ python: typing.Optional[builtins.str] = None,
3806
+ python_platform: typing.Optional[builtins.str] = None,
3807
+ python_version: typing.Optional[builtins.str] = None,
3808
+ reinstall: typing.Optional[builtins.bool] = None,
3809
+ reinstall_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3810
+ require_hashes: typing.Optional[builtins.bool] = None,
3811
+ resolution: typing.Optional[builtins.str] = None,
3812
+ strict: typing.Optional[builtins.bool] = None,
3813
+ system: typing.Optional[builtins.bool] = None,
3814
+ target: typing.Optional[builtins.str] = None,
3815
+ torch_backend: typing.Optional[builtins.str] = None,
3816
+ universal: typing.Optional[builtins.bool] = None,
3817
+ upgrade: typing.Optional[builtins.bool] = None,
3818
+ upgrade_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3819
+ verify_hashes: typing.Optional[builtins.bool] = None,
3820
+ ) -> None:
3821
+ """Type checking stubs"""
3822
+ pass
3823
+
3824
+ def _typecheckingstub__5b46b2b7c2469ab6410378ad3f31dbc8765e96c46f61c3c1491291cc61b80c51(
3825
+ *,
3826
+ extra: typing.Optional[builtins.str] = None,
3827
+ group: typing.Optional[builtins.str] = None,
3828
+ package: typing.Optional[builtins.str] = None,
3829
+ ) -> None:
3830
+ """Type checking stubs"""
3831
+ pass
3832
+
3833
+ def _typecheckingstub__95950a1bc1c16c14e86122ea689404f253b5e734ee94d174a1c7d2cb8d2e1b13(
3834
+ *,
3835
+ name: builtins.str,
3836
+ provides_extra: typing.Optional[typing.Sequence[builtins.str]] = None,
3837
+ requires_dist: typing.Optional[typing.Sequence[builtins.str]] = None,
3838
+ requires_python: typing.Optional[builtins.str] = None,
3839
+ version: typing.Optional[builtins.str] = None,
3840
+ ) -> None:
3841
+ """Type checking stubs"""
3842
+ pass
3843
+
3844
+ def _typecheckingstub__104c3e675eb0f61a5c9f7a762fb9754ae023eb9e0db4e9434a1631ad9e3119bb(
3845
+ *,
3846
+ exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
3847
+ members: typing.Optional[typing.Sequence[builtins.str]] = None,
3848
+ ) -> None:
3849
+ """Type checking stubs"""
3850
+ pass
3851
+
3852
+ def _typecheckingstub__dc04a41ac6b3f4657c0dca1f873f83584612a895d87f8c6a6b420bd4d56e6612(
3853
+ *,
3854
+ add_bounds: typing.Optional[builtins.str] = None,
3855
+ allow_insecure_host: typing.Optional[typing.Sequence[builtins.str]] = None,
3856
+ build_backend: typing.Optional[typing.Union[BuildBackendSettings, typing.Dict[builtins.str, typing.Any]]] = None,
3857
+ build_constraint_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
3858
+ cache_dir: typing.Optional[builtins.str] = None,
3859
+ cache_keys: typing.Optional[typing.Sequence[typing.Any]] = None,
3860
+ check_url: typing.Optional[builtins.str] = None,
3861
+ compile_bytecode: typing.Optional[builtins.bool] = None,
3862
+ concurrent_builds: typing.Optional[jsii.Number] = None,
3863
+ concurrent_downloads: typing.Optional[jsii.Number] = None,
3864
+ concurrent_installs: typing.Optional[jsii.Number] = None,
3865
+ config_settings: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
3866
+ config_settings_package: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, typing.Any]]] = None,
3867
+ conflicts: typing.Optional[typing.Sequence[typing.Sequence[typing.Union[SchemaConflictItem, typing.Dict[builtins.str, typing.Any]]]]] = None,
3868
+ constraint_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
3869
+ default_groups: typing.Any = None,
3870
+ dependency_groups: typing.Optional[typing.Mapping[builtins.str, typing.Union[DependencyGroupSettings, typing.Dict[builtins.str, typing.Any]]]] = None,
3871
+ dependency_metadata: typing.Optional[typing.Sequence[typing.Union[StaticMetadata, typing.Dict[builtins.str, typing.Any]]]] = None,
3872
+ dev_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
3873
+ environments: typing.Optional[typing.Sequence[builtins.str]] = None,
3874
+ exclude_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
3875
+ exclude_newer: typing.Optional[builtins.str] = None,
3876
+ exclude_newer_package: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
3877
+ extra_build_dependencies: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[typing.Any]]] = None,
3878
+ extra_build_variables: typing.Optional[typing.Mapping[builtins.str, typing.Mapping[builtins.str, builtins.str]]] = None,
3879
+ extra_index_url: typing.Optional[typing.Sequence[builtins.str]] = None,
3880
+ find_links: typing.Optional[typing.Sequence[builtins.str]] = None,
3881
+ fork_strategy: typing.Optional[builtins.str] = None,
3882
+ index: typing.Optional[typing.Sequence[typing.Union[Index, typing.Dict[builtins.str, typing.Any]]]] = None,
3883
+ index_strategy: typing.Optional[builtins.str] = None,
3884
+ index_url: typing.Optional[builtins.str] = None,
3885
+ keyring_provider: typing.Optional[builtins.str] = None,
3886
+ link_mode: typing.Optional[builtins.str] = None,
3887
+ managed: typing.Optional[builtins.bool] = None,
3888
+ native_tls: typing.Optional[builtins.bool] = None,
3889
+ no_binary: typing.Optional[builtins.bool] = None,
3890
+ no_binary_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3891
+ no_build: typing.Optional[builtins.bool] = None,
3892
+ no_build_isolation: typing.Optional[builtins.bool] = None,
3893
+ no_build_isolation_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3894
+ no_build_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3895
+ no_cache: typing.Optional[builtins.bool] = None,
3896
+ no_index: typing.Optional[builtins.bool] = None,
3897
+ no_sources: typing.Optional[builtins.bool] = None,
3898
+ offline: typing.Optional[builtins.bool] = None,
3899
+ override_dependencies: typing.Optional[typing.Sequence[builtins.str]] = None,
3900
+ package: typing.Optional[builtins.bool] = None,
3901
+ pip: typing.Optional[typing.Union[PipOptions, typing.Dict[builtins.str, typing.Any]]] = None,
3902
+ prerelease: typing.Optional[builtins.str] = None,
3903
+ preview: typing.Optional[builtins.bool] = None,
3904
+ publish_url: typing.Optional[builtins.str] = None,
3905
+ pypy_install_mirror: typing.Optional[builtins.str] = None,
3906
+ python_downloads: typing.Optional[builtins.str] = None,
3907
+ python_downloads_json_url: typing.Optional[builtins.str] = None,
3908
+ python_install_mirror: typing.Optional[builtins.str] = None,
3909
+ python_preference: typing.Optional[builtins.str] = None,
3910
+ reinstall: typing.Optional[builtins.bool] = None,
3911
+ reinstall_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3912
+ required_environments: typing.Optional[typing.Sequence[builtins.str]] = None,
3913
+ required_version: typing.Optional[builtins.str] = None,
3914
+ resolution: typing.Optional[builtins.str] = None,
3915
+ sources: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[typing.Any]]] = None,
3916
+ trusted_publishing: typing.Optional[TrustedPublishing] = None,
3917
+ upgrade: typing.Optional[builtins.bool] = None,
3918
+ upgrade_package: typing.Optional[typing.Sequence[builtins.str]] = None,
3919
+ workspace: typing.Optional[typing.Union[ToolUvWorkspace, typing.Dict[builtins.str, typing.Any]]] = None,
3920
+ ) -> None:
3921
+ """Type checking stubs"""
3922
+ pass
3923
+
3924
+ def _typecheckingstub__0be987521727f135b7dbd7d35da55b57aed2eaf5c64a6c79a5c0e3283d6277aa(
3925
+ *,
3926
+ data: typing.Optional[builtins.str] = None,
3927
+ headers: typing.Optional[builtins.str] = None,
3928
+ platlib: typing.Optional[builtins.str] = None,
3929
+ purelib: typing.Optional[builtins.str] = None,
3930
+ scripts: typing.Optional[builtins.str] = None,
3931
+ ) -> None:
3932
+ """Type checking stubs"""
3933
+ pass