pyopenapi-gen 0.14.0__py3-none-any.whl → 0.14.2__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.
- pyopenapi_gen/cli.py +3 -3
- pyopenapi_gen/context/import_collector.py +10 -10
- pyopenapi_gen/context/render_context.py +13 -13
- pyopenapi_gen/core/auth/plugins.py +7 -7
- pyopenapi_gen/core/http_status_codes.py +2 -4
- pyopenapi_gen/core/http_transport.py +19 -19
- pyopenapi_gen/core/loader/operations/parser.py +2 -2
- pyopenapi_gen/core/loader/operations/request_body.py +3 -3
- pyopenapi_gen/core/loader/parameters/parser.py +3 -3
- pyopenapi_gen/core/loader/responses/parser.py +2 -2
- pyopenapi_gen/core/loader/schemas/extractor.py +4 -4
- pyopenapi_gen/core/pagination.py +3 -3
- pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py +3 -3
- pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py +2 -2
- pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py +3 -3
- pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py +3 -3
- pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py +2 -2
- pyopenapi_gen/core/parsing/common/type_parser.py +2 -3
- pyopenapi_gen/core/parsing/context.py +10 -10
- pyopenapi_gen/core/parsing/cycle_helpers.py +5 -2
- pyopenapi_gen/core/parsing/keywords/all_of_parser.py +5 -5
- pyopenapi_gen/core/parsing/keywords/any_of_parser.py +4 -4
- pyopenapi_gen/core/parsing/keywords/array_items_parser.py +4 -4
- pyopenapi_gen/core/parsing/keywords/one_of_parser.py +4 -4
- pyopenapi_gen/core/parsing/keywords/properties_parser.py +5 -5
- pyopenapi_gen/core/parsing/schema_finalizer.py +15 -15
- pyopenapi_gen/core/parsing/schema_parser.py +44 -25
- pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py +4 -4
- pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py +7 -4
- pyopenapi_gen/core/parsing/unified_cycle_detection.py +10 -10
- pyopenapi_gen/core/schemas.py +10 -10
- pyopenapi_gen/core/streaming_helpers.py +5 -7
- pyopenapi_gen/core/telemetry.py +4 -4
- pyopenapi_gen/core/utils.py +7 -7
- pyopenapi_gen/core/writers/code_writer.py +2 -2
- pyopenapi_gen/core/writers/documentation_writer.py +18 -18
- pyopenapi_gen/core/writers/line_writer.py +3 -3
- pyopenapi_gen/core/writers/python_construct_renderer.py +10 -10
- pyopenapi_gen/emit/models_emitter.py +2 -2
- pyopenapi_gen/emitters/core_emitter.py +3 -5
- pyopenapi_gen/emitters/endpoints_emitter.py +24 -16
- pyopenapi_gen/emitters/exceptions_emitter.py +4 -3
- pyopenapi_gen/emitters/models_emitter.py +6 -6
- pyopenapi_gen/generator/client_generator.py +6 -6
- pyopenapi_gen/helpers/endpoint_utils.py +16 -18
- pyopenapi_gen/helpers/type_cleaner.py +66 -53
- pyopenapi_gen/helpers/type_helper.py +7 -7
- pyopenapi_gen/helpers/type_resolution/array_resolver.py +4 -4
- pyopenapi_gen/helpers/type_resolution/composition_resolver.py +5 -5
- pyopenapi_gen/helpers/type_resolution/finalizer.py +38 -22
- pyopenapi_gen/helpers/type_resolution/named_resolver.py +4 -5
- pyopenapi_gen/helpers/type_resolution/object_resolver.py +11 -11
- pyopenapi_gen/helpers/type_resolution/primitive_resolver.py +1 -2
- pyopenapi_gen/helpers/type_resolution/resolver.py +2 -3
- pyopenapi_gen/ir.py +32 -34
- pyopenapi_gen/types/contracts/protocols.py +5 -5
- pyopenapi_gen/types/contracts/types.py +2 -3
- pyopenapi_gen/types/resolvers/reference_resolver.py +4 -4
- pyopenapi_gen/types/resolvers/response_resolver.py +6 -4
- pyopenapi_gen/types/resolvers/schema_resolver.py +32 -16
- pyopenapi_gen/types/services/type_service.py +55 -9
- pyopenapi_gen/types/strategies/response_strategy.py +6 -7
- pyopenapi_gen/visit/client_visitor.py +5 -7
- pyopenapi_gen/visit/endpoint/generators/docstring_generator.py +7 -7
- pyopenapi_gen/visit/endpoint/generators/request_generator.py +5 -5
- pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py +38 -17
- pyopenapi_gen/visit/endpoint/generators/signature_generator.py +4 -4
- pyopenapi_gen/visit/endpoint/generators/url_args_generator.py +17 -17
- pyopenapi_gen/visit/endpoint/processors/import_analyzer.py +8 -8
- pyopenapi_gen/visit/endpoint/processors/parameter_processor.py +13 -13
- pyopenapi_gen/visit/model/alias_generator.py +1 -4
- pyopenapi_gen/visit/model/dataclass_generator.py +139 -10
- pyopenapi_gen/visit/model/model_visitor.py +2 -3
- pyopenapi_gen/visit/visitor.py +3 -3
- {pyopenapi_gen-0.14.0.dist-info → pyopenapi_gen-0.14.2.dist-info}/METADATA +1 -1
- pyopenapi_gen-0.14.2.dist-info/RECORD +132 -0
- pyopenapi_gen-0.14.0.dist-info/RECORD +0 -132
- {pyopenapi_gen-0.14.0.dist-info → pyopenapi_gen-0.14.2.dist-info}/WHEEL +0 -0
- {pyopenapi_gen-0.14.0.dist-info → pyopenapi_gen-0.14.2.dist-info}/entry_points.txt +0 -0
- {pyopenapi_gen-0.14.0.dist-info → pyopenapi_gen-0.14.2.dist-info}/licenses/LICENSE +0 -0
@@ -4,7 +4,7 @@ Generates Python code for dataclasses from IRSchema objects.
|
|
4
4
|
|
5
5
|
import json
|
6
6
|
import logging
|
7
|
-
from typing import Any,
|
7
|
+
from typing import Any, List, Tuple
|
8
8
|
|
9
9
|
from pyopenapi_gen import IRSchema
|
10
10
|
from pyopenapi_gen.context.render_context import RenderContext
|
@@ -22,7 +22,7 @@ class DataclassGenerator:
|
|
22
22
|
def __init__(
|
23
23
|
self,
|
24
24
|
renderer: PythonConstructRenderer,
|
25
|
-
all_schemas:
|
25
|
+
all_schemas: dict[str, IRSchema] | None,
|
26
26
|
):
|
27
27
|
"""
|
28
28
|
Initialize a new DataclassGenerator.
|
@@ -37,7 +37,130 @@ class DataclassGenerator:
|
|
37
37
|
self.all_schemas = all_schemas if all_schemas is not None else {}
|
38
38
|
self.type_service = UnifiedTypeService(self.all_schemas)
|
39
39
|
|
40
|
-
def
|
40
|
+
def _is_arbitrary_json_object(self, schema: IRSchema) -> bool:
|
41
|
+
"""
|
42
|
+
Check if schema represents an arbitrary JSON object (additionalProperties but no properties).
|
43
|
+
|
44
|
+
Args:
|
45
|
+
schema: The schema to check.
|
46
|
+
|
47
|
+
Returns:
|
48
|
+
True if this is an arbitrary JSON object that should use wrapper class.
|
49
|
+
"""
|
50
|
+
return (
|
51
|
+
schema.type == "object"
|
52
|
+
and not schema.properties # No defined properties
|
53
|
+
and (
|
54
|
+
schema.additional_properties is True # Explicit true
|
55
|
+
or isinstance(schema.additional_properties, IRSchema) # Schema for additional props
|
56
|
+
)
|
57
|
+
)
|
58
|
+
|
59
|
+
def _generate_json_wrapper_class(
|
60
|
+
self,
|
61
|
+
class_name: str,
|
62
|
+
schema: IRSchema,
|
63
|
+
context: RenderContext,
|
64
|
+
) -> str:
|
65
|
+
"""
|
66
|
+
Generate a wrapper class for arbitrary JSON objects.
|
67
|
+
|
68
|
+
This wrapper class preserves all JSON data and provides dict-like access,
|
69
|
+
preventing data loss when deserializing API responses with arbitrary properties.
|
70
|
+
|
71
|
+
Args:
|
72
|
+
class_name: Name of the wrapper class.
|
73
|
+
schema: The schema (should have additionalProperties but no properties).
|
74
|
+
context: Render context for imports.
|
75
|
+
|
76
|
+
Returns:
|
77
|
+
Python code for the wrapper class.
|
78
|
+
"""
|
79
|
+
# Register required imports
|
80
|
+
context.add_import("dataclasses", "dataclass")
|
81
|
+
context.add_import("dataclasses", "field")
|
82
|
+
context.add_import("typing", "Any")
|
83
|
+
context.add_import("..core.schemas", "BaseSchema")
|
84
|
+
|
85
|
+
description = schema.description or "Generic JSON value object that preserves arbitrary data."
|
86
|
+
|
87
|
+
# Generate the wrapper class code
|
88
|
+
code = f'''__all__ = ["{class_name}"]
|
89
|
+
|
90
|
+
@dataclass
|
91
|
+
class {class_name}(BaseSchema):
|
92
|
+
"""
|
93
|
+
{description}
|
94
|
+
|
95
|
+
This class wraps arbitrary JSON objects with no defined schema,
|
96
|
+
preserving all data during serialization/deserialization.
|
97
|
+
"""
|
98
|
+
|
99
|
+
_data: dict[str, Any] = field(default_factory=dict, repr=False)
|
100
|
+
|
101
|
+
@classmethod
|
102
|
+
def from_dict(cls, data: dict[str, Any]) -> '{class_name}':
|
103
|
+
"""
|
104
|
+
Create {class_name} from dictionary, preserving all data.
|
105
|
+
|
106
|
+
Args:
|
107
|
+
data: Dictionary with arbitrary keys and values.
|
108
|
+
|
109
|
+
Returns:
|
110
|
+
{class_name} instance containing the data.
|
111
|
+
"""
|
112
|
+
instance = cls(_data=data)
|
113
|
+
return instance
|
114
|
+
|
115
|
+
def to_dict(self, exclude_none: bool = False) -> dict[str, Any]:
|
116
|
+
"""
|
117
|
+
Convert back to dictionary.
|
118
|
+
|
119
|
+
Args:
|
120
|
+
exclude_none: If True, exclude None values from output.
|
121
|
+
|
122
|
+
Returns:
|
123
|
+
Dictionary representation of the data.
|
124
|
+
"""
|
125
|
+
if exclude_none:
|
126
|
+
return {{k: v for k, v in self._data.items() if v is not None}}
|
127
|
+
return self._data.copy()
|
128
|
+
|
129
|
+
def get(self, key: str, default: Any = None) -> Any:
|
130
|
+
"""Dict-like get method for backward compatibility."""
|
131
|
+
return self._data.get(key, default)
|
132
|
+
|
133
|
+
def __getitem__(self, key: str) -> Any:
|
134
|
+
"""Dict-like item access."""
|
135
|
+
return self._data[key]
|
136
|
+
|
137
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
138
|
+
"""Dict-like item setting."""
|
139
|
+
self._data[key] = value
|
140
|
+
|
141
|
+
def __contains__(self, key: str) -> bool:
|
142
|
+
"""Dict-like 'in' operator."""
|
143
|
+
return key in self._data
|
144
|
+
|
145
|
+
def __bool__(self) -> bool:
|
146
|
+
"""Truthy if contains data."""
|
147
|
+
return bool(self._data)
|
148
|
+
|
149
|
+
def keys(self) -> Any:
|
150
|
+
"""Return dictionary keys."""
|
151
|
+
return self._data.keys()
|
152
|
+
|
153
|
+
def values(self) -> Any:
|
154
|
+
"""Return dictionary values."""
|
155
|
+
return self._data.values()
|
156
|
+
|
157
|
+
def items(self) -> Any:
|
158
|
+
"""Return dictionary items."""
|
159
|
+
return self._data.items()
|
160
|
+
'''
|
161
|
+
return code
|
162
|
+
|
163
|
+
def _get_field_default(self, ps: IRSchema, context: RenderContext) -> str | None:
|
41
164
|
"""
|
42
165
|
Determines the default value expression string for a dataclass field.
|
43
166
|
This method is called for fields determined to be optional.
|
@@ -88,7 +211,7 @@ class DataclassGenerator:
|
|
88
211
|
"""Check if field mapping is required between API and Python field names."""
|
89
212
|
return api_field != python_field
|
90
213
|
|
91
|
-
def _generate_field_mappings(self, properties:
|
214
|
+
def _generate_field_mappings(self, properties: dict[str, Any], sanitized_names: dict[str, str]) -> dict[str, str]:
|
92
215
|
"""Generate field mappings for BaseSchema configuration."""
|
93
216
|
mappings = {}
|
94
217
|
for api_name, python_name in sanitized_names.items():
|
@@ -96,7 +219,7 @@ class DataclassGenerator:
|
|
96
219
|
mappings[api_name] = python_name
|
97
220
|
return mappings
|
98
221
|
|
99
|
-
def _has_any_mappings(self, properties:
|
222
|
+
def _has_any_mappings(self, properties: dict[str, Any], sanitized_names: dict[str, str]) -> bool:
|
100
223
|
"""Check if any field mappings are needed."""
|
101
224
|
return bool(self._generate_field_mappings(properties, sanitized_names))
|
102
225
|
|
@@ -137,9 +260,17 @@ class DataclassGenerator:
|
|
137
260
|
raise ValueError("RenderContext cannot be None.")
|
138
261
|
# Additional check for schema type might be too strict here, as ModelVisitor decides eligibility.
|
139
262
|
|
263
|
+
# Check if this is an arbitrary JSON object that needs wrapper class
|
264
|
+
if self._is_arbitrary_json_object(schema):
|
265
|
+
logger.info(
|
266
|
+
f"DataclassGenerator: Schema '{base_name}' is an arbitrary JSON object. "
|
267
|
+
"Generating wrapper class to preserve data."
|
268
|
+
)
|
269
|
+
return self._generate_json_wrapper_class(base_name, schema, context)
|
270
|
+
|
140
271
|
class_name = base_name
|
141
|
-
fields_data: List[Tuple[str, str,
|
142
|
-
field_mappings:
|
272
|
+
fields_data: List[Tuple[str, str, str | None, str | None]] = []
|
273
|
+
field_mappings: dict[str, str] = {}
|
143
274
|
|
144
275
|
if schema.type == "array" and schema.items:
|
145
276
|
field_name_for_array_content = "items"
|
@@ -147,7 +278,6 @@ class DataclassGenerator:
|
|
147
278
|
raise ValueError("Schema items must be present for array type dataclass field.")
|
148
279
|
|
149
280
|
list_item_py_type = self.type_service.resolve_schema_type(schema.items, context, required=True)
|
150
|
-
list_item_py_type = TypeFinalizer(context)._clean_type(list_item_py_type)
|
151
281
|
field_type_str = f"List[{list_item_py_type}]"
|
152
282
|
|
153
283
|
final_field_type_str = TypeFinalizer(context).finalize(
|
@@ -191,9 +321,8 @@ class DataclassGenerator:
|
|
191
321
|
field_mappings[prop_name] = field_name
|
192
322
|
|
193
323
|
py_type = self.type_service.resolve_schema_type(prop_schema, context, required=is_required)
|
194
|
-
py_type = TypeFinalizer(context)._clean_type(py_type)
|
195
324
|
|
196
|
-
default_expr:
|
325
|
+
default_expr: str | None = None
|
197
326
|
if not is_required:
|
198
327
|
default_expr = self._get_field_default(prop_schema, context)
|
199
328
|
|
@@ -6,7 +6,6 @@ defined in OpenAPI specifications, supporting type aliases, enums, and dataclass
|
|
6
6
|
"""
|
7
7
|
|
8
8
|
import logging
|
9
|
-
from typing import Dict, Optional
|
10
9
|
|
11
10
|
from pyopenapi_gen import IRSchema
|
12
11
|
from pyopenapi_gen.context.render_context import RenderContext
|
@@ -36,7 +35,7 @@ class ModelVisitor(Visitor[IRSchema, str]):
|
|
36
35
|
- All necessary imports for the generated model are registered in the context.
|
37
36
|
"""
|
38
37
|
|
39
|
-
def __init__(self, schemas:
|
38
|
+
def __init__(self, schemas: dict[str, IRSchema] | None = None) -> None:
|
40
39
|
"""
|
41
40
|
Initialize a new ModelVisitor.
|
42
41
|
|
@@ -156,7 +155,7 @@ class ModelVisitor(Visitor[IRSchema, str]):
|
|
156
155
|
|
157
156
|
return self.formatter.format(rendered_code)
|
158
157
|
|
159
|
-
def _get_field_default(self, ps: IRSchema, context: RenderContext) ->
|
158
|
+
def _get_field_default(self, ps: IRSchema, context: RenderContext) -> str | None:
|
160
159
|
"""
|
161
160
|
Determines the default value expression string for a dataclass field.
|
162
161
|
This method is called for fields determined to be optional.
|
pyopenapi_gen/visit/visitor.py
CHANGED
@@ -7,7 +7,7 @@ the base Visitor class that all specific visitors inherit from, and a Registry c
|
|
7
7
|
managing visitor method registration.
|
8
8
|
"""
|
9
9
|
|
10
|
-
from typing import Callable,
|
10
|
+
from typing import Callable, Generic, Type, TypeVar
|
11
11
|
|
12
12
|
from ..context.render_context import RenderContext
|
13
13
|
|
@@ -72,7 +72,7 @@ class Registry(Generic[tNode, tRet]):
|
|
72
72
|
|
73
73
|
def __init__(self) -> None:
|
74
74
|
"""Initialize an empty visitor registry."""
|
75
|
-
self._registry:
|
75
|
+
self._registry: dict[Type[tNode], Callable[[tNode, "RenderContext"], tRet]] = {}
|
76
76
|
|
77
77
|
def register(self, node_type: Type[tNode], visitor: Callable[[tNode, "RenderContext"], tRet]) -> None:
|
78
78
|
"""
|
@@ -84,7 +84,7 @@ class Registry(Generic[tNode, tRet]):
|
|
84
84
|
"""
|
85
85
|
self._registry[node_type] = visitor
|
86
86
|
|
87
|
-
def get_visitor(self, node_type: Type[tNode]) ->
|
87
|
+
def get_visitor(self, node_type: Type[tNode]) -> Callable[[tNode, "RenderContext"], tRet] | None:
|
88
88
|
"""
|
89
89
|
Retrieve the visitor function for a specific node type.
|
90
90
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pyopenapi-gen
|
3
|
-
Version: 0.14.
|
3
|
+
Version: 0.14.2
|
4
4
|
Summary: Modern, async-first Python client generator for OpenAPI specifications with advanced cycle detection and unified type resolution
|
5
5
|
Project-URL: Homepage, https://github.com/your-org/pyopenapi-gen
|
6
6
|
Project-URL: Documentation, https://github.com/your-org/pyopenapi-gen/blob/main/README.md
|
@@ -0,0 +1,132 @@
|
|
1
|
+
pyopenapi_gen/__init__.py,sha256=jU5GYbWa4MBDeDzOzwUHl_8eLGtotxRGLj42d2yskUo,3017
|
2
|
+
pyopenapi_gen/__main__.py,sha256=4-SCaCNhBd7rtyRK58uoDbdl93J0KhUeajP_b0CPpLE,110
|
3
|
+
pyopenapi_gen/cli.py,sha256=9T_XF3-ih_JlM_BOkmHft-HoMCGOqL5UrnAHBJ0fb5w,2320
|
4
|
+
pyopenapi_gen/http_types.py,sha256=EMMYZBt8PNVZKPFu77TQija-JI-nOKyXvpiQP9-VSWE,467
|
5
|
+
pyopenapi_gen/ir.py,sha256=lGrn5VzU5gXHc_Tkjfte2AeMMsTyzAci4dy0bi5aG1E,7243
|
6
|
+
pyopenapi_gen/py.typed,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
|
7
|
+
pyopenapi_gen/context/CLAUDE.md,sha256=eUPvSY2ADQK21i52bWfzyBcDPVvvepErMiQrq6ndwlU,9004
|
8
|
+
pyopenapi_gen/context/file_manager.py,sha256=vpbRByO5SH6COdjb6C-pXkdSIRu7QFqrXxi69VLKBnM,1691
|
9
|
+
pyopenapi_gen/context/import_collector.py,sha256=5WzQ5fXxARHJFZmYZ_GjPG5YjjzRLZTdN7jO2cbbk88,15225
|
10
|
+
pyopenapi_gen/context/render_context.py,sha256=07oINhHWi78qhcf-FNSOtojUrshmw0ZOTEgPpzBptbU,30271
|
11
|
+
pyopenapi_gen/core/CLAUDE.md,sha256=bz48K-PSrhxCq5ScmiLiU9kfpVVzSWRKOA9RdKk_pbg,6482
|
12
|
+
pyopenapi_gen/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
pyopenapi_gen/core/exceptions.py,sha256=HYFiYdmzsZUl46vB8M3B6Vpp6m8iqjUcKDWdL4yEKHo,498
|
14
|
+
pyopenapi_gen/core/http_status_codes.py,sha256=nn8QdXmkv5BQA9C-HTn9wmAVWyEyB9bAHpHve6EZX4M,6249
|
15
|
+
pyopenapi_gen/core/http_transport.py,sha256=Ssyh5a4wWWZlvxG1jhTmynZUTBe5rtVgyDK5FIUXyos,9617
|
16
|
+
pyopenapi_gen/core/pagination.py,sha256=mXSOyfVblWF0jc8dnqXIi0Vgj2UxC_uO_WuvdRIBzs4,2295
|
17
|
+
pyopenapi_gen/core/postprocess_manager.py,sha256=cia8FbDXbulk44ElT1CTlypu1oFjNM41y1gWy8-HSug,9362
|
18
|
+
pyopenapi_gen/core/schemas.py,sha256=Ngehd-Aj4Drs_5i7eL0L5Eu1B_kfT4qxL94TJ_H_I7w,5523
|
19
|
+
pyopenapi_gen/core/streaming_helpers.py,sha256=5fkzH9xsgzZWOTKFrZpmje07S7n7CcOpjteb5dig7ds,2664
|
20
|
+
pyopenapi_gen/core/telemetry.py,sha256=vZ8PqNctndrmII9I1EHCyvp2bVGofBuHjm7II0tIqps,2203
|
21
|
+
pyopenapi_gen/core/utils.py,sha256=rgKNyoOXRleGueUFItM5fpxUxwNMJOGISC_XxSPCPLg,14141
|
22
|
+
pyopenapi_gen/core/warning_collector.py,sha256=DYl9D7eZYs04mDU84KeonS-5-d0aM7hNqraXTex31ss,2799
|
23
|
+
pyopenapi_gen/core/auth/base.py,sha256=E2KUerA_mYv9D7xulUm-lenIxqZHqanjA4oRKpof2ZE,792
|
24
|
+
pyopenapi_gen/core/auth/plugins.py,sha256=u4GZTykoxGwGaWAQyFeTdPKi-pSK7Dp0DCeg5RsrSw4,3446
|
25
|
+
pyopenapi_gen/core/loader/__init__.py,sha256=bt-MQ35fbq-f1YnCcopPg53TuXCI9_7wcMzQZoWVpjU,391
|
26
|
+
pyopenapi_gen/core/loader/loader.py,sha256=fjRw6ZrG6hRS2RBWJY5IOv9e1ULc6tnxVGagqXhMmpk,6374
|
27
|
+
pyopenapi_gen/core/loader/operations/__init__.py,sha256=7se21D-BOy7Qw6C9auJ9v6D3NCuRiDpRlhqxGq11fJs,366
|
28
|
+
pyopenapi_gen/core/loader/operations/parser.py,sha256=E53NCTdTp9a6VKxhSx_6r-jP3BaSz-XtJKnJmwKcYzc,7033
|
29
|
+
pyopenapi_gen/core/loader/operations/post_processor.py,sha256=Rzb3GSiLyJk-0hTBZ6s6iWAj4KqE4Rfo3w-q2wm_R7w,2487
|
30
|
+
pyopenapi_gen/core/loader/operations/request_body.py,sha256=A6kX2oyNh3Ag_h-Flk8gDzZjiUl3lq8F6jGb3o-UhFg,3205
|
31
|
+
pyopenapi_gen/core/loader/parameters/__init__.py,sha256=p13oSibCRC5RCfsP6w7yD9MYs5TXcdI4WwPv7oGUYKk,284
|
32
|
+
pyopenapi_gen/core/loader/parameters/parser.py,sha256=0qGFcbnyWXacrnbxDPicw59JVwl3B3f4NP4tXVJBS9E,8033
|
33
|
+
pyopenapi_gen/core/loader/responses/__init__.py,sha256=6APWoH3IdNkgVmI0KsgZoZ6knDaG-S-pnUCa6gkzT8E,216
|
34
|
+
pyopenapi_gen/core/loader/responses/parser.py,sha256=6dZ86WvyBxPq68UQjF_F8F2FtmGtMm5ZB8UjKXZTu9Y,4063
|
35
|
+
pyopenapi_gen/core/loader/schemas/__init__.py,sha256=rlhujYfw_IzWgzhVhYMJ3eIhE6C5Vi1Ylba-BHEVqOg,296
|
36
|
+
pyopenapi_gen/core/loader/schemas/extractor.py,sha256=vhdVAdhnBYcK-97oYDbMwUjINuJDks8RMA03B_LwWBs,9883
|
37
|
+
pyopenapi_gen/core/parsing/__init__.py,sha256=RJsIR6cHaNoI4tBcpMlAa0JsY64vsHb9sPxPg6rd8FQ,486
|
38
|
+
pyopenapi_gen/core/parsing/context.py,sha256=oahabtftjYiyeKNHwc3fWjSGrIoCeNnKN-KhWofiOmk,7968
|
39
|
+
pyopenapi_gen/core/parsing/cycle_helpers.py,sha256=HyVQBWU78PbypyppHq34yxr6BG4W5Bt4ev5kkGUyvkg,5969
|
40
|
+
pyopenapi_gen/core/parsing/schema_finalizer.py,sha256=BMx7nlg5tECbKDfv6XEwumNNPkzkL5qRPdYrRI8qrxo,6856
|
41
|
+
pyopenapi_gen/core/parsing/schema_parser.py,sha256=1c2pPyFLDNnvfJ0YxPvIdcJWbGk7SG-k2bxGfYF5I7Y,34239
|
42
|
+
pyopenapi_gen/core/parsing/unified_cycle_detection.py,sha256=MXghh1Ip6P1etfjuzPiRiDHBdFdQUb9nFUQqhexcvfc,10836
|
43
|
+
pyopenapi_gen/core/parsing/common/__init__.py,sha256=U3sHMO-l6S3Cm04CVOYmBCpqLEZvCylUI7yQfcTwxYU,27
|
44
|
+
pyopenapi_gen/core/parsing/common/type_parser.py,sha256=h9pg0KWFezjNYvo-A1Dx_ADA7dp4THeMb_JKmZRJk1Q,2542
|
45
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py,sha256=BZOSPQo8bongKYgA4w-KGNBCjfNKoe1mm91CrqNIaTk,150
|
46
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py,sha256=BC2t838RAMQknUDIVz6F0QN0avxq4kDL4ie7GgjRSQA,3620
|
47
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py,sha256=tsHnIdyznAxXz_yA9Ub1ONxi2GSYcVJwKogBkTm95jU,2160
|
49
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py,sha256=UoqD9I7s-WwI50PlgwFmLhFQd3ai8YIJycfkQhq6QlI,1145
|
50
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py,sha256=mgHopKN9ZB2maLrPRNubrSavq0oLYjeJQac60IMRj1Q,627
|
51
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py,sha256=3e90a0u06LIYnXj2TM7aWGfr_DB0L9sLk1HBX2nxy68,1782
|
52
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py,sha256=LM5GJwpkl9jND5LCoxWDnnsoSNKWNT6vf-rYuKG6pk0,1827
|
53
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py,sha256=sEYJrcI1s8TdYei6GP1jcJeiF2zPFyTOIUjnUy6PBTs,1603
|
54
|
+
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py,sha256=AONISSQB4mFnSlCnHPFAECjB1bAeytIXuqswIUiMmGM,1755
|
55
|
+
pyopenapi_gen/core/parsing/keywords/__init__.py,sha256=enTLacWXGXLIOjSJ3j7KNUDzU27Kq3Ww79sFElz02cM,27
|
56
|
+
pyopenapi_gen/core/parsing/keywords/all_of_parser.py,sha256=RYP5MZTCPMJ-yrRqt2tLT6-5MYIB1azFJq3BpBEUMlg,3671
|
57
|
+
pyopenapi_gen/core/parsing/keywords/any_of_parser.py,sha256=qZHhzv3AvXjU2xRFRkQE-bBYBrf2RKhUOUOUkyksj1Q,2957
|
58
|
+
pyopenapi_gen/core/parsing/keywords/array_items_parser.py,sha256=raGsT0V__KX_CvMnIUGlRHvpAuGcPLMNth8PYHP9IEo,2701
|
59
|
+
pyopenapi_gen/core/parsing/keywords/one_of_parser.py,sha256=2X7JW242xnSQUpftjcyLUUXTzfaElBdjMsUQsM956tw,2702
|
60
|
+
pyopenapi_gen/core/parsing/keywords/properties_parser.py,sha256=Wg8sCRrnnjI0kC8clchom4xSH_C_JVNQUpgiUz9oJps,4398
|
61
|
+
pyopenapi_gen/core/parsing/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
|
+
pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py,sha256=lVzzQkKb28l1pTc2Zev3zKid8FcTDNjRLTWEdwt72OM,13442
|
63
|
+
pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py,sha256=d9DZ1CVd6ZFxeyBRJXRJYS_irDL7gcrTGnKzjyhhON8,5107
|
64
|
+
pyopenapi_gen/core/writers/code_writer.py,sha256=5rWMPRdj5dWu3NRER6do4NEJEIa9qL68Hc7zhJ8jSdg,4763
|
65
|
+
pyopenapi_gen/core/writers/documentation_writer.py,sha256=ZnXJsRc9y9bUMsQR7g0qoBJZbBo2MCxHH_5KgxrPtyA,8645
|
66
|
+
pyopenapi_gen/core/writers/line_writer.py,sha256=-K2FaMtQa6hdzGZLcjQrT2ItEmfE-kquTCrn6R3I_QA,7743
|
67
|
+
pyopenapi_gen/core/writers/python_construct_renderer.py,sha256=aRLSiqUkf5Cp72BbJP7nVTmwPPrYlk8W66175joKAg0,12766
|
68
|
+
pyopenapi_gen/core_package_template/README.md,sha256=8YP-MS0KxphRbCGBf7kV3dYIFLU9piOJ3IMm3K_0hcI,1488
|
69
|
+
pyopenapi_gen/emit/models_emitter.py,sha256=MBRq71UjtlZHrpf9QhDN0wXk_X-oGeGd6TAq3RKG7ko,7180
|
70
|
+
pyopenapi_gen/emitters/CLAUDE.md,sha256=iZYEZq1a1h033rxuh97cMpsKUElv72ysvTm3-QQUvrs,9323
|
71
|
+
pyopenapi_gen/emitters/client_emitter.py,sha256=kmMVnG-wAOJm7TUm0xOQ5YnSJfYxz1SwtpiyoUCbcCA,1939
|
72
|
+
pyopenapi_gen/emitters/core_emitter.py,sha256=YSuqDlYv3P687TsVT_Z9n7a6GZepGAvv3-N1Q2kK6Zg,7975
|
73
|
+
pyopenapi_gen/emitters/docs_emitter.py,sha256=aouKqhRdtVvYfGVsye_uqM80nONRy0SqN06cr1l3OgA,1137
|
74
|
+
pyopenapi_gen/emitters/endpoints_emitter.py,sha256=0DXOXu2Yb3DRTic_k63q2L-yKS6ZFdhbcBCK3DPZU3Y,10040
|
75
|
+
pyopenapi_gen/emitters/exceptions_emitter.py,sha256=PfbDQX7dfgg2htvxEh40t7FR7b3BrK8jeRd5INu_kjk,7547
|
76
|
+
pyopenapi_gen/emitters/models_emitter.py,sha256=wJwtvCGEmhy5yhojfoUW2CXNOQytGlN4J8-GcwoYIMY,22221
|
77
|
+
pyopenapi_gen/generator/CLAUDE.md,sha256=BS9KkmLvk2WD-Io-_apoWjGNeMU4q4LKy4UOxYF9WxM,10870
|
78
|
+
pyopenapi_gen/generator/client_generator.py,sha256=EdbeynrOLs7kVhyULJeKOP0jDyfHGfEY_Rss5iI73hw,29407
|
79
|
+
pyopenapi_gen/helpers/CLAUDE.md,sha256=GyIJ0grp4SkD3plAUzyycW4nTUZf9ewtvvsdAGkmIZw,10609
|
80
|
+
pyopenapi_gen/helpers/__init__.py,sha256=m4jSQ1sDH6CesIcqIl_kox4LcDFabGxBpSIWVwbHK0M,39
|
81
|
+
pyopenapi_gen/helpers/endpoint_utils.py,sha256=9qVMIOxJUdJePFskA2A0AFMox_h64Liyc4EfNZNXrXU,22155
|
82
|
+
pyopenapi_gen/helpers/type_cleaner.py,sha256=2FJUkSHMgROHlj6oqRpxg3J088Y72EByxLPIfMjZdyE,14340
|
83
|
+
pyopenapi_gen/helpers/type_helper.py,sha256=5U-VjdY4iEP-64SAc6y0jZGi5fFPsK6hL0yMzF20Tq0,4254
|
84
|
+
pyopenapi_gen/helpers/url_utils.py,sha256=IflBiOcCzLrOvC5P25y12pk88Zu3X071hq4bCeDDxK0,340
|
85
|
+
pyopenapi_gen/helpers/type_resolution/__init__.py,sha256=TbaQZp7jvBiYgmuzuG8Wp56xZq32xEKtpunHqZVG1VA,85
|
86
|
+
pyopenapi_gen/helpers/type_resolution/array_resolver.py,sha256=3sfexxcmXMxp_hkvHtv2eI5xTKyfilIDkrMg530gWKY,2001
|
87
|
+
pyopenapi_gen/helpers/type_resolution/composition_resolver.py,sha256=3waIQtOhbbgFxKXW9EiWeuW0DW-JKI_JTuXbJ_ekVTc,2990
|
88
|
+
pyopenapi_gen/helpers/type_resolution/finalizer.py,sha256=QfN0JuqmkV9nOTpc1Jw1GY5WpaFgLfBOt9ErTXfju_I,5426
|
89
|
+
pyopenapi_gen/helpers/type_resolution/named_resolver.py,sha256=WKXjGotf-oApmViMp29deulvo7rHaw1NvlNWP0jrF1g,9380
|
90
|
+
pyopenapi_gen/helpers/type_resolution/object_resolver.py,sha256=HVdnD_c7erUWr1aeNlIvOthkPbseQhy91JWHssZUc3M,12529
|
91
|
+
pyopenapi_gen/helpers/type_resolution/primitive_resolver.py,sha256=f_5G_NZ9gxMmhOvvpSEvNm6BTHkaQxjax1TEu44Rr8k,1929
|
92
|
+
pyopenapi_gen/helpers/type_resolution/resolver.py,sha256=qploDVhkjC0ogq0iwQcCi-cb3HO6WYJHixijZAUOdco,1945
|
93
|
+
pyopenapi_gen/types/CLAUDE.md,sha256=xRYlHdLhw3QGIfIlWqPt9pewRs736H1YCzwmslKtzZc,4255
|
94
|
+
pyopenapi_gen/types/__init__.py,sha256=Tv4xouOXp1CeOcnhDdh_wWF9PBHAeZmCeVPSm71kouI,359
|
95
|
+
pyopenapi_gen/types/contracts/__init__.py,sha256=qf5kJbbZ8TuH79UQSHBvjE1odKfNJrt5NrBEmurFlSU,358
|
96
|
+
pyopenapi_gen/types/contracts/protocols.py,sha256=uX8He1izFSCGcJf-Z1LJL8P6lw9S4bmmsbInT3BIwHM,2865
|
97
|
+
pyopenapi_gen/types/contracts/types.py,sha256=k3tCjMu6M1zcVXF6jzr-Q9S6LXaMEMoKoO09YEbKeyY,763
|
98
|
+
pyopenapi_gen/types/resolvers/__init__.py,sha256=_5kA49RvyOTyXgt0GbbOfHJcdQw2zHxvU9af8GGyNWc,295
|
99
|
+
pyopenapi_gen/types/resolvers/reference_resolver.py,sha256=ue6gw665Wo07POuAg5820A6AXiCVyQY-unfIzGjxrSY,2034
|
100
|
+
pyopenapi_gen/types/resolvers/response_resolver.py,sha256=_W6-Z_SBQ8tDMd_VqveO5AiFs7Od7eAuqevpUIDCT5o,6481
|
101
|
+
pyopenapi_gen/types/resolvers/schema_resolver.py,sha256=tWNWvCYkXyZ40bzy4ShQJPX2vb_FVgDcrc7tKnWTTwo,22784
|
102
|
+
pyopenapi_gen/types/services/__init__.py,sha256=inSUKmY_Vnuym6tC-AhvjCTj16GbkfxCGLESRr_uQPE,123
|
103
|
+
pyopenapi_gen/types/services/type_service.py,sha256=N_UCyTdt8DRO7FdM7tQT_0G8UJ3OrzqSxTEqEkyrOLg,6784
|
104
|
+
pyopenapi_gen/types/strategies/__init__.py,sha256=bju8_KEPNIow1-woMO-zJCgK_E0M6JnFq0NFsK1R4Ss,171
|
105
|
+
pyopenapi_gen/types/strategies/response_strategy.py,sha256=TmXX2YDQB0cQQ7BvRCGSJM6Iu1p0MMJioCi-_8HPCAg,7341
|
106
|
+
pyopenapi_gen/visit/CLAUDE.md,sha256=Rq2e4S74TXv0ua2ZcCrO6cwCCccf3Yph44oVdj1yFPY,8297
|
107
|
+
pyopenapi_gen/visit/client_visitor.py,sha256=7sMleJZqVgy6mkEUvx9s_LsZvHLS8cvenqqs4jydahg,11115
|
108
|
+
pyopenapi_gen/visit/docs_visitor.py,sha256=hqgd4DAoy7T5Bap4mpH4R-nIZSyAWwFYmrIuNHM03Rg,1644
|
109
|
+
pyopenapi_gen/visit/exception_visitor.py,sha256=D4LtLqdeS34kw6WbwhoWeMQzlh9uHqGNZjFtY0kq3Q4,3855
|
110
|
+
pyopenapi_gen/visit/visitor.py,sha256=KyiOWpNpJXkEOICpJJzqMmzbK4h0F5_7XZkE4R9GYRc,3626
|
111
|
+
pyopenapi_gen/visit/endpoint/__init__.py,sha256=DftIZSWp6Z8jKWoJE2VGKL4G_5cqwFXe9v-PALMmsGk,73
|
112
|
+
pyopenapi_gen/visit/endpoint/endpoint_visitor.py,sha256=1aS0i2D_Y-979_7aBd0W6IS2UVO6wMujsMMw8Qt8PRE,3574
|
113
|
+
pyopenapi_gen/visit/endpoint/generators/__init__.py,sha256=-X-GYnJZ9twiEBr_U0obW8VuSoY6IJmYaxinn-seMzA,50
|
114
|
+
pyopenapi_gen/visit/endpoint/generators/docstring_generator.py,sha256=_VpRabZ2g_N42TTWGI6gtPxqzlZD65dOHm8U_YvtWbQ,5891
|
115
|
+
pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py,sha256=wUJ4_gaA1gRrFCHYFCObBIankxGQu0MNqiOSoZOZmoA,4352
|
116
|
+
pyopenapi_gen/visit/endpoint/generators/request_generator.py,sha256=MKtZ6Fa050gCgqAGhXeo--p_AzqV9RmDd8e4Zvglgo0,5349
|
117
|
+
pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py,sha256=Jb_8hRQY1OfpThupa7UdCNxa712m3WaeNIbLhlYk1bg,24193
|
118
|
+
pyopenapi_gen/visit/endpoint/generators/signature_generator.py,sha256=ENi34Rf2x1Ijtvca652ihV9L2UUT1O2SEsG-66Pm_Z8,3873
|
119
|
+
pyopenapi_gen/visit/endpoint/generators/url_args_generator.py,sha256=GSJwfZS-ylb9690PJdaS9jIiDLwSUj4HI2Meex4n6OE,9565
|
120
|
+
pyopenapi_gen/visit/endpoint/processors/__init__.py,sha256=_6RqpOdDuDheArqDBi3ykhsaetACny88WUuuAJvr_ME,29
|
121
|
+
pyopenapi_gen/visit/endpoint/processors/import_analyzer.py,sha256=ou5pl3S6PXvHrhKeBQraRfK9MTOQE1WUGLeieAVUXRM,3364
|
122
|
+
pyopenapi_gen/visit/endpoint/processors/parameter_processor.py,sha256=E0VoygkhU8iCsvH0U-tA6ZZg2Nm3rfr4e17vxqQLH7c,7666
|
123
|
+
pyopenapi_gen/visit/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
|
+
pyopenapi_gen/visit/model/alias_generator.py,sha256=wEMHipPA1_CFxvQ6CS9j4qgXK93seI1bI_tFJvIrb70,3563
|
125
|
+
pyopenapi_gen/visit/model/dataclass_generator.py,sha256=z0kKH_V2PJyiI9snmryDpAzRiOsQJtk1jrijCnEQQwg,14326
|
126
|
+
pyopenapi_gen/visit/model/enum_generator.py,sha256=AXqKUFuWUUjUF_6_HqBKY8vB5GYu35Pb2C2WPFrOw1k,10061
|
127
|
+
pyopenapi_gen/visit/model/model_visitor.py,sha256=TC6pbxpQiy5FWhmQpfllLuXA3ImTYNMcrazkOFZCIyo,9470
|
128
|
+
pyopenapi_gen-0.14.2.dist-info/METADATA,sha256=ERW_JKw-KdBCYXTQsG1sSXDYV9ILr9GgnKEvzfgHHNY,14025
|
129
|
+
pyopenapi_gen-0.14.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
130
|
+
pyopenapi_gen-0.14.2.dist-info/entry_points.txt,sha256=gxSlNiwom50T3OEZnlocA6qRjGdV0bn6hN_Xr-Ub5wA,56
|
131
|
+
pyopenapi_gen-0.14.2.dist-info/licenses/LICENSE,sha256=UFAyTWKa4w10-QerlJaHJeep7G2gcwpf-JmvI2dS2Gc,1088
|
132
|
+
pyopenapi_gen-0.14.2.dist-info/RECORD,,
|
@@ -1,132 +0,0 @@
|
|
1
|
-
pyopenapi_gen/__init__.py,sha256=jU5GYbWa4MBDeDzOzwUHl_8eLGtotxRGLj42d2yskUo,3017
|
2
|
-
pyopenapi_gen/__main__.py,sha256=4-SCaCNhBd7rtyRK58uoDbdl93J0KhUeajP_b0CPpLE,110
|
3
|
-
pyopenapi_gen/cli.py,sha256=_ewksNDaA5st3TJJMZJWgCZdBGOQp__tkMVqr_6U3vs,2339
|
4
|
-
pyopenapi_gen/http_types.py,sha256=EMMYZBt8PNVZKPFu77TQija-JI-nOKyXvpiQP9-VSWE,467
|
5
|
-
pyopenapi_gen/ir.py,sha256=OWQk53_iVi9JZxVeKRjagF0nhw57skkNPd-4jDsyD7M,7354
|
6
|
-
pyopenapi_gen/py.typed,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
|
7
|
-
pyopenapi_gen/context/CLAUDE.md,sha256=eUPvSY2ADQK21i52bWfzyBcDPVvvepErMiQrq6ndwlU,9004
|
8
|
-
pyopenapi_gen/context/file_manager.py,sha256=vpbRByO5SH6COdjb6C-pXkdSIRu7QFqrXxi69VLKBnM,1691
|
9
|
-
pyopenapi_gen/context/import_collector.py,sha256=rnOgR5-GsHs_oS1iUVbOF3tagcH5namNWvp7k44kugw,15262
|
10
|
-
pyopenapi_gen/context/render_context.py,sha256=AS08ha9WVjgRUsM1LFPjMCgrsHbczHH7c60Z5PbojhY,30320
|
11
|
-
pyopenapi_gen/core/CLAUDE.md,sha256=bz48K-PSrhxCq5ScmiLiU9kfpVVzSWRKOA9RdKk_pbg,6482
|
12
|
-
pyopenapi_gen/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
pyopenapi_gen/core/exceptions.py,sha256=HYFiYdmzsZUl46vB8M3B6Vpp6m8iqjUcKDWdL4yEKHo,498
|
14
|
-
pyopenapi_gen/core/http_status_codes.py,sha256=lIkKFlRkvVa6xkY4kTq5f7djwYmUmJwRo1kCX8m_cEs,6274
|
15
|
-
pyopenapi_gen/core/http_transport.py,sha256=77ZOTyl0_CLuDtSCOVDQoxHDQBnclJgz6f3Hs6cy7hY,9675
|
16
|
-
pyopenapi_gen/core/pagination.py,sha256=aeDOKo-Lu8mcSDqv0TlPXV9Ul-Nca76ZuKhQHKlsMUs,2301
|
17
|
-
pyopenapi_gen/core/postprocess_manager.py,sha256=cia8FbDXbulk44ElT1CTlypu1oFjNM41y1gWy8-HSug,9362
|
18
|
-
pyopenapi_gen/core/schemas.py,sha256=FOE2e1vIl0vif_C34AehVznJG2W1hampPtJEfL80AxI,5535
|
19
|
-
pyopenapi_gen/core/streaming_helpers.py,sha256=XToNnm-EDAqiKh9ZS4GRxyastFkfSyNR0av-NDTZMPg,2706
|
20
|
-
pyopenapi_gen/core/telemetry.py,sha256=l6z972882MRzNOXU2leAvtnlYFLMSKKQ_oHz4qU5_n0,2225
|
21
|
-
pyopenapi_gen/core/utils.py,sha256=-J4lWP_X5jvPTYWkMvgIw4KGt6IKw29eHUAb_C89na4,14163
|
22
|
-
pyopenapi_gen/core/warning_collector.py,sha256=DYl9D7eZYs04mDU84KeonS-5-d0aM7hNqraXTex31ss,2799
|
23
|
-
pyopenapi_gen/core/auth/base.py,sha256=E2KUerA_mYv9D7xulUm-lenIxqZHqanjA4oRKpof2ZE,792
|
24
|
-
pyopenapi_gen/core/auth/plugins.py,sha256=bDWx4MTRFsCKp1i__BsQtZEvQPGU-NKI137-zoxmrgs,3465
|
25
|
-
pyopenapi_gen/core/loader/__init__.py,sha256=bt-MQ35fbq-f1YnCcopPg53TuXCI9_7wcMzQZoWVpjU,391
|
26
|
-
pyopenapi_gen/core/loader/loader.py,sha256=fjRw6ZrG6hRS2RBWJY5IOv9e1ULc6tnxVGagqXhMmpk,6374
|
27
|
-
pyopenapi_gen/core/loader/operations/__init__.py,sha256=7se21D-BOy7Qw6C9auJ9v6D3NCuRiDpRlhqxGq11fJs,366
|
28
|
-
pyopenapi_gen/core/loader/operations/parser.py,sha256=QHg3o8TRaReYofEEcBwuDuNxGDxZjkWXRDqOxKFiRtk,7046
|
29
|
-
pyopenapi_gen/core/loader/operations/post_processor.py,sha256=Rzb3GSiLyJk-0hTBZ6s6iWAj4KqE4Rfo3w-q2wm_R7w,2487
|
30
|
-
pyopenapi_gen/core/loader/operations/request_body.py,sha256=r-jscZEfOmqFA-E4i1Uj3S66rNEf1gDTlBiGUiA0P9k,3224
|
31
|
-
pyopenapi_gen/core/loader/parameters/__init__.py,sha256=p13oSibCRC5RCfsP6w7yD9MYs5TXcdI4WwPv7oGUYKk,284
|
32
|
-
pyopenapi_gen/core/loader/parameters/parser.py,sha256=tMAAxcPnAQQtdVFP7-NY6XSfxvc2HkG5rPXd1wwyE8I,8049
|
33
|
-
pyopenapi_gen/core/loader/responses/__init__.py,sha256=6APWoH3IdNkgVmI0KsgZoZ6knDaG-S-pnUCa6gkzT8E,216
|
34
|
-
pyopenapi_gen/core/loader/responses/parser.py,sha256=F9otAn6ncQiY3C25Fq4mEJ5UFNgN83eujcX20Vd_nPU,4069
|
35
|
-
pyopenapi_gen/core/loader/schemas/__init__.py,sha256=rlhujYfw_IzWgzhVhYMJ3eIhE6C5Vi1Ylba-BHEVqOg,296
|
36
|
-
pyopenapi_gen/core/loader/schemas/extractor.py,sha256=n2jF_g8ZjA4GQiSKEWGAt35Hw7Ek93cnxFaS4Ld21Sc,9889
|
37
|
-
pyopenapi_gen/core/parsing/__init__.py,sha256=RJsIR6cHaNoI4tBcpMlAa0JsY64vsHb9sPxPg6rd8FQ,486
|
38
|
-
pyopenapi_gen/core/parsing/context.py,sha256=8cM8mPItvDvJr8ZiukvdHBumlQl9hK1gUZL4BDpHaBk,8005
|
39
|
-
pyopenapi_gen/core/parsing/cycle_helpers.py,sha256=nG5ysNavL_6lpnHWFUZR9qraBxqOzuNfI6NgSEa8a5M,5939
|
40
|
-
pyopenapi_gen/core/parsing/schema_finalizer.py,sha256=qRTHUoVBQTgGmdfLuBuWxtWdj_SG71STGC3rn-tJvnA,6914
|
41
|
-
pyopenapi_gen/core/parsing/schema_parser.py,sha256=2hOj1Xz8a2f2PF3oAAG-DwQse9WHt9DzvR6nhQ5dHJU,33148
|
42
|
-
pyopenapi_gen/core/parsing/unified_cycle_detection.py,sha256=3nplaCVh2dFwBPbmDc2kiU0SzTPXXktdQ5Rc0Q9Uu9s,10873
|
43
|
-
pyopenapi_gen/core/parsing/common/__init__.py,sha256=U3sHMO-l6S3Cm04CVOYmBCpqLEZvCylUI7yQfcTwxYU,27
|
44
|
-
pyopenapi_gen/core/parsing/common/type_parser.py,sha256=cK7xtxhoD43K2WjLP9TGip3As3akYeYW7L2XztXCecg,2562
|
45
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py,sha256=BZOSPQo8bongKYgA4w-KGNBCjfNKoe1mm91CrqNIaTk,150
|
46
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py,sha256=y2RBVA0Kk1Vd23NBnKRdggn0tYADbTfaW3v0Ji5K5aE,3636
|
47
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py,sha256=tsHnIdyznAxXz_yA9Ub1ONxi2GSYcVJwKogBkTm95jU,2160
|
49
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py,sha256=UoqD9I7s-WwI50PlgwFmLhFQd3ai8YIJycfkQhq6QlI,1145
|
50
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py,sha256=mgHopKN9ZB2maLrPRNubrSavq0oLYjeJQac60IMRj1Q,627
|
51
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py,sha256=j_mcjyawpTsl4_2vn3DjBP2OckHL0vzfDajODxEGzNE,1801
|
52
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py,sha256=BsyO6eCNO9NDRmj-aWyQZ4DaXsqRtkc7KdIzUEyNKQ4,1843
|
53
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py,sha256=MTaxiyqoPEaNFqF7tQHii3IH41M05wPKt6lBQi1SCDU,1625
|
54
|
-
pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py,sha256=ukKU64ozHINPiVlHE9YBDz1Nq2i6Xh64jhoWSEqbK5c,1774
|
55
|
-
pyopenapi_gen/core/parsing/keywords/__init__.py,sha256=enTLacWXGXLIOjSJ3j7KNUDzU27Kq3Ww79sFElz02cM,27
|
56
|
-
pyopenapi_gen/core/parsing/keywords/all_of_parser.py,sha256=ZH8rkxdDjldd226UGw5tv853ONXKaoqvWj5FfbgSoRY,3699
|
57
|
-
pyopenapi_gen/core/parsing/keywords/any_of_parser.py,sha256=HQ4iBBPgox48KIPPhM6VVZTXHIUVqpMoHkCbqcebXOw,2982
|
58
|
-
pyopenapi_gen/core/parsing/keywords/array_items_parser.py,sha256=nk9AFbx5ANLdDeGsxSTeYHhd8MqqrQwDRMzJ8FJmJxY,2723
|
59
|
-
pyopenapi_gen/core/parsing/keywords/one_of_parser.py,sha256=TUiT1dH1r8GEPExzlR3zdgnYpGxilH8yvnSWOvQmKmY,2727
|
60
|
-
pyopenapi_gen/core/parsing/keywords/properties_parser.py,sha256=bm248ApsNskFPQF4fXq7mT5oJf6FF9yAcdVLmK6el3E,4426
|
61
|
-
pyopenapi_gen/core/parsing/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
|
-
pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py,sha256=hXuht-t0Syi5vPO8qn9GcjEpyDcZnfFVHVIlwfMa8L0,13461
|
63
|
-
pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py,sha256=4njv5raMVtspL6DoU9mxabU3yhgXHLTEhR8KmI9YMoA,5083
|
64
|
-
pyopenapi_gen/core/writers/code_writer.py,sha256=uWH5tRFIdT3RHsRV1haWQxESwhwMoM2G_CxnKB8uP88,4776
|
65
|
-
pyopenapi_gen/core/writers/documentation_writer.py,sha256=Vce-_kD4XDm3HfZb_ibSEKAu2fbTZCzzdojn9TPgFhU,8706
|
66
|
-
pyopenapi_gen/core/writers/line_writer.py,sha256=uhysxO6bh_9POUQHhoqYI4_savfAgjH4EcwBdNrVtPc,7759
|
67
|
-
pyopenapi_gen/core/writers/python_construct_renderer.py,sha256=lKj5nR-ULeceapoP2EQQOfmJif7eKAyTuhkCgGd3cI4,12812
|
68
|
-
pyopenapi_gen/core_package_template/README.md,sha256=8YP-MS0KxphRbCGBf7kV3dYIFLU9piOJ3IMm3K_0hcI,1488
|
69
|
-
pyopenapi_gen/emit/models_emitter.py,sha256=Ty5yHGzvBDYa_qQwbyPNRLWPnHaWR_KLh6pYxT7uePY,7193
|
70
|
-
pyopenapi_gen/emitters/CLAUDE.md,sha256=iZYEZq1a1h033rxuh97cMpsKUElv72ysvTm3-QQUvrs,9323
|
71
|
-
pyopenapi_gen/emitters/client_emitter.py,sha256=kmMVnG-wAOJm7TUm0xOQ5YnSJfYxz1SwtpiyoUCbcCA,1939
|
72
|
-
pyopenapi_gen/emitters/core_emitter.py,sha256=RcBsAYQ3ZKcWwtkzQmyHkL7VtDQjbIObFLXD9M_GdpI,8020
|
73
|
-
pyopenapi_gen/emitters/docs_emitter.py,sha256=aouKqhRdtVvYfGVsye_uqM80nONRy0SqN06cr1l3OgA,1137
|
74
|
-
pyopenapi_gen/emitters/endpoints_emitter.py,sha256=tzSLUzlZle2Lih_aZc4cJ-Y1ItjN5H_rABEWcDwECXA,9586
|
75
|
-
pyopenapi_gen/emitters/exceptions_emitter.py,sha256=3k3UTskmZyv_fQXyOudBnBHUvhvQTenjY7qa-KK1F48,7553
|
76
|
-
pyopenapi_gen/emitters/models_emitter.py,sha256=Gd0z2Xoze1XkVnajkOptW90ti7197wQ15I7vIITnULM,22243
|
77
|
-
pyopenapi_gen/generator/CLAUDE.md,sha256=BS9KkmLvk2WD-Io-_apoWjGNeMU4q4LKy4UOxYF9WxM,10870
|
78
|
-
pyopenapi_gen/generator/client_generator.py,sha256=_L_MJ9fUG8roD_DhymIM0nsdqOOjlQF_JAkBTND9ttA,29435
|
79
|
-
pyopenapi_gen/helpers/CLAUDE.md,sha256=GyIJ0grp4SkD3plAUzyycW4nTUZf9ewtvvsdAGkmIZw,10609
|
80
|
-
pyopenapi_gen/helpers/__init__.py,sha256=m4jSQ1sDH6CesIcqIl_kox4LcDFabGxBpSIWVwbHK0M,39
|
81
|
-
pyopenapi_gen/helpers/endpoint_utils.py,sha256=bkRu6YddIPQQD3rZLbB8L5WYzG-2Bd_JgMbxMUYY2wY,22198
|
82
|
-
pyopenapi_gen/helpers/type_cleaner.py,sha256=PRBqeEUPyEKHwedB4RZPrEDxUJ6q_h5ANains0WHIwg,13613
|
83
|
-
pyopenapi_gen/helpers/type_helper.py,sha256=uWLmJ25FHnqPf0-Pqakk4-lJ4xr5VBOF6gQP26KBAms,4276
|
84
|
-
pyopenapi_gen/helpers/url_utils.py,sha256=IflBiOcCzLrOvC5P25y12pk88Zu3X071hq4bCeDDxK0,340
|
85
|
-
pyopenapi_gen/helpers/type_resolution/__init__.py,sha256=TbaQZp7jvBiYgmuzuG8Wp56xZq32xEKtpunHqZVG1VA,85
|
86
|
-
pyopenapi_gen/helpers/type_resolution/array_resolver.py,sha256=dFppBtA6CxmiWAMR6rwGnQPv4AibL3nxtzw1LbeXVn4,2023
|
87
|
-
pyopenapi_gen/helpers/type_resolution/composition_resolver.py,sha256=wq6CRGxGgOKK470ln5Tpk9SzHtMuwB22TXHsRLtUFyw,3015
|
88
|
-
pyopenapi_gen/helpers/type_resolution/finalizer.py,sha256=_BcOBmOvadhBTUAvIc0Ak8FNxFw1uYL4rkKWtU68_m4,4332
|
89
|
-
pyopenapi_gen/helpers/type_resolution/named_resolver.py,sha256=hXu6Gao92EVV0jyHRqf9cIhoAFn3suuEw5ye9nRTFks,9423
|
90
|
-
pyopenapi_gen/helpers/type_resolution/object_resolver.py,sha256=Jm4m5QgzWU-4joPqfUSC0Y-za3Yx0ROdJjyv5J8VNk0,12557
|
91
|
-
pyopenapi_gen/helpers/type_resolution/primitive_resolver.py,sha256=qTshZaye5ohibVfcJYCzh4v3CAshguMGWPt2FgvQeNM,1960
|
92
|
-
pyopenapi_gen/helpers/type_resolution/resolver.py,sha256=qQY6wAitBluA-tofiyJ67Gxx8ol1W528zDWd9izYN5s,1982
|
93
|
-
pyopenapi_gen/types/CLAUDE.md,sha256=xRYlHdLhw3QGIfIlWqPt9pewRs736H1YCzwmslKtzZc,4255
|
94
|
-
pyopenapi_gen/types/__init__.py,sha256=Tv4xouOXp1CeOcnhDdh_wWF9PBHAeZmCeVPSm71kouI,359
|
95
|
-
pyopenapi_gen/types/contracts/__init__.py,sha256=qf5kJbbZ8TuH79UQSHBvjE1odKfNJrt5NrBEmurFlSU,358
|
96
|
-
pyopenapi_gen/types/contracts/protocols.py,sha256=eyjsrvHQv1viNON9itrHO5TA-PtWUZERdK3aPO_3uXM,2887
|
97
|
-
pyopenapi_gen/types/contracts/types.py,sha256=-Qvbx3N_14AaN-1BeyocrvsjiwXPn_eWQhpgxL5aG5A,797
|
98
|
-
pyopenapi_gen/types/resolvers/__init__.py,sha256=_5kA49RvyOTyXgt0GbbOfHJcdQw2zHxvU9af8GGyNWc,295
|
99
|
-
pyopenapi_gen/types/resolvers/reference_resolver.py,sha256=qnaZeLmtyh4_NBMcKib58s6o5ycUJaattYt8F38_qIo,2053
|
100
|
-
pyopenapi_gen/types/resolvers/response_resolver.py,sha256=Kb1a2803lyoukoZy06ztPBlUw-A1lHiZ6NlJmsixxA8,6500
|
101
|
-
pyopenapi_gen/types/resolvers/schema_resolver.py,sha256=n8pI9kUJo-vLjZAOPSvwpVmRoM7AzTa7cOMlidYJVXo,21779
|
102
|
-
pyopenapi_gen/types/services/__init__.py,sha256=inSUKmY_Vnuym6tC-AhvjCTj16GbkfxCGLESRr_uQPE,123
|
103
|
-
pyopenapi_gen/types/services/type_service.py,sha256=-LQj7oSx1mxb10Zi6DpawS8uyoUrUbnYhmUA0GuKZTc,4402
|
104
|
-
pyopenapi_gen/types/strategies/__init__.py,sha256=bju8_KEPNIow1-woMO-zJCgK_E0M6JnFq0NFsK1R4Ss,171
|
105
|
-
pyopenapi_gen/types/strategies/response_strategy.py,sha256=Y6E3O5xvCrJ2Y6IGn4BWlaGiQCC8Uk1a7BRJxfBkqrM,7387
|
106
|
-
pyopenapi_gen/visit/CLAUDE.md,sha256=Rq2e4S74TXv0ua2ZcCrO6cwCCccf3Yph44oVdj1yFPY,8297
|
107
|
-
pyopenapi_gen/visit/client_visitor.py,sha256=vpLCGF353XtBjfS7W69-1b1d79opTb1i6qBue6vSz5g,11152
|
108
|
-
pyopenapi_gen/visit/docs_visitor.py,sha256=hqgd4DAoy7T5Bap4mpH4R-nIZSyAWwFYmrIuNHM03Rg,1644
|
109
|
-
pyopenapi_gen/visit/exception_visitor.py,sha256=D4LtLqdeS34kw6WbwhoWeMQzlh9uHqGNZjFtY0kq3Q4,3855
|
110
|
-
pyopenapi_gen/visit/visitor.py,sha256=PANoV9zXMUrefr0pBLXIKkDOaTIjQ2hyL82cidVBCLU,3645
|
111
|
-
pyopenapi_gen/visit/endpoint/__init__.py,sha256=DftIZSWp6Z8jKWoJE2VGKL4G_5cqwFXe9v-PALMmsGk,73
|
112
|
-
pyopenapi_gen/visit/endpoint/endpoint_visitor.py,sha256=1aS0i2D_Y-979_7aBd0W6IS2UVO6wMujsMMw8Qt8PRE,3574
|
113
|
-
pyopenapi_gen/visit/endpoint/generators/__init__.py,sha256=-X-GYnJZ9twiEBr_U0obW8VuSoY6IJmYaxinn-seMzA,50
|
114
|
-
pyopenapi_gen/visit/endpoint/generators/docstring_generator.py,sha256=U02qvuYtFElQNEtOHuTNXFl2NxUriIiuZMkmUsapOg4,5913
|
115
|
-
pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py,sha256=wUJ4_gaA1gRrFCHYFCObBIankxGQu0MNqiOSoZOZmoA,4352
|
116
|
-
pyopenapi_gen/visit/endpoint/generators/request_generator.py,sha256=OnkrkRk39_BrK9ZDvyWqJYLz1mocD2zY7j70yIpS0J4,5374
|
117
|
-
pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py,sha256=OAD3_CDXiA0lXv7KvUjmp6QBBYxs569vmP-6K_SuGJc,22961
|
118
|
-
pyopenapi_gen/visit/endpoint/generators/signature_generator.py,sha256=CYtfsPMlTZN95g2WxrdnTloGx2RmqeNQRiyP9fOkUEQ,3892
|
119
|
-
pyopenapi_gen/visit/endpoint/generators/url_args_generator.py,sha256=EsmNuVSkGfUqrmV7-1GiLPzdN86V5UqLfs1SVY0jsf0,9590
|
120
|
-
pyopenapi_gen/visit/endpoint/processors/__init__.py,sha256=_6RqpOdDuDheArqDBi3ykhsaetACny88WUuuAJvr_ME,29
|
121
|
-
pyopenapi_gen/visit/endpoint/processors/import_analyzer.py,sha256=tNmhgWwt-CjLE774TC8sPVH1-yaTKKm6JmfgBT2-iRk,3386
|
122
|
-
pyopenapi_gen/visit/endpoint/processors/parameter_processor.py,sha256=BygP8yzSTrxfvNpEQIHERjd2NpEXDiwpCtmMseJKRq0,7700
|
123
|
-
pyopenapi_gen/visit/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
|
-
pyopenapi_gen/visit/model/alias_generator.py,sha256=TGL3AMq_PkBWFWeeXbNnA8hgO9hvp0flwBA00Gr6S3o,3744
|
125
|
-
pyopenapi_gen/visit/model/dataclass_generator.py,sha256=nyTvBph6rtbJlCwTiDW_Y2UJmLLiA6D2QJUpA2xE0m8,10289
|
126
|
-
pyopenapi_gen/visit/model/enum_generator.py,sha256=AXqKUFuWUUjUF_6_HqBKY8vB5GYu35Pb2C2WPFrOw1k,10061
|
127
|
-
pyopenapi_gen/visit/model/model_visitor.py,sha256=4kAQSWsI4XumVYB3aAE7Ts_31hGfDlbytRalxyMFV3g,9510
|
128
|
-
pyopenapi_gen-0.14.0.dist-info/METADATA,sha256=VQEURt-RzzvWvLDj0mDetS6zNnRNGx41B1pYO2wKJ0o,14025
|
129
|
-
pyopenapi_gen-0.14.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
130
|
-
pyopenapi_gen-0.14.0.dist-info/entry_points.txt,sha256=gxSlNiwom50T3OEZnlocA6qRjGdV0bn6hN_Xr-Ub5wA,56
|
131
|
-
pyopenapi_gen-0.14.0.dist-info/licenses/LICENSE,sha256=UFAyTWKa4w10-QerlJaHJeep7G2gcwpf-JmvI2dS2Gc,1088
|
132
|
-
pyopenapi_gen-0.14.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|