openapi-python-client 0.22.0__py3-none-any.whl → 0.23.0__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.
Files changed (23) hide show
  1. openapi_python_client/__init__.py +5 -5
  2. openapi_python_client/cli.py +2 -2
  3. openapi_python_client/config.py +3 -0
  4. openapi_python_client/parser/openapi.py +19 -13
  5. openapi_python_client/schema/openapi_schema_pydantic/__init__.py +11 -0
  6. openapi_python_client/schema/openapi_schema_pydantic/components.py +2 -0
  7. openapi_python_client/schema/openapi_schema_pydantic/encoding.py +3 -3
  8. openapi_python_client/schema/openapi_schema_pydantic/header.py +2 -0
  9. openapi_python_client/schema/openapi_schema_pydantic/media_type.py +2 -0
  10. openapi_python_client/schema/openapi_schema_pydantic/open_api.py +5 -7
  11. openapi_python_client/schema/openapi_schema_pydantic/operation.py +2 -8
  12. openapi_python_client/schema/openapi_schema_pydantic/parameter.py +2 -0
  13. openapi_python_client/schema/openapi_schema_pydantic/path_item.py +6 -7
  14. openapi_python_client/schema/openapi_schema_pydantic/request_body.py +2 -0
  15. openapi_python_client/schema/openapi_schema_pydantic/response.py +2 -0
  16. openapi_python_client/schema/openapi_schema_pydantic/schema.py +1 -4
  17. openapi_python_client/templates/pyproject.toml.jinja +4 -4
  18. openapi_python_client/templates/setup.py.jinja +1 -1
  19. {openapi_python_client-0.22.0.dist-info → openapi_python_client-0.23.0.dist-info}/METADATA +16 -5
  20. {openapi_python_client-0.22.0.dist-info → openapi_python_client-0.23.0.dist-info}/RECORD +23 -23
  21. {openapi_python_client-0.22.0.dist-info → openapi_python_client-0.23.0.dist-info}/WHEEL +1 -1
  22. {openapi_python_client-0.22.0.dist-info → openapi_python_client-0.23.0.dist-info}/entry_points.txt +0 -0
  23. {openapi_python_client-0.22.0.dist-info → openapi_python_client-0.23.0.dist-info}/licenses/LICENSE +0 -0
@@ -108,13 +108,11 @@ class Project:
108
108
  """Create the project from templates"""
109
109
 
110
110
  print(f"Generating {self.project_dir}")
111
- if self.config.overwrite:
112
- shutil.rmtree(self.project_dir, ignore_errors=True)
113
-
114
111
  try:
115
112
  self.project_dir.mkdir()
116
113
  except FileExistsError:
117
- return [GeneratorError(detail="Directory already exists. Delete it or use the --overwrite option.")]
114
+ if not self.config.overwrite:
115
+ return [GeneratorError(detail="Directory already exists. Delete it or use the --overwrite option.")]
118
116
  self._create_package()
119
117
  self._build_metadata()
120
118
  self._build_models()
@@ -158,7 +156,7 @@ class Project:
158
156
 
159
157
  def _create_package(self) -> None:
160
158
  if self.package_dir != self.project_dir:
161
- self.package_dir.mkdir()
159
+ self.package_dir.mkdir(exist_ok=True)
162
160
  # Package __init__.py
163
161
  package_init = self.package_dir / "__init__.py"
164
162
 
@@ -214,6 +212,7 @@ class Project:
214
212
  def _build_models(self) -> None:
215
213
  # Generate models
216
214
  models_dir = self.package_dir / "models"
215
+ shutil.rmtree(models_dir, ignore_errors=True)
217
216
  models_dir.mkdir()
218
217
  models_init = models_dir / "__init__.py"
219
218
  imports = []
@@ -259,6 +258,7 @@ class Project:
259
258
 
260
259
  # Generate endpoints
261
260
  api_dir = self.package_dir / "api"
261
+ shutil.rmtree(api_dir, ignore_errors=True)
262
262
  api_dir.mkdir()
263
263
  api_init_path = api_dir / "__init__.py"
264
264
  api_init_template = self.env.get_template("api_init.py.jinja")
@@ -10,7 +10,7 @@ from openapi_python_client import MetaType
10
10
  from openapi_python_client.config import Config, ConfigFile
11
11
  from openapi_python_client.parser.errors import ErrorLevel, GeneratorError, ParseError
12
12
 
13
- app = typer.Typer()
13
+ app = typer.Typer(name="openapi-python-client")
14
14
 
15
15
 
16
16
  def _version_callback(value: bool) -> None:
@@ -63,7 +63,7 @@ def _process_config(
63
63
  # noinspection PyUnusedLocal
64
64
 
65
65
 
66
- @app.callback(name="openapi-python-client")
66
+ @app.callback()
67
67
  def cli(
68
68
  version: bool = typer.Option(False, "--version", callback=_version_callback, help="Print the version and exit"),
69
69
  ) -> None:
@@ -42,6 +42,7 @@ class ConfigFile(BaseModel):
42
42
  use_path_prefixes_for_title_model_names: bool = True
43
43
  post_hooks: Optional[list[str]] = None
44
44
  field_prefix: str = "field_"
45
+ generate_all_tags: bool = False
45
46
  http_timeout: int = 5
46
47
  literal_enums: bool = False
47
48
 
@@ -70,6 +71,7 @@ class Config:
70
71
  use_path_prefixes_for_title_model_names: bool
71
72
  post_hooks: list[str]
72
73
  field_prefix: str
74
+ generate_all_tags: bool
73
75
  http_timeout: int
74
76
  literal_enums: bool
75
77
  document_source: Union[Path, str]
@@ -110,6 +112,7 @@ class Config:
110
112
  use_path_prefixes_for_title_model_names=config_file.use_path_prefixes_for_title_model_names,
111
113
  post_hooks=post_hooks,
112
114
  field_prefix=config_file.field_prefix,
115
+ generate_all_tags=config_file.generate_all_tags,
113
116
  http_timeout=config_file.http_timeout,
114
117
  literal_enums=config_file.literal_enums,
115
118
  document_source=document_source,
@@ -63,13 +63,18 @@ class EndpointCollection:
63
63
  operation: Optional[oai.Operation] = getattr(path_data, method)
64
64
  if operation is None:
65
65
  continue
66
- tag = utils.PythonIdentifier(value=(operation.tags or ["default"])[0], prefix="tag")
67
- collection = endpoints_by_tag.setdefault(tag, EndpointCollection(tag=tag))
66
+
67
+ tags = [utils.PythonIdentifier(value=tag, prefix="tag") for tag in operation.tags or ["default"]]
68
+ if not config.generate_all_tags:
69
+ tags = tags[:1]
70
+
71
+ collections = [endpoints_by_tag.setdefault(tag, EndpointCollection(tag=tag)) for tag in tags]
72
+
68
73
  endpoint, schemas, parameters = Endpoint.from_data(
69
74
  data=operation,
70
75
  path=path,
71
76
  method=method,
72
- tag=tag,
77
+ tags=tags,
73
78
  schemas=schemas,
74
79
  parameters=parameters,
75
80
  request_bodies=request_bodies,
@@ -87,15 +92,16 @@ class EndpointCollection:
87
92
  if not isinstance(endpoint, ParseError):
88
93
  endpoint = Endpoint.sort_parameters(endpoint=endpoint)
89
94
  if isinstance(endpoint, ParseError):
90
- endpoint.header = (
91
- f"WARNING parsing {method.upper()} {path} within {tag}. Endpoint will not be generated."
92
- )
93
- collection.parse_errors.append(endpoint)
95
+ endpoint.header = f"WARNING parsing {method.upper()} {path} within {'/'.join(tags)}. Endpoint will not be generated."
96
+ for collection in collections:
97
+ collection.parse_errors.append(endpoint)
94
98
  continue
95
99
  for error in endpoint.errors:
96
- error.header = f"WARNING parsing {method.upper()} {path} within {tag}."
97
- collection.parse_errors.append(error)
98
- collection.endpoints.append(endpoint)
100
+ error.header = f"WARNING parsing {method.upper()} {path} within {'/'.join(tags)}."
101
+ for collection in collections:
102
+ collection.parse_errors.append(error)
103
+ for collection in collections:
104
+ collection.endpoints.append(endpoint)
99
105
 
100
106
  return endpoints_by_tag, schemas, parameters
101
107
 
@@ -132,7 +138,7 @@ class Endpoint:
132
138
  description: Optional[str]
133
139
  name: str
134
140
  requires_security: bool
135
- tag: str
141
+ tags: list[PythonIdentifier]
136
142
  summary: Optional[str] = ""
137
143
  relative_imports: set[str] = field(default_factory=set)
138
144
  query_parameters: list[Property] = field(default_factory=list)
@@ -393,7 +399,7 @@ class Endpoint:
393
399
  data: oai.Operation,
394
400
  path: str,
395
401
  method: str,
396
- tag: str,
402
+ tags: list[PythonIdentifier],
397
403
  schemas: Schemas,
398
404
  parameters: Parameters,
399
405
  request_bodies: dict[str, Union[oai.RequestBody, oai.Reference]],
@@ -413,7 +419,7 @@ class Endpoint:
413
419
  description=utils.remove_string_escapes(data.description) if data.description else "",
414
420
  name=name,
415
421
  requires_security=bool(data.security),
416
- tag=tag,
422
+ tags=tags,
417
423
  )
418
424
 
419
425
  result, schemas, parameters = Endpoint.add_parameters(
@@ -70,3 +70,14 @@ from .server import Server
70
70
  from .server_variable import ServerVariable
71
71
  from .tag import Tag
72
72
  from .xml import XML
73
+
74
+ PathItem.model_rebuild()
75
+ Operation.model_rebuild()
76
+ Components.model_rebuild()
77
+ Encoding.model_rebuild()
78
+ MediaType.model_rebuild()
79
+ OpenAPI.model_rebuild()
80
+ Parameter.model_rebuild()
81
+ Header.model_rebuild()
82
+ RequestBody.model_rebuild()
83
+ Response.model_rebuild()
@@ -35,6 +35,8 @@ class Components(BaseModel):
35
35
  links: Optional[dict[str, Union[Link, Reference]]] = None
36
36
  callbacks: Optional[dict[str, Union[Callback, Reference]]] = None
37
37
  model_config = ConfigDict(
38
+ # `Callback` contains an unresolvable forward reference, will rebuild in `__init__.py`:
39
+ defer_build=True,
38
40
  extra="allow",
39
41
  json_schema_extra={
40
42
  "examples": [
@@ -6,8 +6,6 @@ from .reference import Reference
6
6
 
7
7
  if TYPE_CHECKING: # pragma: no cover
8
8
  from .header import Header
9
- else:
10
- Header = "Header"
11
9
 
12
10
 
13
11
  class Encoding(BaseModel):
@@ -19,11 +17,13 @@ class Encoding(BaseModel):
19
17
  """
20
18
 
21
19
  contentType: Optional[str] = None
22
- headers: Optional[dict[str, Union[Header, Reference]]] = None
20
+ headers: Optional[dict[str, Union["Header", Reference]]] = None
23
21
  style: Optional[str] = None
24
22
  explode: bool = False
25
23
  allowReserved: bool = False
26
24
  model_config = ConfigDict(
25
+ # `Header` is an unresolvable forward reference, will rebuild in `__init__.py`:
26
+ defer_build=True,
27
27
  extra="allow",
28
28
  json_schema_extra={
29
29
  "examples": [
@@ -21,6 +21,8 @@ class Header(Parameter):
21
21
  name: str = Field(default="")
22
22
  param_in: ParameterLocation = Field(default=ParameterLocation.HEADER, alias="in")
23
23
  model_config = ConfigDict(
24
+ # `Parameter` is not build yet, will rebuild in `__init__.py`:
25
+ defer_build=True,
24
26
  extra="allow",
25
27
  populate_by_name=True,
26
28
  json_schema_extra={
@@ -21,6 +21,8 @@ class MediaType(BaseModel):
21
21
  examples: Optional[dict[str, Union[Example, Reference]]] = None
22
22
  encoding: Optional[dict[str, Encoding]] = None
23
23
  model_config = ConfigDict(
24
+ # `Encoding` is not build yet, will rebuild in `__init__.py`:
25
+ defer_build=True,
24
26
  extra="allow",
25
27
  populate_by_name=True,
26
28
  json_schema_extra={
@@ -5,9 +5,6 @@ from pydantic import BaseModel, ConfigDict, field_validator
5
5
  from .components import Components
6
6
  from .external_documentation import ExternalDocumentation
7
7
  from .info import Info
8
-
9
- # Required to update forward ref after object creation
10
- from .path_item import PathItem # noqa: F401
11
8
  from .paths import Paths
12
9
  from .security_requirement import SecurityRequirement
13
10
  from .server import Server
@@ -32,7 +29,11 @@ class OpenAPI(BaseModel):
32
29
  tags: Optional[list[Tag]] = None
33
30
  externalDocs: Optional[ExternalDocumentation] = None
34
31
  openapi: str
35
- model_config = ConfigDict(extra="allow")
32
+ model_config = ConfigDict(
33
+ # `Components` is not build yet, will rebuild in `__init__.py`:
34
+ defer_build=True,
35
+ extra="allow",
36
+ )
36
37
 
37
38
  @field_validator("openapi")
38
39
  @classmethod
@@ -46,6 +47,3 @@ class OpenAPI(BaseModel):
46
47
  if int(parts[1]) > 1:
47
48
  raise ValueError(f"Only OpenAPI versions 3.1.* are supported, got {value}")
48
49
  return value
49
-
50
-
51
- OpenAPI.model_rebuild()
@@ -4,11 +4,7 @@ from pydantic import BaseModel, ConfigDict, Field
4
4
 
5
5
  from .callback import Callback
6
6
  from .external_documentation import ExternalDocumentation
7
- from .header import Header # noqa: F401
8
7
  from .parameter import Parameter
9
-
10
- # Required to update forward ref after object creation, as this is not imported yet
11
- from .path_item import PathItem # noqa: F401
12
8
  from .reference import Reference
13
9
  from .request_body import RequestBody
14
10
  from .responses import Responses
@@ -38,6 +34,8 @@ class Operation(BaseModel):
38
34
  security: Optional[list[SecurityRequirement]] = None
39
35
  servers: Optional[list[Server]] = None
40
36
  model_config = ConfigDict(
37
+ # `Callback` contains an unresolvable forward reference, will rebuild in `__init__.py`:
38
+ defer_build=True,
41
39
  extra="allow",
42
40
  json_schema_extra={
43
41
  "examples": [
@@ -89,7 +87,3 @@ class Operation(BaseModel):
89
87
  ]
90
88
  },
91
89
  )
92
-
93
-
94
- # PathItem in Callback uses Operation, so we need to update forward refs due to circular dependency
95
- Operation.model_rebuild()
@@ -35,6 +35,8 @@ class Parameter(BaseModel):
35
35
  examples: Optional[dict[str, Union[Example, Reference]]] = None
36
36
  content: Optional[dict[str, MediaType]] = None
37
37
  model_config = ConfigDict(
38
+ # `MediaType` is not build yet, will rebuild in `__init__.py`:
39
+ defer_build=True,
38
40
  extra="allow",
39
41
  populate_by_name=True,
40
42
  json_schema_extra={
@@ -1,4 +1,4 @@
1
- from typing import Optional, Union
1
+ from typing import TYPE_CHECKING, Optional, Union
2
2
 
3
3
  from pydantic import BaseModel, ConfigDict, Field
4
4
 
@@ -6,6 +6,9 @@ from .parameter import Parameter
6
6
  from .reference import Reference
7
7
  from .server import Server
8
8
 
9
+ if TYPE_CHECKING:
10
+ from .operation import Operation # pragma: no cover
11
+
9
12
 
10
13
  class PathItem(BaseModel):
11
14
  """
@@ -33,6 +36,8 @@ class PathItem(BaseModel):
33
36
  servers: Optional[list[Server]] = None
34
37
  parameters: Optional[list[Union[Parameter, Reference]]] = None
35
38
  model_config = ConfigDict(
39
+ # `Operation` is an unresolvable forward reference, will rebuild in `__init__.py`:
40
+ defer_build=True,
36
41
  extra="allow",
37
42
  populate_by_name=True,
38
43
  json_schema_extra={
@@ -69,9 +74,3 @@ class PathItem(BaseModel):
69
74
  ]
70
75
  },
71
76
  )
72
-
73
-
74
- # Operation uses PathItem via Callback, so we need late import and to update forward refs due to circular dependency
75
- from .operation import Operation # noqa: E402
76
-
77
- PathItem.model_rebuild()
@@ -17,6 +17,8 @@ class RequestBody(BaseModel):
17
17
  content: dict[str, MediaType]
18
18
  required: bool = False
19
19
  model_config = ConfigDict(
20
+ # `MediaType` is not build yet, will rebuild in `__init__.py`:
21
+ defer_build=True,
20
22
  extra="allow",
21
23
  json_schema_extra={
22
24
  "examples": [
@@ -23,6 +23,8 @@ class Response(BaseModel):
23
23
  content: Optional[dict[str, MediaType]] = None
24
24
  links: Optional[dict[str, Union[Link, Reference]]] = None
25
25
  model_config = ConfigDict(
26
+ # `MediaType` is not build yet, will rebuild in `__init__.py`:
27
+ defer_build=True,
26
28
  extra="allow",
27
29
  json_schema_extra={
28
30
  "examples": [
@@ -43,7 +43,7 @@ class Schema(BaseModel):
43
43
  anyOf: list[Union[Reference, "Schema"]] = Field(default_factory=list)
44
44
  schema_not: Optional[Union[Reference, "Schema"]] = Field(default=None, alias="not")
45
45
  items: Optional[Union[Reference, "Schema"]] = None
46
- prefixItems: Optional[list[Union[Reference, "Schema"]]] = Field(default_factory=list)
46
+ prefixItems: list[Union[Reference, "Schema"]] = Field(default_factory=list)
47
47
  properties: Optional[dict[str, Union[Reference, "Schema"]]] = None
48
48
  additionalProperties: Optional[Union[bool, Reference, "Schema"]] = None
49
49
  description: Optional[str] = None
@@ -206,6 +206,3 @@ class Schema(BaseModel):
206
206
  self.oneOf = [Schema(type=DataType.NULL), Schema(allOf=self.allOf)]
207
207
  self.allOf = []
208
208
  return self
209
-
210
-
211
- Schema.model_rebuild()
@@ -19,8 +19,8 @@ include = ["CHANGELOG.md", "{{ package_name }}/py.typed"]
19
19
 
20
20
  {% if pdm %}
21
21
  dependencies = [
22
- "httpx>=0.20.0,<0.28.0",
23
- "attrs>=21.3.0",
22
+ "httpx>=0.20.0,<0.29.0",
23
+ "attrs>=22.2.0",
24
24
  "python-dateutil>=2.8.0",
25
25
  ]
26
26
 
@@ -31,8 +31,8 @@ distribution = true
31
31
 
32
32
  [tool.poetry.dependencies]
33
33
  python = "^3.9"
34
- httpx = ">=0.20.0,<0.28.0"
35
- attrs = ">=21.3.0"
34
+ httpx = ">=0.20.0,<0.29.0"
35
+ attrs = ">=22.2.0"
36
36
  python-dateutil = "^2.8.0"
37
37
  {% endif %}
38
38
 
@@ -13,6 +13,6 @@ setup(
13
13
  long_description_content_type="text/markdown",
14
14
  packages=find_packages(),
15
15
  python_requires=">=3.9, <4",
16
- install_requires=["httpx >= 0.20.0, < 0.28.0", "attrs >= 21.3.0", "python-dateutil >= 2.8.0, < 3"],
16
+ install_requires=["httpx >= 0.20.0, < 0.29.0", "attrs >= 22.2.0", "python-dateutil >= 2.8.0, < 3"],
17
17
  package_data={"{{ package_name }}": ["py.typed"]},
18
18
  )
@@ -1,10 +1,11 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: openapi-python-client
3
- Version: 0.22.0
3
+ Version: 0.23.0
4
4
  Summary: Generate modern Python clients from OpenAPI
5
5
  Project-URL: repository, https://github.com/openapi-generators/openapi-python-client
6
6
  Author-email: Dylan Anthony <contact@dylananthony.com>
7
7
  License: MIT
8
+ License-File: LICENSE
8
9
  Keywords: Client,Generator,OpenAPI
9
10
  Classifier: Development Status :: 4 - Beta
10
11
  Classifier: Intended Audience :: Developers
@@ -18,16 +19,16 @@ Classifier: Programming Language :: Python :: 3.13
18
19
  Classifier: Topic :: Software Development :: Code Generators
19
20
  Classifier: Typing :: Typed
20
21
  Requires-Python: <4.0,>=3.9
21
- Requires-Dist: attrs>=21.3.0
22
+ Requires-Dist: attrs>=22.2.0
22
23
  Requires-Dist: colorama>=0.4.3; sys_platform == 'win32'
23
- Requires-Dist: httpx<0.28.0,>=0.20.0
24
+ Requires-Dist: httpx<0.29.0,>=0.20.0
24
25
  Requires-Dist: jinja2<4.0.0,>=3.0.0
25
26
  Requires-Dist: pydantic<3.0.0,>=2.1.1
26
27
  Requires-Dist: python-dateutil<3.0.0,>=2.8.1
27
28
  Requires-Dist: ruamel-yaml<0.19.0,>=0.18.6
28
29
  Requires-Dist: ruff<0.9,>=0.2
29
30
  Requires-Dist: shellingham<2.0.0,>=1.3.2
30
- Requires-Dist: typer<0.14,>0.6
31
+ Requires-Dist: typer<0.16,>0.6
31
32
  Requires-Dist: typing-extensions<5.0.0,>=4.8.0
32
33
  Description-Content-Type: text/markdown
33
34
 
@@ -141,6 +142,16 @@ literal_enums: true
141
142
 
142
143
  This is especially useful if enum values, when transformed to their Python names, end up conflicting due to case sensitivity or special symbols.
143
144
 
145
+ ### generate_all_tags
146
+
147
+ `openapi-python-client` generates module names within the `api` module based on the OpenAPI `tags` of each endpoint.
148
+ By default, only the _first_ tag is generated. If you want to generate **duplicate** endpoint functions using _every_ tag
149
+ listed, you can enable this option:
150
+
151
+ ```yaml
152
+ generate_all_tags: true
153
+ ```
154
+
144
155
  ### project_name_override and package_name_override
145
156
 
146
157
  Used to change the name of generated client library project/package. If the project name is changed but an override for the package name
@@ -1,13 +1,13 @@
1
- openapi_python_client/__init__.py,sha256=QIdml2aiae1UYciIOynYOsJGmDaMFMpxxQWrsVHGrtE,13971
1
+ openapi_python_client/__init__.py,sha256=s1Q0_zxVNY2oAxaDlG6PppKTQRejwC1lsQv9tHMFLeQ,14036
2
2
  openapi_python_client/__main__.py,sha256=wcCrL4PjG51r5wVKqJhcoJPTLfHW0wNbD31DrUN0MWI,28
3
- openapi_python_client/cli.py,sha256=X-hTJJpDsHpEDs_iuR54OsAc27PQ-ez9r-2EJ_efwXc,5553
4
- openapi_python_client/config.py,sha256=hjYTqRac3IoTAdfM4u9UB5Sk4jZCGgMw1o3MV8UCkUM,3932
3
+ openapi_python_client/cli.py,sha256=5JHNaka2JNK6GLxxTsdROaYfNTnEuRWatf4cgedC0YY,5553
4
+ openapi_python_client/config.py,sha256=X2MMXaViqXQr3EtqnYuSUndvqUgWpbAZiCyxTqkWNWU,4057
5
5
  openapi_python_client/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26
6
6
  openapi_python_client/utils.py,sha256=axPyIeoEq3I8QSGtFPgZR3sDOpmGsguDZO3y0pnjp8M,3936
7
7
  openapi_python_client/parser/__init__.py,sha256=dpY1jYmWFPBubtjKCZIlg2uHC_DLC-KpfuMNdQF8RUc,177
8
8
  openapi_python_client/parser/bodies.py,sha256=-eyG9MozkqRTGE3bckQVzeZ9cqgJLobWYE4QWXYaNWY,4690
9
9
  openapi_python_client/parser/errors.py,sha256=HzX7fLhGJEgTY12N9ICjS3KDBnfn-AlCTBRqXmVeoqI,1225
10
- openapi_python_client/parser/openapi.py,sha256=m88YQHxOyuqE2A8TNOFXK1ha9f8eqTEu0C5XC_awFvI,22447
10
+ openapi_python_client/parser/openapi.py,sha256=9OYAGYHM8HVtOg15E_wwb9Hl2KbQI9yeM7FeKLeS9tg,22746
11
11
  openapi_python_client/parser/responses.py,sha256=Gb-qa59HblDIPVYzZYAwZ0mMyQ0UAqEgUNGAeTZ34wY,4379
12
12
  openapi_python_client/parser/properties/__init__.py,sha256=DL6miAjN2XhEvi7DkAaZrTD4p7ej_waD8AaIySjhRBM,16376
13
13
  openapi_python_client/parser/properties/any.py,sha256=ZkBan9M4uvgRy0JHnzBFLGzLzIDsnjyaHPVVrS2Nvck,1322
@@ -37,31 +37,31 @@ openapi_python_client/schema/data_type.py,sha256=-7_l2lfBIjRKNuufMqzyD2geY0dmplQ
37
37
  openapi_python_client/schema/parameter_location.py,sha256=BwUnomk-CA234m91AS8Jca35UdSVQrtNIr-a1ejtyFo,656
38
38
  openapi_python_client/schema/openapi_schema_pydantic/LICENSE,sha256=yoy6owJ7bArVSVjpCNoU0zuGiN3LAxqNVQ1_ZAumOf8,1064
39
39
  openapi_python_client/schema/openapi_schema_pydantic/README.md,sha256=LamzQvAYwLzJxutVBn1hffpquePeKoJdqZSXKfzwE_s,1996
40
- openapi_python_client/schema/openapi_schema_pydantic/__init__.py,sha256=_uCwtT22lcoNI-u9nZhs8-c99mZ7PTYT19ZbYk4notM,1820
40
+ openapi_python_client/schema/openapi_schema_pydantic/__init__.py,sha256=n06seSNejSl9FhIBZ-RGUp0hLEz9adX1Hdbhjg3OqJY,2076
41
41
  openapi_python_client/schema/openapi_schema_pydantic/callback.py,sha256=tO7C1SjAkPXeXyrznjhyw7wFKRFjLi9h24BMb_2Uh10,568
42
- openapi_python_client/schema/openapi_schema_pydantic/components.py,sha256=VLrpK6YEBBpaFF-P5kxhOEBPTDYLKdpAIwBgJuHcQVI,4495
42
+ openapi_python_client/schema/openapi_schema_pydantic/components.py,sha256=ZlhcMFq-SeOnVb4nthJGUoUqlx7nn29z8OMp-sDJEMo,4617
43
43
  openapi_python_client/schema/openapi_schema_pydantic/contact.py,sha256=K3QWV4oMsTYJLp7u8WotScrczQ5loS7ne7YzjzPerIM,619
44
44
  openapi_python_client/schema/openapi_schema_pydantic/discriminator.py,sha256=_q9Ax3qjSwsQ2LhZuKjkqEjgvnYAgHKw-EBBeNW671E,1278
45
- openapi_python_client/schema/openapi_schema_pydantic/encoding.py,sha256=O7NaMBb8L7gYN7yOi8w75k3FA7n9PC4fNhwlbV0OnNM,1242
45
+ openapi_python_client/schema/openapi_schema_pydantic/encoding.py,sha256=VvfcKQFVh24CimjtFiRH9ARmpTH9nwv30HHrp7B5ftk,1330
46
46
  openapi_python_client/schema/openapi_schema_pydantic/example.py,sha256=FxzWAY6SCz_FFUZtlwfkZUo__ODihFn7ezheFoqPHho,1023
47
47
  openapi_python_client/schema/openapi_schema_pydantic/external_documentation.py,sha256=TrHffgkyMOW-C5IQY-QLxyPzSZJfugRsYKVVgKBM8kQ,549
48
- openapi_python_client/schema/openapi_schema_pydantic/header.py,sha256=nMgneLawaTqqx8jkX9Q7Gq_64UiD5dgQ8TBpw4QqUNE,1193
48
+ openapi_python_client/schema/openapi_schema_pydantic/header.py,sha256=9c2Y1T774PR8zVpM51dXgiM1qbcf17WX-h2p1lUtBf4,1290
49
49
  openapi_python_client/schema/openapi_schema_pydantic/info.py,sha256=EVi_xgONNqJui0iTQZRr8ZyCYPocisFLQN9WQh1aFKA,1478
50
50
  openapi_python_client/schema/openapi_schema_pydantic/license.py,sha256=8SDf4vKvJeeyxKWTQWaXuxsBIJDCExRSH-eWDuenzEk,527
51
51
  openapi_python_client/schema/openapi_schema_pydantic/link.py,sha256=BqzdTMl4T7qJG4tLGWjpPevCz6JqRzR9oZQSS0RwVAA,1675
52
- openapi_python_client/schema/openapi_schema_pydantic/media_type.py,sha256=oLvWeiLSHfvUxPUaGtoRTaQRhI7UBUikaR4qNlFl_vY,2013
52
+ openapi_python_client/schema/openapi_schema_pydantic/media_type.py,sha256=xc0Gi-yTmNBcEp8mhvuBwMU6S2qXt_hCO4qQkLcBszY,2109
53
53
  openapi_python_client/schema/openapi_schema_pydantic/oauth_flow.py,sha256=x48FMmJ2wC3wBbyAKeQRwS5_MBFynleMYmKqHZcXnQU,1161
54
54
  openapi_python_client/schema/openapi_schema_pydantic/oauth_flows.py,sha256=wcfs87M2TQQNIqJyNMIs5ICh3dU_VV5po0kTrkv0J-o,625
55
- openapi_python_client/schema/openapi_schema_pydantic/open_api.py,sha256=eNFhSJL80Fj3h0tpDC836Og1PpAQO_ObLom3xvQ1lyQ,1671
56
- openapi_python_client/schema/openapi_schema_pydantic/operation.py,sha256=82sJupBfj9i27RMhOsxmGPFHOkNlvDxPEcGTM-LtVKU,3817
57
- openapi_python_client/schema/openapi_schema_pydantic/parameter.py,sha256=IEov_NdXxWu77TkBr_Q8IEoayVbCSNh3_51jieZ9YM0,3156
58
- openapi_python_client/schema/openapi_schema_pydantic/path_item.py,sha256=k3N3FlvNJi2Y45WfLTtAg-bFk-T6gZC8K2GE7gIanwY,2951
55
+ openapi_python_client/schema/openapi_schema_pydantic/open_api.py,sha256=-sZb4TbOB-ndAB7kY3vUn6rG1X39w_6dUMgMC-VAvvA,1656
56
+ openapi_python_client/schema/openapi_schema_pydantic/operation.py,sha256=yz0AhUI9f6DQpWvVPFjG_F3AWmPKvHjoqEDCCN0TLpM,3639
57
+ openapi_python_client/schema/openapi_schema_pydantic/parameter.py,sha256=lpE_LVLv9EUpfSTHgrqirnJMhmY1tt7lHtlDNNOHlIk,3253
58
+ openapi_python_client/schema/openapi_schema_pydantic/path_item.py,sha256=Jdky9596_JMOmyZ7fkCOhRCMml1cCZDsIK-7Z9-RdWI,2967
59
59
  openapi_python_client/schema/openapi_schema_pydantic/paths.py,sha256=_gh4d6oTd1FuoCziGgc6RgiULHyZW56ftwWfkj08EKU,495
60
60
  openapi_python_client/schema/openapi_schema_pydantic/reference.py,sha256=JVNaFChySLLHM9_p2Ai50u-IUEesO5xbaLStsh2lDt8,994
61
- openapi_python_client/schema/openapi_schema_pydantic/request_body.py,sha256=PFNnFheVaRzJskjR_JwDlq_ti04zAzcVYfw08jYkJew,2685
62
- openapi_python_client/schema/openapi_schema_pydantic/response.py,sha256=C9Uh1TnT4YYM3zs_j3Ctm1vFgcx81fkDXMEmP-XZRMA,2378
61
+ openapi_python_client/schema/openapi_schema_pydantic/request_body.py,sha256=BbQFmHvKm5KZtizItfryAsQdwdU4BhM00lMy1C4NCV8,2782
62
+ openapi_python_client/schema/openapi_schema_pydantic/response.py,sha256=BZdt-l04JTJDRrLe31PYQ-OvJjH5RVt-vTFDiHOY6uw,2475
63
63
  openapi_python_client/schema/openapi_schema_pydantic/responses.py,sha256=_vdebeD4vd7vKyyYUmd6HgXeidun4X-3RbFzeexXbac,838
64
- openapi_python_client/schema/openapi_schema_pydantic/schema.py,sha256=lNqs-u0UtIH32LurnDVykTkQ1jXp9_2winQUgJ6WxLM,9037
64
+ openapi_python_client/schema/openapi_schema_pydantic/schema.py,sha256=SkgrCyqw3OCWBygFZN028QvByVGa_tnxOHhr7_3bRWY,9002
65
65
  openapi_python_client/schema/openapi_schema_pydantic/security_requirement.py,sha256=NMvHwXqo0wMHtB-usUXucmjugJgvXVCeoxsETqvElYs,870
66
66
  openapi_python_client/schema/openapi_schema_pydantic/security_scheme.py,sha256=TBiinJ2-W7vSMzQ39VHP5S49jnnNOROJq2GKiVu6pTU,1871
67
67
  openapi_python_client/schema/openapi_schema_pydantic/server.py,sha256=8WmOML6ugX9EBM4PgjeJcGJmzXK9wKL1TKfKDdYI6do,1388
@@ -82,9 +82,9 @@ openapi_python_client/templates/literal_enum.py.jinja,sha256=KY2aadYZYFjIMAFXDX8
82
82
  openapi_python_client/templates/model.py.jinja,sha256=EEXNZyiSU_swcDj9GAM--YDtg7T6WrqFtwGDTS9ohws,7140
83
83
  openapi_python_client/templates/models_init.py.jinja,sha256=T2Sj1uGxWlYb5Vc8G3cC65KMDk-mtnEH0g5Xp0xE1Ro,233
84
84
  openapi_python_client/templates/package_init.py.jinja,sha256=EMOU4q7ceaoKJItVKu52vrRTD-BzhrNBjB8VZHN5LgY,196
85
- openapi_python_client/templates/pyproject.toml.jinja,sha256=oNBi0bkhw8SrWK9z8sR5GyMQ_unv-1jedue5Eb5IsXc,1053
85
+ openapi_python_client/templates/pyproject.toml.jinja,sha256=XdF0lbtYI75XggzzouwpeQmmF7HHzLF9KM-1KX1GTcI,1053
86
86
  openapi_python_client/templates/pyproject_ruff.toml.jinja,sha256=OgFfCd9Ca3YsU8WdCxqJoJdCJEtzADpxAxfMghqzn80,74
87
- openapi_python_client/templates/setup.py.jinja,sha256=51a1v2bibpggpg_cC1jVEPP_-2rc4WkU6o7EgpBDHEI,611
87
+ openapi_python_client/templates/setup.py.jinja,sha256=VFgPgU84ubycyPOPP7gFtXi-6CBkPSnk87_2l2UCdfc,611
88
88
  openapi_python_client/templates/str_enum.py.jinja,sha256=5SxGRu_sZxEILC425D45YSu8s12vJGM2PWwYWjOUl8M,232
89
89
  openapi_python_client/templates/types.py.jinja,sha256=3eH9a48zNRudjjUcz39Qss5U_BW14IZ7L9RzAlvXNig,1060
90
90
  openapi_python_client/templates/property_templates/any_property.py.jinja,sha256=D80AUCZZBF7QCky3rqkyP2dJiVYKQUKRmtHusH-pyv0,317
@@ -103,8 +103,8 @@ openapi_python_client/templates/property_templates/model_property.py.jinja,sha25
103
103
  openapi_python_client/templates/property_templates/property_macros.py.jinja,sha256=s0DqGOc8rbEKptUtH1tAht08wahN3xXpaGfyzVa3Kog,580
104
104
  openapi_python_client/templates/property_templates/union_property.py.jinja,sha256=5Ccbj4ceGEap48NO08cVFCwUli0Rdh-xqbT1Rte4bEw,4186
105
105
  openapi_python_client/templates/property_templates/uuid_property.py.jinja,sha256=132WXSoRPqZRkactw-QPdjpaGV4Mbbbu2mRqXh2c8Nc,1265
106
- openapi_python_client-0.22.0.dist-info/METADATA,sha256=y_F8NioAfCj0HoVQ3opdouPRRZbAtMTkp2wJtqDdFEo,10361
107
- openapi_python_client-0.22.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
108
- openapi_python_client-0.22.0.dist-info/entry_points.txt,sha256=iRfSdN2foASZXr8GghkYa6KRXkDgO0EFfLut5IXoBTU,72
109
- openapi_python_client-0.22.0.dist-info/licenses/LICENSE,sha256=4dpxQYqY0DB3aTauRrqYRuu6BVNsPSJdYeUT3sH6pQY,1075
110
- openapi_python_client-0.22.0.dist-info/RECORD,,
106
+ openapi_python_client-0.23.0.dist-info/METADATA,sha256=lcFPZ42rPC5Pcv1f_CTt9fT6g7KbyvbKjkPQrXomE-o,10721
107
+ openapi_python_client-0.23.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
108
+ openapi_python_client-0.23.0.dist-info/entry_points.txt,sha256=iRfSdN2foASZXr8GghkYa6KRXkDgO0EFfLut5IXoBTU,72
109
+ openapi_python_client-0.23.0.dist-info/licenses/LICENSE,sha256=4dpxQYqY0DB3aTauRrqYRuu6BVNsPSJdYeUT3sH6pQY,1075
110
+ openapi_python_client-0.23.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.26.3
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any