@typespec/http-client-python 0.9.1 → 0.9.2-dev.1
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.
- package/dist/emitter/run-python3.js +1 -1
- package/emitter/src/run-python3.ts +1 -1
- package/emitter/temp/tsconfig.tsbuildinfo +1 -1
- package/eng/scripts/Build-Packages.ps1 +7 -5
- package/eng/scripts/ci/format.ts +1 -1
- package/eng/scripts/ci/mypy.ini +1 -1
- package/eng/scripts/ci/pylintrc +1 -1
- package/eng/scripts/ci/pyrightconfig.json +1 -1
- package/eng/scripts/ci/run-ci.ts +1 -0
- package/eng/scripts/ci/run_pylint.py +1 -1
- package/eng/scripts/ci/utils.ts +5 -3
- package/eng/scripts/setup/__pycache__/{venvtools.cpython-38.pyc → venvtools.cpython-39.pyc} +0 -0
- package/eng/scripts/setup/build_pygen_wheel.py +3 -3
- package/eng/scripts/setup/install.py +2 -2
- package/eng/scripts/setup/prepare.py +2 -2
- package/generator/build/lib/pygen/codegen/__init__.py +0 -1
- package/generator/build/lib/pygen/codegen/_utils.py +1 -1
- package/generator/build/lib/pygen/codegen/models/imports.py +2 -13
- package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +1 -3
- package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +9 -13
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +2 -2
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +1 -2
- package/generator/component-detection-pip-report.json +70 -71
- package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
- package/generator/pygen/codegen/__init__.py +0 -1
- package/generator/pygen/codegen/_utils.py +1 -1
- package/generator/pygen/codegen/models/imports.py +2 -13
- package/generator/pygen/codegen/serializers/builder_serializer.py +1 -3
- package/generator/pygen/codegen/templates/model_base.py.jinja2 +9 -13
- package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +2 -2
- package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +1 -2
- package/generator/pygen.egg-info/PKG-INFO +11 -2
- package/generator/setup.py +0 -1
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +0 -7
- package/generator/test/generic_mock_api_tests/conftest.py +3 -3
- package/generator/test/generic_mock_api_tests/test_encode_bytes.py +0 -7
- package/generator/test/unittests/conftest.py +14 -0
- package/generator/test/unittests/requirements.txt +3 -0
- package/generator/test/unittests/test_enums.py +52 -0
- package/generator/test/unittests/test_name_converter.py +43 -0
- package/generator/test/unittests/test_optional_return_type.py +268 -0
- package/generator/test/unittests/test_parameter_ordering.py +104 -0
- package/generator/test/unittests/tox.ini +5 -0
- package/package.json +1 -1
- /package/generator/test/{generic_mock_api_tests/data → data}/image.jpg +0 -0
- /package/generator/test/{generic_mock_api_tests/data → data}/image.png +0 -0
- /package/generator/test/{generic_mock_api_tests/unittests → unittests}/test_model_base_serialization.py +0 -0
- /package/generator/test/{generic_mock_api_tests/unittests → unittests}/test_model_base_xml_serialization.py +0 -0
|
@@ -47,19 +47,21 @@ New-Item -ItemType Directory -Force -Path "$outputPath/packages" | Out-Null
|
|
|
47
47
|
Write-Host "Getting existing version"
|
|
48
48
|
$emitterVersion = node -p -e "require('$packageRoot/package.json').version"
|
|
49
49
|
|
|
50
|
-
# build the generator
|
|
50
|
+
# build the generator
|
|
51
51
|
Push-Location "$packageRoot/generator"
|
|
52
52
|
|
|
53
|
-
# build and pack the emitter with the generator
|
|
53
|
+
# build and pack the emitter with the generator
|
|
54
54
|
Push-Location "$packageRoot"
|
|
55
55
|
try {
|
|
56
56
|
Write-Host "Working in $PWD"
|
|
57
57
|
|
|
58
58
|
Invoke-LoggedCommand "npm run build" -GroupOutput
|
|
59
59
|
|
|
60
|
-
#
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
# Only run lint:py on Linux OS
|
|
61
|
+
if ($IsLinux) {
|
|
62
|
+
Write-Host "run lint check for pygen"
|
|
63
|
+
Invoke-LoggedCommand "npm run lint:py" -GroupOutput
|
|
64
|
+
}
|
|
63
65
|
|
|
64
66
|
# pack the emitter
|
|
65
67
|
Invoke-LoggedCommand "npm pack"
|
package/eng/scripts/ci/format.ts
CHANGED
package/eng/scripts/ci/mypy.ini
CHANGED
package/eng/scripts/ci/pylintrc
CHANGED
package/eng/scripts/ci/run-ci.ts
CHANGED
|
@@ -55,6 +55,7 @@ function myExecSync(command: string, flavor: string, name?: string): void {
|
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
execSync(getCommand(command, flavor, name), { stdio: "inherit" });
|
|
58
|
+
execSync(getCommand(command, "unittests", name), { stdio: "inherit" });
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
let venvPath = join(root, "venv");
|
package/eng/scripts/ci/utils.ts
CHANGED
|
@@ -20,10 +20,12 @@ const argv = parseArgs({
|
|
|
20
20
|
export async function executeCommand(command: string, args: string[]) {
|
|
21
21
|
const execFileAsync = promisify(execFile);
|
|
22
22
|
try {
|
|
23
|
-
await execFileAsync(command, args);
|
|
23
|
+
await execFileAsync(command, args, { shell: true });
|
|
24
24
|
console.log(chalk.green(`${command} passed`));
|
|
25
|
-
} catch (err) {
|
|
26
|
-
console.error(chalk.red(`Error executing ${command}
|
|
25
|
+
} catch (err: any) {
|
|
26
|
+
console.error(chalk.red(`Error executing ${command}`));
|
|
27
|
+
if (err.stdout) console.error(chalk.yellow("STDOUT:"), err.stdout);
|
|
28
|
+
if (err.stderr) console.error(chalk.yellow("STDERR:"), err.stderr);
|
|
27
29
|
process.exit(1);
|
|
28
30
|
}
|
|
29
31
|
}
|
|
Binary file
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
# --------------------------------------------------------------------------
|
|
8
8
|
import sys
|
|
9
9
|
|
|
10
|
-
if not sys.version_info >= (3,
|
|
11
|
-
raise Exception("Autorest for Python extension requires Python 3.
|
|
10
|
+
if not sys.version_info >= (3, 9, 0):
|
|
11
|
+
raise Exception("Autorest for Python extension requires Python 3.9 at least")
|
|
12
12
|
|
|
13
13
|
try:
|
|
14
14
|
import pip
|
|
@@ -16,7 +16,7 @@ except (ImportError, ModuleNotFoundError):
|
|
|
16
16
|
raise Exception("Your Python installation doesn't have pip available")
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
# Now we have pip and Py >= 3.
|
|
19
|
+
# Now we have pip and Py >= 3.9, go to work
|
|
20
20
|
|
|
21
21
|
from pathlib import Path
|
|
22
22
|
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
# --------------------------------------------------------------------------
|
|
8
8
|
import sys
|
|
9
9
|
|
|
10
|
-
if not sys.version_info >= (3,
|
|
10
|
+
if not sys.version_info >= (3, 9, 0):
|
|
11
11
|
raise Warning(
|
|
12
|
-
"Autorest for Python extension requires Python 3.
|
|
12
|
+
"Autorest for Python extension requires Python 3.9 at least. We will run your code with Pyodide since your Python version isn't adequate."
|
|
13
13
|
)
|
|
14
14
|
|
|
15
15
|
try:
|
|
@@ -9,9 +9,9 @@ import sys
|
|
|
9
9
|
import os
|
|
10
10
|
import argparse
|
|
11
11
|
|
|
12
|
-
if not sys.version_info >= (3,
|
|
12
|
+
if not sys.version_info >= (3, 9, 0):
|
|
13
13
|
raise Warning(
|
|
14
|
-
"Autorest for Python extension requires Python 3.
|
|
14
|
+
"Autorest for Python extension requires Python 3.9 at least. We will run your code with Pyodide since your Python version isn't adequate."
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
from pathlib import Path
|
|
@@ -17,7 +17,7 @@ DEFAULT_LICENSE_DESCRIPTION = (
|
|
|
17
17
|
"MIT License\n"
|
|
18
18
|
"\n"
|
|
19
19
|
"Permission is hereby granted, free of charge, to any person obtaining a copy\n"
|
|
20
|
-
|
|
20
|
+
'of this software and associated documentation files (the "Software"), to deal\n'
|
|
21
21
|
"in the Software without restriction, including without limitation the rights\n"
|
|
22
22
|
"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n"
|
|
23
23
|
"copies of the Software, and to permit persons to whom the Software is\n"
|
|
@@ -168,23 +168,12 @@ class FileImport:
|
|
|
168
168
|
self.type_definitions.update(file_import.type_definitions)
|
|
169
169
|
|
|
170
170
|
def add_mutable_mapping_import(self) -> None:
|
|
171
|
-
self.
|
|
172
|
-
self.add_submodule_import(
|
|
173
|
-
"typing",
|
|
174
|
-
"MutableMapping",
|
|
175
|
-
ImportType.BY_VERSION,
|
|
176
|
-
TypingSection.REGULAR,
|
|
177
|
-
None,
|
|
178
|
-
(((3, 9), "collections.abc", None),),
|
|
179
|
-
)
|
|
171
|
+
self.add_submodule_import("collections.abc", "MutableMapping", ImportType.STDLIB)
|
|
180
172
|
|
|
181
173
|
def define_mutable_mapping_type(self) -> None:
|
|
182
174
|
"""Helper function for defining the mutable mapping type"""
|
|
183
175
|
self.add_mutable_mapping_import()
|
|
184
|
-
self.define_mypy_type(
|
|
185
|
-
"JSON",
|
|
186
|
-
"MutableMapping[str, Any] # pylint: disable=unsubscriptable-object",
|
|
187
|
-
)
|
|
176
|
+
self.define_mypy_type("JSON", "MutableMapping[str, Any]")
|
|
188
177
|
self.add_submodule_import("typing", "Any", ImportType.STDLIB)
|
|
189
178
|
|
|
190
179
|
def to_dict(
|
|
@@ -1373,9 +1373,7 @@ class _PagingOperationSerializer(_OperationSerializer[PagingOperationType]):
|
|
|
1373
1373
|
return retval
|
|
1374
1374
|
|
|
1375
1375
|
def _get_next_callback(self, builder: PagingOperationType) -> List[str]:
|
|
1376
|
-
retval = [
|
|
1377
|
-
f"{'async ' if self.async_mode else ''}def get_next({builder.next_variable_name}=None):" # pylint: disable=line-too-long
|
|
1378
|
-
]
|
|
1376
|
+
retval = [f"{'async ' if self.async_mode else ''}def get_next({builder.next_variable_name}=None):"]
|
|
1379
1377
|
retval.append(f" _request = prepare_request({builder.next_variable_name})")
|
|
1380
1378
|
retval.append("")
|
|
1381
1379
|
retval.extend([f" {l}" for l in self.make_pipeline_call(builder)])
|
|
@@ -18,6 +18,7 @@ import email.utils
|
|
|
18
18
|
from datetime import datetime, date, time, timedelta, timezone
|
|
19
19
|
from json import JSONEncoder
|
|
20
20
|
import xml.etree.ElementTree as ET
|
|
21
|
+
from collections.abc import MutableMapping
|
|
21
22
|
from typing_extensions import Self
|
|
22
23
|
import isodate
|
|
23
24
|
from {{ code_model.core_library }}.exceptions import DeserializationError
|
|
@@ -25,11 +26,6 @@ from {{ code_model.core_library }}{{ "" if code_model.is_azure_flavor else ".uti
|
|
|
25
26
|
from {{ code_model.core_library }}.{{ "" if code_model.is_azure_flavor else "runtime." }}pipeline import PipelineResponse
|
|
26
27
|
from {{ code_model.core_library }}.serialization import _Null
|
|
27
28
|
|
|
28
|
-
if sys.version_info >= (3, 9):
|
|
29
|
-
from collections.abc import MutableMapping
|
|
30
|
-
else:
|
|
31
|
-
from typing import MutableMapping
|
|
32
|
-
|
|
33
29
|
_LOGGER = logging.getLogger(__name__)
|
|
34
30
|
|
|
35
31
|
__all__ = ["SdkJSONEncoder", "Model", "rest_field", "rest_discriminator"]
|
|
@@ -344,7 +340,7 @@ def _get_model(module_name: str, model_name: str):
|
|
|
344
340
|
_UNSET = object()
|
|
345
341
|
|
|
346
342
|
|
|
347
|
-
class _MyMutableMapping(MutableMapping[str, typing.Any]):
|
|
343
|
+
class _MyMutableMapping(MutableMapping[str, typing.Any]):
|
|
348
344
|
def __init__(self, data: typing.Dict[str, typing.Any]) -> None:
|
|
349
345
|
self._data = data
|
|
350
346
|
|
|
@@ -404,13 +400,13 @@ class _MyMutableMapping(MutableMapping[str, typing.Any]): # pylint: disable=uns
|
|
|
404
400
|
return default
|
|
405
401
|
|
|
406
402
|
@typing.overload
|
|
407
|
-
def pop(self, key: str) -> typing.Any: ...
|
|
403
|
+
def pop(self, key: str) -> typing.Any: ... # pylint: disable=arguments-differ
|
|
408
404
|
|
|
409
405
|
@typing.overload
|
|
410
|
-
def pop(self, key: str, default: _T) -> _T: ...
|
|
406
|
+
def pop(self, key: str, default: _T) -> _T: ... # pylint: disable=signature-differs
|
|
411
407
|
|
|
412
408
|
@typing.overload
|
|
413
|
-
def pop(self, key: str, default: typing.Any) -> typing.Any: ...
|
|
409
|
+
def pop(self, key: str, default: typing.Any) -> typing.Any: ... # pylint: disable=signature-differs
|
|
414
410
|
|
|
415
411
|
def pop(self, key: str, default: typing.Any = _UNSET) -> typing.Any:
|
|
416
412
|
"""
|
|
@@ -440,7 +436,7 @@ class _MyMutableMapping(MutableMapping[str, typing.Any]): # pylint: disable=uns
|
|
|
440
436
|
"""
|
|
441
437
|
self._data.clear()
|
|
442
438
|
|
|
443
|
-
def update(self, *args: typing.Any, **kwargs: typing.Any) -> None:
|
|
439
|
+
def update(self, *args: typing.Any, **kwargs: typing.Any) -> None: # pylint: disable=arguments-differ
|
|
444
440
|
"""
|
|
445
441
|
Updates D from mapping/iterable E and F.
|
|
446
442
|
:param any args: Either a mapping object or an iterable of key-value pairs.
|
|
@@ -451,7 +447,7 @@ class _MyMutableMapping(MutableMapping[str, typing.Any]): # pylint: disable=uns
|
|
|
451
447
|
def setdefault(self, key: str, default: None = None) -> None: ...
|
|
452
448
|
|
|
453
449
|
@typing.overload
|
|
454
|
-
def setdefault(self, key: str, default: typing.Any) -> typing.Any: ...
|
|
450
|
+
def setdefault(self, key: str, default: typing.Any) -> typing.Any: ... # pylint: disable=signature-differs
|
|
455
451
|
|
|
456
452
|
def setdefault(self, key: str, default: typing.Any = _UNSET) -> typing.Any:
|
|
457
453
|
"""
|
|
@@ -641,7 +637,7 @@ class Model(_MyMutableMapping):
|
|
|
641
637
|
cls._attr_to_rest_field: typing.Dict[str, _RestField] = dict(attr_to_rest_field.items())
|
|
642
638
|
cls._calculated.add(f"{cls.__module__}.{cls.__qualname__}")
|
|
643
639
|
|
|
644
|
-
return super().__new__(cls)
|
|
640
|
+
return super().__new__(cls)
|
|
645
641
|
|
|
646
642
|
def __init_subclass__(cls, discriminator: typing.Optional[str] = None) -> None:
|
|
647
643
|
for base in cls.__bases__:
|
|
@@ -677,7 +673,7 @@ class Model(_MyMutableMapping):
|
|
|
677
673
|
discriminator_value = data.find(xml_name).text # pyright: ignore
|
|
678
674
|
else:
|
|
679
675
|
discriminator_value = data.get(discriminator._rest_name)
|
|
680
|
-
mapped_cls = cls.__mapping__.get(discriminator_value, cls) # pyright: ignore
|
|
676
|
+
mapped_cls = cls.__mapping__.get(discriminator_value, cls) # pyright: ignore # pylint: disable=no-member
|
|
681
677
|
return mapped_cls._deserialize(data, exist_discriminators)
|
|
682
678
|
|
|
683
679
|
def as_dict(self, *, exclude_readonly: bool = False) -> typing.Dict[str, typing.Any]:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Microsoft Azure SDK for Python
|
|
4
4
|
|
|
5
5
|
This is the Microsoft {{package_pprint_name}} Client Library.
|
|
6
|
-
This package has been tested with Python 3.
|
|
6
|
+
This package has been tested with Python 3.9+.
|
|
7
7
|
For a more complete view of Azure libraries, see the [azure sdk python release](https://aka.ms/azsdk/python/all).
|
|
8
8
|
|
|
9
9
|
# Usage
|
|
@@ -36,7 +36,7 @@ python -m pip install {{ package_name }}
|
|
|
36
36
|
|
|
37
37
|
#### Prequisites
|
|
38
38
|
|
|
39
|
-
- Python 3.
|
|
39
|
+
- Python 3.9 or later is required to use this package.
|
|
40
40
|
- You need an [Azure subscription][azure_sub] to use this package.
|
|
41
41
|
- An existing {{ package_pprint_name }} instance.
|
|
42
42
|
|
|
@@ -67,7 +67,6 @@ setup(
|
|
|
67
67
|
"Programming Language :: Python",
|
|
68
68
|
"Programming Language :: Python :: 3 :: Only",
|
|
69
69
|
"Programming Language :: Python :: 3",
|
|
70
|
-
"Programming Language :: Python :: 3.8",
|
|
71
70
|
"Programming Language :: Python :: 3.9",
|
|
72
71
|
"Programming Language :: Python :: 3.10",
|
|
73
72
|
"Programming Language :: Python :: 3.11",
|
|
@@ -110,7 +109,7 @@ setup(
|
|
|
110
109
|
"typing-extensions>=4.6.0",
|
|
111
110
|
],
|
|
112
111
|
{% if package_mode %}
|
|
113
|
-
python_requires=">=3.
|
|
112
|
+
python_requires=">=3.9",
|
|
114
113
|
{% else %}
|
|
115
114
|
long_description="""\
|
|
116
115
|
{{ code_model.description }}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"install": [
|
|
5
5
|
{
|
|
6
6
|
"download_info": {
|
|
7
|
-
"url": "https://files.pythonhosted.org/packages/
|
|
7
|
+
"url": "https://files.pythonhosted.org/packages/54/21/f43f0a1fa8b06b32812e0975981f4677d28e0f3271601dc88ac5a5b83220/setuptools-78.1.0-py3-none-any.whl",
|
|
8
8
|
"archive_info": {
|
|
9
|
-
"hash": "sha256=
|
|
9
|
+
"hash": "sha256=3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8",
|
|
10
10
|
"hashes": {
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8"
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
},
|
|
@@ -16,9 +16,12 @@
|
|
|
16
16
|
"is_yanked": false,
|
|
17
17
|
"requested": true,
|
|
18
18
|
"metadata": {
|
|
19
|
-
"metadata_version": "2.
|
|
19
|
+
"metadata_version": "2.4",
|
|
20
20
|
"name": "setuptools",
|
|
21
|
-
"version": "
|
|
21
|
+
"version": "78.1.0",
|
|
22
|
+
"dynamic": [
|
|
23
|
+
"license-file"
|
|
24
|
+
],
|
|
22
25
|
"summary": "Easily download, build, install, upgrade, and uninstall Python packages",
|
|
23
26
|
"description_content_type": "text/x-rst",
|
|
24
27
|
"keywords": [
|
|
@@ -45,94 +48,90 @@
|
|
|
45
48
|
"Topic :: Utilities"
|
|
46
49
|
],
|
|
47
50
|
"requires_dist": [
|
|
48
|
-
"pytest
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"jaraco.
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"pytest-
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"sphinx-
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"sphinx-
|
|
76
|
-
"
|
|
77
|
-
"towncrier
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"pytest-
|
|
92
|
-
"
|
|
93
|
-
"pytest-
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"pytest-mypy ; extra == 'type'",
|
|
100
|
-
"mypy ==1.12.* ; extra == 'type'",
|
|
101
|
-
"importlib-metadata >=7.0.2 ; (python_version < \"3.10\") and extra == 'type'",
|
|
102
|
-
"jaraco.develop >=7.21 ; (sys_platform != \"cygwin\") and extra == 'type'"
|
|
51
|
+
"pytest!=8.1.*,>=6; extra == \"test\"",
|
|
52
|
+
"virtualenv>=13.0.0; extra == \"test\"",
|
|
53
|
+
"wheel>=0.44.0; extra == \"test\"",
|
|
54
|
+
"pip>=19.1; extra == \"test\"",
|
|
55
|
+
"packaging>=24.2; extra == \"test\"",
|
|
56
|
+
"jaraco.envs>=2.2; extra == \"test\"",
|
|
57
|
+
"pytest-xdist>=3; extra == \"test\"",
|
|
58
|
+
"jaraco.path>=3.7.2; extra == \"test\"",
|
|
59
|
+
"build[virtualenv]>=1.0.3; extra == \"test\"",
|
|
60
|
+
"filelock>=3.4.0; extra == \"test\"",
|
|
61
|
+
"ini2toml[lite]>=0.14; extra == \"test\"",
|
|
62
|
+
"tomli-w>=1.0.0; extra == \"test\"",
|
|
63
|
+
"pytest-timeout; extra == \"test\"",
|
|
64
|
+
"pytest-perf; sys_platform != \"cygwin\" and extra == \"test\"",
|
|
65
|
+
"jaraco.develop>=7.21; (python_version >= \"3.9\" and sys_platform != \"cygwin\") and extra == \"test\"",
|
|
66
|
+
"pytest-home>=0.5; extra == \"test\"",
|
|
67
|
+
"pytest-subprocess; extra == \"test\"",
|
|
68
|
+
"pyproject-hooks!=1.1; extra == \"test\"",
|
|
69
|
+
"jaraco.test>=5.5; extra == \"test\"",
|
|
70
|
+
"sphinx>=3.5; extra == \"doc\"",
|
|
71
|
+
"jaraco.packaging>=9.3; extra == \"doc\"",
|
|
72
|
+
"rst.linker>=1.9; extra == \"doc\"",
|
|
73
|
+
"furo; extra == \"doc\"",
|
|
74
|
+
"sphinx-lint; extra == \"doc\"",
|
|
75
|
+
"jaraco.tidelift>=1.4; extra == \"doc\"",
|
|
76
|
+
"pygments-github-lexers==0.0.5; extra == \"doc\"",
|
|
77
|
+
"sphinx-favicon; extra == \"doc\"",
|
|
78
|
+
"sphinx-inline-tabs; extra == \"doc\"",
|
|
79
|
+
"sphinx-reredirects; extra == \"doc\"",
|
|
80
|
+
"sphinxcontrib-towncrier; extra == \"doc\"",
|
|
81
|
+
"sphinx-notfound-page<2,>=1; extra == \"doc\"",
|
|
82
|
+
"pyproject-hooks!=1.1; extra == \"doc\"",
|
|
83
|
+
"towncrier<24.7; extra == \"doc\"",
|
|
84
|
+
"packaging>=24.2; extra == \"core\"",
|
|
85
|
+
"more_itertools>=8.8; extra == \"core\"",
|
|
86
|
+
"jaraco.text>=3.7; extra == \"core\"",
|
|
87
|
+
"importlib_metadata>=6; python_version < \"3.10\" and extra == \"core\"",
|
|
88
|
+
"tomli>=2.0.1; python_version < \"3.11\" and extra == \"core\"",
|
|
89
|
+
"wheel>=0.43.0; extra == \"core\"",
|
|
90
|
+
"platformdirs>=4.2.2; extra == \"core\"",
|
|
91
|
+
"jaraco.functools>=4; extra == \"core\"",
|
|
92
|
+
"more_itertools; extra == \"core\"",
|
|
93
|
+
"pytest-checkdocs>=2.4; extra == \"check\"",
|
|
94
|
+
"pytest-ruff>=0.2.1; sys_platform != \"cygwin\" and extra == \"check\"",
|
|
95
|
+
"ruff>=0.8.0; sys_platform != \"cygwin\" and extra == \"check\"",
|
|
96
|
+
"pytest-cov; extra == \"cover\"",
|
|
97
|
+
"pytest-enabler>=2.2; extra == \"enabler\"",
|
|
98
|
+
"pytest-mypy; extra == \"type\"",
|
|
99
|
+
"mypy==1.14.*; extra == \"type\"",
|
|
100
|
+
"importlib_metadata>=7.0.2; python_version < \"3.10\" and extra == \"type\"",
|
|
101
|
+
"jaraco.develop>=7.21; sys_platform != \"cygwin\" and extra == \"type\""
|
|
103
102
|
],
|
|
104
|
-
"requires_python": ">=3.
|
|
103
|
+
"requires_python": ">=3.9",
|
|
105
104
|
"project_url": [
|
|
106
105
|
"Source, https://github.com/pypa/setuptools",
|
|
107
106
|
"Documentation, https://setuptools.pypa.io/",
|
|
108
107
|
"Changelog, https://setuptools.pypa.io/en/stable/history.html"
|
|
109
108
|
],
|
|
110
109
|
"provides_extra": [
|
|
110
|
+
"test",
|
|
111
|
+
"doc",
|
|
112
|
+
"ssl",
|
|
111
113
|
"certs",
|
|
112
|
-
"check",
|
|
113
114
|
"core",
|
|
115
|
+
"check",
|
|
114
116
|
"cover",
|
|
115
|
-
"doc",
|
|
116
117
|
"enabler",
|
|
117
|
-
"ssl",
|
|
118
|
-
"test",
|
|
119
118
|
"type"
|
|
120
119
|
],
|
|
121
|
-
"description": ".. |pypi-version| image:: https://img.shields.io/pypi/v/setuptools.svg\n :target: https://pypi.org/project/setuptools\n\n.. |py-version| image:: https://img.shields.io/pypi/pyversions/setuptools.svg\n\n.. |test-badge| image:: https://github.com/pypa/setuptools/actions/workflows/main.yml/badge.svg\n :target: https://github.com/pypa/setuptools/actions?query=workflow%3A%22tests%22\n :alt: tests\n\n.. |ruff-badge| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json\n :target: https://github.com/astral-sh/ruff\n :alt: Ruff\n\n.. |docs-badge| image:: https://img.shields.io/readthedocs/setuptools/latest.svg\n :target: https://setuptools.pypa.io\n\n.. |skeleton-badge| image:: https://img.shields.io/badge/skeleton-
|
|
120
|
+
"description": ".. |pypi-version| image:: https://img.shields.io/pypi/v/setuptools.svg\n :target: https://pypi.org/project/setuptools\n\n.. |py-version| image:: https://img.shields.io/pypi/pyversions/setuptools.svg\n\n.. |test-badge| image:: https://github.com/pypa/setuptools/actions/workflows/main.yml/badge.svg\n :target: https://github.com/pypa/setuptools/actions?query=workflow%3A%22tests%22\n :alt: tests\n\n.. |ruff-badge| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json\n :target: https://github.com/astral-sh/ruff\n :alt: Ruff\n\n.. |docs-badge| image:: https://img.shields.io/readthedocs/setuptools/latest.svg\n :target: https://setuptools.pypa.io\n\n.. |skeleton-badge| image:: https://img.shields.io/badge/skeleton-2025-informational\n :target: https://blog.jaraco.com/skeleton\n\n.. |codecov-badge| image:: https://img.shields.io/codecov/c/github/pypa/setuptools/master.svg?logo=codecov&logoColor=white\n :target: https://codecov.io/gh/pypa/setuptools\n\n.. |tidelift-badge| image:: https://tidelift.com/badges/github/pypa/setuptools?style=flat\n :target: https://tidelift.com/subscription/pkg/pypi-setuptools?utm_source=pypi-setuptools&utm_medium=readme\n\n.. |discord-badge| image:: https://img.shields.io/discord/803025117553754132\n :target: https://discord.com/channels/803025117553754132/815945031150993468\n :alt: Discord\n\n|pypi-version| |py-version| |test-badge| |ruff-badge| |docs-badge| |skeleton-badge| |codecov-badge| |discord-badge|\n\nSee the `Quickstart <https://setuptools.pypa.io/en/latest/userguide/quickstart.html>`_\nand the `User's Guide <https://setuptools.pypa.io/en/latest/userguide/>`_ for\ninstructions on how to use Setuptools.\n\nQuestions and comments should be directed to `GitHub Discussions\n<https://github.com/pypa/setuptools/discussions>`_.\nBug reports and especially tested patches may be\nsubmitted directly to the `bug tracker\n<https://github.com/pypa/setuptools/issues>`_.\n\n\nCode of Conduct\n===============\n\nEveryone interacting in the setuptools project's codebases, issue trackers,\nchat rooms, and fora is expected to follow the\n`PSF Code of Conduct <https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md>`_.\n\n\nFor Enterprise\n==============\n\nAvailable as part of the Tidelift Subscription.\n\nSetuptools and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.\n\n`Learn more <https://tidelift.com/subscription/pkg/pypi-setuptools?utm_source=pypi-setuptools&utm_medium=referral&utm_campaign=github>`_.\n"
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
],
|
|
125
124
|
"environment": {
|
|
126
125
|
"implementation_name": "cpython",
|
|
127
|
-
"implementation_version": "3.
|
|
126
|
+
"implementation_version": "3.9.21",
|
|
128
127
|
"os_name": "posix",
|
|
129
128
|
"platform_machine": "x86_64",
|
|
130
|
-
"platform_release": "5.15.0-
|
|
129
|
+
"platform_release": "5.15.0-1086-azure",
|
|
131
130
|
"platform_system": "Linux",
|
|
132
|
-
"platform_version": "#
|
|
133
|
-
"python_full_version": "3.
|
|
131
|
+
"platform_version": "#95~20.04.1-Ubuntu SMP Thu Mar 27 18:45:17 UTC 2025",
|
|
132
|
+
"python_full_version": "3.9.21",
|
|
134
133
|
"platform_python_implementation": "CPython",
|
|
135
|
-
"python_version": "3.
|
|
134
|
+
"python_version": "3.9",
|
|
136
135
|
"sys_platform": "linux"
|
|
137
136
|
}
|
|
138
137
|
}
|
|
Binary file
|
|
@@ -17,7 +17,7 @@ DEFAULT_LICENSE_DESCRIPTION = (
|
|
|
17
17
|
"MIT License\n"
|
|
18
18
|
"\n"
|
|
19
19
|
"Permission is hereby granted, free of charge, to any person obtaining a copy\n"
|
|
20
|
-
|
|
20
|
+
'of this software and associated documentation files (the "Software"), to deal\n'
|
|
21
21
|
"in the Software without restriction, including without limitation the rights\n"
|
|
22
22
|
"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n"
|
|
23
23
|
"copies of the Software, and to permit persons to whom the Software is\n"
|
|
@@ -168,23 +168,12 @@ class FileImport:
|
|
|
168
168
|
self.type_definitions.update(file_import.type_definitions)
|
|
169
169
|
|
|
170
170
|
def add_mutable_mapping_import(self) -> None:
|
|
171
|
-
self.
|
|
172
|
-
self.add_submodule_import(
|
|
173
|
-
"typing",
|
|
174
|
-
"MutableMapping",
|
|
175
|
-
ImportType.BY_VERSION,
|
|
176
|
-
TypingSection.REGULAR,
|
|
177
|
-
None,
|
|
178
|
-
(((3, 9), "collections.abc", None),),
|
|
179
|
-
)
|
|
171
|
+
self.add_submodule_import("collections.abc", "MutableMapping", ImportType.STDLIB)
|
|
180
172
|
|
|
181
173
|
def define_mutable_mapping_type(self) -> None:
|
|
182
174
|
"""Helper function for defining the mutable mapping type"""
|
|
183
175
|
self.add_mutable_mapping_import()
|
|
184
|
-
self.define_mypy_type(
|
|
185
|
-
"JSON",
|
|
186
|
-
"MutableMapping[str, Any] # pylint: disable=unsubscriptable-object",
|
|
187
|
-
)
|
|
176
|
+
self.define_mypy_type("JSON", "MutableMapping[str, Any]")
|
|
188
177
|
self.add_submodule_import("typing", "Any", ImportType.STDLIB)
|
|
189
178
|
|
|
190
179
|
def to_dict(
|
|
@@ -1373,9 +1373,7 @@ class _PagingOperationSerializer(_OperationSerializer[PagingOperationType]):
|
|
|
1373
1373
|
return retval
|
|
1374
1374
|
|
|
1375
1375
|
def _get_next_callback(self, builder: PagingOperationType) -> List[str]:
|
|
1376
|
-
retval = [
|
|
1377
|
-
f"{'async ' if self.async_mode else ''}def get_next({builder.next_variable_name}=None):" # pylint: disable=line-too-long
|
|
1378
|
-
]
|
|
1376
|
+
retval = [f"{'async ' if self.async_mode else ''}def get_next({builder.next_variable_name}=None):"]
|
|
1379
1377
|
retval.append(f" _request = prepare_request({builder.next_variable_name})")
|
|
1380
1378
|
retval.append("")
|
|
1381
1379
|
retval.extend([f" {l}" for l in self.make_pipeline_call(builder)])
|