jentic-openapi-datamodels 1.0.0a20__py3-none-any.whl → 1.0.0a22__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.
- jentic/apitools/openapi/datamodels/low/fields.py +18 -6
- jentic/apitools/openapi/datamodels/low/v30/callback.py +4 -3
- jentic/apitools/openapi/datamodels/low/v30/paths.py +2 -1
- jentic/apitools/openapi/datamodels/low/v30/responses.py +2 -2
- jentic/apitools/openapi/datamodels/low/v30/security_requirement.py +7 -9
- jentic/apitools/openapi/datamodels/low/v31/callback.py +4 -3
- jentic/apitools/openapi/datamodels/low/v31/paths.py +2 -1
- jentic/apitools/openapi/datamodels/low/v31/responses.py +2 -2
- jentic/apitools/openapi/datamodels/low/v31/security_requirement.py +7 -9
- {jentic_openapi_datamodels-1.0.0a20.dist-info → jentic_openapi_datamodels-1.0.0a22.dist-info}/METADATA +59 -4
- {jentic_openapi_datamodels-1.0.0a20.dist-info → jentic_openapi_datamodels-1.0.0a22.dist-info}/RECORD +14 -14
- {jentic_openapi_datamodels-1.0.0a20.dist-info → jentic_openapi_datamodels-1.0.0a22.dist-info}/WHEEL +0 -0
- {jentic_openapi_datamodels-1.0.0a20.dist-info → jentic_openapi_datamodels-1.0.0a22.dist-info}/licenses/LICENSE +0 -0
- {jentic_openapi_datamodels-1.0.0a20.dist-info → jentic_openapi_datamodels-1.0.0a22.dist-info}/licenses/NOTICE +0 -0
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
from dataclasses import field, fields
|
|
1
|
+
from dataclasses import MISSING, field, fields
|
|
2
|
+
from typing import Any
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
__all__ = ["fixed_field", "fixed_fields", "patterned_field", "patterned_fields"]
|
|
5
6
|
|
|
6
7
|
|
|
7
|
-
def fixed_field(default=None, metadata=None):
|
|
8
|
+
def fixed_field(*, default: Any = None, metadata: dict[str, Any] | None = None) -> Any:
|
|
8
9
|
"""Mark a field as a fixed OpenAPI specification field."""
|
|
9
10
|
return field(default=default, metadata={**(metadata or {}), "fixed_field": True})
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
def fixed_fields(dataclass_type):
|
|
13
|
+
def fixed_fields(dataclass_type: type) -> dict[str, Any]:
|
|
13
14
|
"""
|
|
14
15
|
Get all fixed specification fields from a dataclass.
|
|
15
16
|
|
|
@@ -22,17 +23,28 @@ def fixed_fields(dataclass_type):
|
|
|
22
23
|
return {f.name: f for f in fields(dataclass_type) if f.metadata.get("fixed_field")}
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
def patterned_field(
|
|
26
|
+
def patterned_field(
|
|
27
|
+
*, default=MISSING, default_factory=MISSING, metadata: dict[str, Any] | None = None
|
|
28
|
+
) -> Any:
|
|
26
29
|
"""
|
|
27
30
|
Mark a field as containing OpenAPI patterned fields.
|
|
28
31
|
|
|
29
32
|
Patterned fields have dynamic names that follow a specific pattern (e.g., security scheme names,
|
|
30
33
|
path patterns, callback expressions, HTTP status codes).
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
default: Default value for the field
|
|
37
|
+
default_factory: Callable that returns default value
|
|
38
|
+
metadata: Additional metadata for the field
|
|
31
39
|
"""
|
|
32
|
-
|
|
40
|
+
merged_metadata = {**(metadata or {}), "patterned_field": True}
|
|
41
|
+
if default_factory is not MISSING:
|
|
42
|
+
return field(default_factory=default_factory, metadata=merged_metadata)
|
|
43
|
+
else:
|
|
44
|
+
return field(default=default, metadata=merged_metadata)
|
|
33
45
|
|
|
34
46
|
|
|
35
|
-
def patterned_fields(dataclass_type):
|
|
47
|
+
def patterned_fields(dataclass_type: type) -> dict[str, Any]:
|
|
36
48
|
"""
|
|
37
49
|
Get all patterned fields from a dataclass.
|
|
38
50
|
|
|
@@ -4,6 +4,7 @@ from ruamel import yaml
|
|
|
4
4
|
|
|
5
5
|
from ..context import Context
|
|
6
6
|
from ..extractors import extract_extension_fields
|
|
7
|
+
from ..fields import patterned_field
|
|
7
8
|
from ..sources import KeySource, ValueSource, YAMLInvalidValue, YAMLValue
|
|
8
9
|
from .path_item import PathItem
|
|
9
10
|
from .path_item import build as build_path_item
|
|
@@ -33,7 +34,7 @@ class Callback:
|
|
|
33
34
|
"""
|
|
34
35
|
|
|
35
36
|
root_node: yaml.Node
|
|
36
|
-
path_items: dict[KeySource[str], PathItem] =
|
|
37
|
+
path_items: dict[KeySource[str], PathItem] = patterned_field(default_factory=dict)
|
|
37
38
|
extensions: dict[KeySource[str], ValueSource[YAMLValue]] = field(default_factory=dict)
|
|
38
39
|
|
|
39
40
|
|
|
@@ -86,7 +87,7 @@ def build(
|
|
|
86
87
|
extension_properties = {k.value for k in extensions.keys()}
|
|
87
88
|
|
|
88
89
|
# Process each field to determine if it's an expression (not an extension)
|
|
89
|
-
path_items
|
|
90
|
+
path_items = {}
|
|
90
91
|
|
|
91
92
|
for key_node, value_node in root.value:
|
|
92
93
|
expression = context.yaml_constructor.construct_yaml_str(key_node)
|
|
@@ -99,7 +100,7 @@ def build(
|
|
|
99
100
|
# Create and return the Callback object with collected data
|
|
100
101
|
return Callback(
|
|
101
102
|
root_node=root,
|
|
102
|
-
path_items=path_items,
|
|
103
|
+
path_items=path_items,
|
|
103
104
|
extensions=extensions,
|
|
104
105
|
)
|
|
105
106
|
|
|
@@ -4,6 +4,7 @@ from ruamel import yaml
|
|
|
4
4
|
|
|
5
5
|
from ..context import Context
|
|
6
6
|
from ..extractors import extract_extension_fields
|
|
7
|
+
from ..fields import patterned_field
|
|
7
8
|
from ..sources import KeySource, ValueSource, YAMLInvalidValue, YAMLValue
|
|
8
9
|
from .path_item import PathItem
|
|
9
10
|
from .path_item import build as build_path_item
|
|
@@ -33,7 +34,7 @@ class Paths:
|
|
|
33
34
|
"""
|
|
34
35
|
|
|
35
36
|
root_node: yaml.Node
|
|
36
|
-
paths: dict[KeySource[str], PathItem] =
|
|
37
|
+
paths: dict[KeySource[str], PathItem] = patterned_field(default_factory=dict)
|
|
37
38
|
extensions: dict[KeySource[str], ValueSource[YAMLValue]] = field(default_factory=dict)
|
|
38
39
|
|
|
39
40
|
|
|
@@ -6,7 +6,7 @@ from ruamel import yaml
|
|
|
6
6
|
|
|
7
7
|
from ..context import Context
|
|
8
8
|
from ..extractors import extract_extension_fields
|
|
9
|
-
from ..fields import fixed_field
|
|
9
|
+
from ..fields import fixed_field, patterned_field
|
|
10
10
|
from ..sources import FieldSource, KeySource, ValueSource, YAMLInvalidValue, YAMLValue
|
|
11
11
|
from .reference import Reference
|
|
12
12
|
from .response import Response, build_response_or_reference
|
|
@@ -34,7 +34,7 @@ class Responses:
|
|
|
34
34
|
|
|
35
35
|
root_node: yaml.Node
|
|
36
36
|
default: FieldSource[Response | Reference] | None = fixed_field()
|
|
37
|
-
responses: dict[KeySource[str], Response | Reference] =
|
|
37
|
+
responses: dict[KeySource[str], Response | Reference] = patterned_field(default_factory=dict)
|
|
38
38
|
extensions: dict[KeySource[str], ValueSource[YAMLValue]] = field(default_factory=dict)
|
|
39
39
|
|
|
40
40
|
|
|
@@ -33,8 +33,8 @@ class SecurityRequirement:
|
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
35
|
root_node: yaml.Node
|
|
36
|
-
requirements:
|
|
37
|
-
|
|
36
|
+
requirements: dict[KeySource[str], ValueSource[list[ValueSource[str]]]] = patterned_field(
|
|
37
|
+
default_factory=dict
|
|
38
38
|
)
|
|
39
39
|
|
|
40
40
|
|
|
@@ -61,7 +61,7 @@ def build(
|
|
|
61
61
|
yaml = YAML()
|
|
62
62
|
root = yaml.compose("api_key: []")
|
|
63
63
|
security_req = build(root)
|
|
64
|
-
assert security_req.requirements
|
|
64
|
+
assert len(security_req.requirements) > 0
|
|
65
65
|
"""
|
|
66
66
|
context = context or Context()
|
|
67
67
|
|
|
@@ -70,7 +70,7 @@ def build(
|
|
|
70
70
|
value = context.yaml_constructor.construct_object(root, deep=True)
|
|
71
71
|
return ValueSource(value=value, value_node=root)
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
requirements = {}
|
|
74
74
|
|
|
75
75
|
for key_node, value_node in root.value:
|
|
76
76
|
key = context.yaml_constructor.construct_yaml_str(key_node)
|
|
@@ -88,19 +88,17 @@ def build(
|
|
|
88
88
|
item_value = context.yaml_constructor.construct_object(item_node, deep=True)
|
|
89
89
|
scope_list.append(ValueSource(value=item_value, value_node=item_node))
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
requirements[KeySource(value=key, key_node=key_node)] = ValueSource(
|
|
92
92
|
value=scope_list, value_node=value_node
|
|
93
93
|
)
|
|
94
94
|
else:
|
|
95
95
|
# Not a sequence - preserve as-is for validation to catch
|
|
96
96
|
value = context.yaml_constructor.construct_object(value_node, deep=True)
|
|
97
|
-
|
|
97
|
+
requirements[KeySource(value=key, key_node=key_node)] = ValueSource(
|
|
98
98
|
value=value, value_node=value_node
|
|
99
99
|
)
|
|
100
100
|
|
|
101
101
|
return SecurityRequirement(
|
|
102
102
|
root_node=root,
|
|
103
|
-
requirements=
|
|
104
|
-
ValueSource(value=requirements_dict, value_node=root) if requirements_dict else None
|
|
105
|
-
),
|
|
103
|
+
requirements=requirements,
|
|
106
104
|
)
|
|
@@ -4,6 +4,7 @@ from ruamel import yaml
|
|
|
4
4
|
|
|
5
5
|
from ..context import Context
|
|
6
6
|
from ..extractors import extract_extension_fields
|
|
7
|
+
from ..fields import patterned_field
|
|
7
8
|
from ..sources import KeySource, ValueSource, YAMLInvalidValue, YAMLValue
|
|
8
9
|
from .path_item import PathItem
|
|
9
10
|
from .path_item import build as build_path_item
|
|
@@ -33,7 +34,7 @@ class Callback:
|
|
|
33
34
|
"""
|
|
34
35
|
|
|
35
36
|
root_node: yaml.Node
|
|
36
|
-
path_items: dict[KeySource[str], PathItem] =
|
|
37
|
+
path_items: dict[KeySource[str], PathItem] = patterned_field(default_factory=dict)
|
|
37
38
|
extensions: dict[KeySource[str], ValueSource[YAMLValue]] = field(default_factory=dict)
|
|
38
39
|
|
|
39
40
|
|
|
@@ -86,7 +87,7 @@ def build(
|
|
|
86
87
|
extension_properties = {k.value for k in extensions.keys()}
|
|
87
88
|
|
|
88
89
|
# Process each field to determine if it's an expression (not an extension)
|
|
89
|
-
path_items
|
|
90
|
+
path_items = {}
|
|
90
91
|
|
|
91
92
|
for key_node, value_node in root.value:
|
|
92
93
|
expression = context.yaml_constructor.construct_yaml_str(key_node)
|
|
@@ -99,7 +100,7 @@ def build(
|
|
|
99
100
|
# Create and return the Callback object with collected data
|
|
100
101
|
return Callback(
|
|
101
102
|
root_node=root,
|
|
102
|
-
path_items=path_items,
|
|
103
|
+
path_items=path_items,
|
|
103
104
|
extensions=extensions,
|
|
104
105
|
)
|
|
105
106
|
|
|
@@ -4,6 +4,7 @@ from ruamel import yaml
|
|
|
4
4
|
|
|
5
5
|
from ..context import Context
|
|
6
6
|
from ..extractors import extract_extension_fields
|
|
7
|
+
from ..fields import patterned_field
|
|
7
8
|
from ..sources import KeySource, ValueSource, YAMLInvalidValue, YAMLValue
|
|
8
9
|
from .path_item import PathItem
|
|
9
10
|
from .path_item import build as build_path_item
|
|
@@ -33,7 +34,7 @@ class Paths:
|
|
|
33
34
|
"""
|
|
34
35
|
|
|
35
36
|
root_node: yaml.Node
|
|
36
|
-
paths: dict[KeySource[str], PathItem] =
|
|
37
|
+
paths: dict[KeySource[str], PathItem] = patterned_field(default_factory=dict)
|
|
37
38
|
extensions: dict[KeySource[str], ValueSource[YAMLValue]] = field(default_factory=dict)
|
|
38
39
|
|
|
39
40
|
|
|
@@ -6,7 +6,7 @@ from ruamel import yaml
|
|
|
6
6
|
|
|
7
7
|
from ..context import Context
|
|
8
8
|
from ..extractors import extract_extension_fields
|
|
9
|
-
from ..fields import fixed_field
|
|
9
|
+
from ..fields import fixed_field, patterned_field
|
|
10
10
|
from ..sources import FieldSource, KeySource, ValueSource, YAMLInvalidValue, YAMLValue
|
|
11
11
|
from .reference import Reference
|
|
12
12
|
from .response import Response, build_response_or_reference
|
|
@@ -34,7 +34,7 @@ class Responses:
|
|
|
34
34
|
|
|
35
35
|
root_node: yaml.Node
|
|
36
36
|
default: FieldSource[Response | Reference] | None = fixed_field()
|
|
37
|
-
responses: dict[KeySource[str], Response | Reference] =
|
|
37
|
+
responses: dict[KeySource[str], Response | Reference] = patterned_field(default_factory=dict)
|
|
38
38
|
extensions: dict[KeySource[str], ValueSource[YAMLValue]] = field(default_factory=dict)
|
|
39
39
|
|
|
40
40
|
|
|
@@ -33,8 +33,8 @@ class SecurityRequirement:
|
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
35
|
root_node: yaml.Node
|
|
36
|
-
requirements:
|
|
37
|
-
|
|
36
|
+
requirements: dict[KeySource[str], ValueSource[list[ValueSource[str]]]] = patterned_field(
|
|
37
|
+
default_factory=dict
|
|
38
38
|
)
|
|
39
39
|
|
|
40
40
|
|
|
@@ -61,7 +61,7 @@ def build(
|
|
|
61
61
|
yaml = YAML()
|
|
62
62
|
root = yaml.compose("api_key: []")
|
|
63
63
|
security_req = build(root)
|
|
64
|
-
assert security_req.requirements
|
|
64
|
+
assert len(security_req.requirements) > 0
|
|
65
65
|
"""
|
|
66
66
|
context = context or Context()
|
|
67
67
|
|
|
@@ -70,7 +70,7 @@ def build(
|
|
|
70
70
|
value = context.yaml_constructor.construct_object(root, deep=True)
|
|
71
71
|
return ValueSource(value=value, value_node=root)
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
requirements = {}
|
|
74
74
|
|
|
75
75
|
for key_node, value_node in root.value:
|
|
76
76
|
key = context.yaml_constructor.construct_yaml_str(key_node)
|
|
@@ -88,19 +88,17 @@ def build(
|
|
|
88
88
|
item_value = context.yaml_constructor.construct_object(item_node, deep=True)
|
|
89
89
|
scope_list.append(ValueSource(value=item_value, value_node=item_node))
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
requirements[KeySource(value=key, key_node=key_node)] = ValueSource(
|
|
92
92
|
value=scope_list, value_node=value_node
|
|
93
93
|
)
|
|
94
94
|
else:
|
|
95
95
|
# Not a sequence - preserve as-is for validation to catch
|
|
96
96
|
value = context.yaml_constructor.construct_object(value_node, deep=True)
|
|
97
|
-
|
|
97
|
+
requirements[KeySource(value=key, key_node=key_node)] = ValueSource(
|
|
98
98
|
value=value, value_node=value_node
|
|
99
99
|
)
|
|
100
100
|
|
|
101
101
|
return SecurityRequirement(
|
|
102
102
|
root_node=root,
|
|
103
|
-
requirements=
|
|
104
|
-
ValueSource(value=requirements_dict, value_node=root) if requirements_dict else None
|
|
105
|
-
),
|
|
103
|
+
requirements=requirements,
|
|
106
104
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jentic-openapi-datamodels
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.0a22
|
|
4
4
|
Summary: Jentic OpenAPI Data Models
|
|
5
5
|
Author: Jentic
|
|
6
6
|
Author-email: Jentic <hello@jentic.com>
|
|
@@ -61,9 +61,64 @@ pip install jentic-openapi-datamodels
|
|
|
61
61
|
|
|
62
62
|
## Quick Start
|
|
63
63
|
|
|
64
|
-
### Parsing
|
|
64
|
+
### Parsing with the `datamodel-low` Parser Backend (Recommended)
|
|
65
65
|
|
|
66
|
-
The
|
|
66
|
+
The easiest way to parse OpenAPI documents into datamodels is using the `datamodel-low` backend from `jentic-openapi-parser`. This backend automatically detects the OpenAPI version and returns the appropriate typed datamodel:
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from jentic.apitools.openapi.parser.core import OpenAPIParser
|
|
70
|
+
from jentic.apitools.openapi.parser.backends.datamodel_low import DataModelLow
|
|
71
|
+
from jentic.apitools.openapi.datamodels.low.v30.openapi import OpenAPI30
|
|
72
|
+
from jentic.apitools.openapi.datamodels.low.v31.openapi import OpenAPI31
|
|
73
|
+
|
|
74
|
+
# Create parser with datamodel-low backend
|
|
75
|
+
parser = OpenAPIParser("datamodel-low")
|
|
76
|
+
|
|
77
|
+
# Parse OpenAPI 3.0 document - automatically returns OpenAPI30
|
|
78
|
+
doc = parser.parse("""
|
|
79
|
+
openapi: 3.0.4
|
|
80
|
+
info:
|
|
81
|
+
title: Pet Store API
|
|
82
|
+
version: 1.0.0
|
|
83
|
+
paths:
|
|
84
|
+
/pets:
|
|
85
|
+
get:
|
|
86
|
+
summary: List all pets
|
|
87
|
+
responses:
|
|
88
|
+
'200':
|
|
89
|
+
description: A list of pets
|
|
90
|
+
""", return_type=DataModelLow)
|
|
91
|
+
|
|
92
|
+
assert isinstance(doc, OpenAPI30)
|
|
93
|
+
print(doc.openapi.value) # "3.0.4"
|
|
94
|
+
print(doc.info.value.title.value) # "Pet Store API"
|
|
95
|
+
|
|
96
|
+
# Parse OpenAPI 3.1 document - automatically returns OpenAPI31
|
|
97
|
+
doc = parser.parse("""
|
|
98
|
+
openapi: 3.1.2
|
|
99
|
+
info:
|
|
100
|
+
title: Pet Store API
|
|
101
|
+
version: 1.0.0
|
|
102
|
+
paths: {}
|
|
103
|
+
""", return_type=DataModelLow)
|
|
104
|
+
|
|
105
|
+
assert isinstance(doc, OpenAPI31)
|
|
106
|
+
print(doc.openapi.value) # "3.1.2"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Benefits of `datamodel-low` backend:**
|
|
110
|
+
- Automatic version detection (no manual version checking)
|
|
111
|
+
- Returns strongly-typed `OpenAPI30` or `OpenAPI31` objects
|
|
112
|
+
- Complete source tracking preserved
|
|
113
|
+
- Single-step parsing (no need to manually call `build()`)
|
|
114
|
+
|
|
115
|
+
### Manual Parsing with Builder Functions
|
|
116
|
+
|
|
117
|
+
For advanced use cases or custom workflows, you can manually parse and build datamodels:
|
|
118
|
+
|
|
119
|
+
#### Parsing OpenAPI 3.0 Documents
|
|
120
|
+
|
|
121
|
+
The manual approach uses the `ruamel-ast` backend followed by calling the builder function:
|
|
67
122
|
|
|
68
123
|
```python
|
|
69
124
|
from jentic.apitools.openapi.parser.core import OpenAPIParser
|
|
@@ -102,7 +157,7 @@ for path_key, path_item in openapi_doc.paths.value.path_items.items():
|
|
|
102
157
|
print(f" Summary: {operation.summary.value}") # "List all pets"
|
|
103
158
|
```
|
|
104
159
|
|
|
105
|
-
|
|
160
|
+
#### Parsing OpenAPI 3.1 Documents with JSON Schema 2020-12
|
|
106
161
|
|
|
107
162
|
OpenAPI 3.1 fully supports JSON Schema 2020-12, including advanced features like boolean schemas, conditional validation and vocabulary declarations:
|
|
108
163
|
|
{jentic_openapi_datamodels-1.0.0a20.dist-info → jentic_openapi_datamodels-1.0.0a22.dist-info}/RECORD
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
jentic/apitools/openapi/datamodels/low/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
jentic/apitools/openapi/datamodels/low/context.py,sha256=pAuPf8GmdttXMEeuO4clAvTTxH7LMtEHdxoo1RpyK2c,555
|
|
3
3
|
jentic/apitools/openapi/datamodels/low/extractors.py,sha256=ZdTndH_9OcN9O7l560D13n4d0IJPCKLR0ayqrkrey9Y,4840
|
|
4
|
-
jentic/apitools/openapi/datamodels/low/fields.py,sha256=
|
|
4
|
+
jentic/apitools/openapi/datamodels/low/fields.py,sha256=hBtsmsIHqQ0vwrapJxKPhM2lqXEhGXS25VBo0sOOKFk,1979
|
|
5
5
|
jentic/apitools/openapi/datamodels/low/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
jentic/apitools/openapi/datamodels/low/sources.py,sha256=H4I6LSn-Ry6cJageIyhCvE0H85O7Lh94gdCIm60wj0E,2924
|
|
7
7
|
jentic/apitools/openapi/datamodels/low/v30/__init__.py,sha256=3i8EWv_2cxoSPkpIOedhswAPSk8cTitUGWbt4iZ9U34,1934
|
|
8
8
|
jentic/apitools/openapi/datamodels/low/v30/builders/__init__.py,sha256=mIpggEOAZa6M4EgJc-THjdhsZB_vsaVTHb8WkKD7eXQ,15717
|
|
9
|
-
jentic/apitools/openapi/datamodels/low/v30/callback.py,sha256=
|
|
9
|
+
jentic/apitools/openapi/datamodels/low/v30/callback.py,sha256=BagSDNEix3iGBD5cRhyR6gqM3L0Ir9z394DCHUJHZpA,4759
|
|
10
10
|
jentic/apitools/openapi/datamodels/low/v30/components.py,sha256=gzpp9EJhO4N_0hqPi55KhLqT4uZfIjo6v1uifyIDg2A,11426
|
|
11
11
|
jentic/apitools/openapi/datamodels/low/v30/contact.py,sha256=1RJCZ165aXOZ0Rjz_LftKy4rB99_hqCVaT0iLV56H3o,2194
|
|
12
12
|
jentic/apitools/openapi/datamodels/low/v30/discriminator.py,sha256=vPQgQ6KQY3z6dkIWbvC4qv36DBev8WHRyvavfbHh0aw,2362
|
|
@@ -24,13 +24,13 @@ jentic/apitools/openapi/datamodels/low/v30/openapi.py,sha256=tySlKTuFyHgEpS13-vJ
|
|
|
24
24
|
jentic/apitools/openapi/datamodels/low/v30/operation.py,sha256=tU2qngEeJSqRW103-PVo5cBGzLtkdDws8kGRusSLKC0,5446
|
|
25
25
|
jentic/apitools/openapi/datamodels/low/v30/parameter.py,sha256=YopOV5rnA-XiumEVSVOi2AESyRPWT6yqqENuqX04QTM,5186
|
|
26
26
|
jentic/apitools/openapi/datamodels/low/v30/path_item.py,sha256=4MQUIwHEr7qcpHZQHmQzrZstMyKwwTFyvlnfcIiUn_M,4878
|
|
27
|
-
jentic/apitools/openapi/datamodels/low/v30/paths.py,sha256=
|
|
27
|
+
jentic/apitools/openapi/datamodels/low/v30/paths.py,sha256=gjXIJzr5gJgvLGaBgnqoyX-8QOIY61K8NX27K_nXzS8,3943
|
|
28
28
|
jentic/apitools/openapi/datamodels/low/v30/reference.py,sha256=QXuI-caWgMlU1Zl1V5wiOQurIUAn_3t_XoOLyG0hSQ8,1966
|
|
29
29
|
jentic/apitools/openapi/datamodels/low/v30/request_body.py,sha256=8Ca3iWXn13wmMusy75QyZSFR6KmGcwbhGjxTeTHjiFo,3900
|
|
30
30
|
jentic/apitools/openapi/datamodels/low/v30/response.py,sha256=FFLoHRVAw91vKWlkDzD08Xlie0hHnCSKXzjMKDKmH1U,3976
|
|
31
|
-
jentic/apitools/openapi/datamodels/low/v30/responses.py,sha256=
|
|
31
|
+
jentic/apitools/openapi/datamodels/low/v30/responses.py,sha256=Dc-FrtidzVuOgGs5SB8WmOUbqvhPgWej4-1Ur__zork,4272
|
|
32
32
|
jentic/apitools/openapi/datamodels/low/v30/schema.py,sha256=fkGRJz_Ta-Giq06KPoLjAZanDGgTILmX5Ikj5PlSCow,15717
|
|
33
|
-
jentic/apitools/openapi/datamodels/low/v30/security_requirement.py,sha256=
|
|
33
|
+
jentic/apitools/openapi/datamodels/low/v30/security_requirement.py,sha256=ipEsNE8lqmaJZnubEPWVIDf7ohrzRq-y1su9ifx5354,4102
|
|
34
34
|
jentic/apitools/openapi/datamodels/low/v30/security_scheme.py,sha256=LClieys-mEiM84EEOGK4dsaWwNny1lKztzVBicddQd4,5455
|
|
35
35
|
jentic/apitools/openapi/datamodels/low/v30/server.py,sha256=G9mcOMq9owtd6qECaQIxpvN9VrU7zjxnwaBVAfJw0Cs,4687
|
|
36
36
|
jentic/apitools/openapi/datamodels/low/v30/server_variable.py,sha256=CmWdchAOTO3RtlSIodPOwGQds3-WZnWjaHMh66H7WpA,2762
|
|
@@ -38,7 +38,7 @@ jentic/apitools/openapi/datamodels/low/v30/tag.py,sha256=wH9uWAqNLryvatahDWAjQOc
|
|
|
38
38
|
jentic/apitools/openapi/datamodels/low/v30/xml.py,sha256=4KgtMgjp4v8lMTUuLG-7RBOgXGvPSsIrtHU-u6TUbGg,1930
|
|
39
39
|
jentic/apitools/openapi/datamodels/low/v31/__init__.py,sha256=MXwVorDh1quZU5A0mndI4__dVB247A5HQFzDJrocQsM,1978
|
|
40
40
|
jentic/apitools/openapi/datamodels/low/v31/builders/__init__.py,sha256=9-ohxirframb6EmcFlDQ83cnGZ_mbnt_2aoFeCQE51o,17925
|
|
41
|
-
jentic/apitools/openapi/datamodels/low/v31/callback.py,sha256=
|
|
41
|
+
jentic/apitools/openapi/datamodels/low/v31/callback.py,sha256=NCgQ9y3gMts3wLxts24eGQsxadCQKTJAaHPM45ZaOQY,4759
|
|
42
42
|
jentic/apitools/openapi/datamodels/low/v31/components.py,sha256=pZet9wXywTNz0h_o5CU9HsIpOsY7bc-LdY9cAhRfdeY,11665
|
|
43
43
|
jentic/apitools/openapi/datamodels/low/v31/contact.py,sha256=SnvuCz-YitRwK8l5CwuWSP4LjuB10KWTNmad_fMOENM,2194
|
|
44
44
|
jentic/apitools/openapi/datamodels/low/v31/discriminator.py,sha256=5f4FRqLid4ZLPIha87bxjik-P6BskKixE7hZ8i9DUQY,2460
|
|
@@ -56,20 +56,20 @@ jentic/apitools/openapi/datamodels/low/v31/openapi.py,sha256=5cBP0SdMewLtEDB88Hv
|
|
|
56
56
|
jentic/apitools/openapi/datamodels/low/v31/operation.py,sha256=cLQRVF6Vff4k1XkNwam8fL79Oa20I0xMtc4jdo3CwG4,5445
|
|
57
57
|
jentic/apitools/openapi/datamodels/low/v31/parameter.py,sha256=NilV-XRaV1FUon5ZyJG8KN1qdZcK923mBQtNlH59J_w,5213
|
|
58
58
|
jentic/apitools/openapi/datamodels/low/v31/path_item.py,sha256=mQTtGnIg1SYa2kEWHWFVQ2W7GlZ2fgwqcAg8NTQMcjk,4878
|
|
59
|
-
jentic/apitools/openapi/datamodels/low/v31/paths.py,sha256=
|
|
59
|
+
jentic/apitools/openapi/datamodels/low/v31/paths.py,sha256=gH5Oeuk5ItAkkZntSdfUIl_mWP5Wg1lX2w3VlBpB3Gs,3943
|
|
60
60
|
jentic/apitools/openapi/datamodels/low/v31/reference.py,sha256=9sv24nmuS-l8Fp9T53UuQ_KINLHy86tb5HaUAhXwR8I,2595
|
|
61
61
|
jentic/apitools/openapi/datamodels/low/v31/request_body.py,sha256=tQ2QaNSAZSQAQgpSU1VxB0GhK0-Miq5D1cH0FojQzA8,3900
|
|
62
62
|
jentic/apitools/openapi/datamodels/low/v31/response.py,sha256=N46VyXBuJ1agYhDuD4-gDRlSW3k1kQK_TaOVwZoqHFQ,3976
|
|
63
|
-
jentic/apitools/openapi/datamodels/low/v31/responses.py,sha256=
|
|
63
|
+
jentic/apitools/openapi/datamodels/low/v31/responses.py,sha256=lC_fFYHcx5FgRLAHqOqWs8mCv9q-2X0wPpdmnOwvdYs,4272
|
|
64
64
|
jentic/apitools/openapi/datamodels/low/v31/schema.py,sha256=jRVRKxSUNClWbmdHs1chDmTJKJBVT_DZWj9Nu2kQu7E,24818
|
|
65
|
-
jentic/apitools/openapi/datamodels/low/v31/security_requirement.py,sha256=
|
|
65
|
+
jentic/apitools/openapi/datamodels/low/v31/security_requirement.py,sha256=8kh7F7Y9vyMINIQTPqFQnA0oJoX0Tyy3zyhaEo0U1bM,4102
|
|
66
66
|
jentic/apitools/openapi/datamodels/low/v31/security_scheme.py,sha256=qNlKF9PkTC0tfV_PvbKUZnQMSr6PVeH5fyw3I83JPnw,5455
|
|
67
67
|
jentic/apitools/openapi/datamodels/low/v31/server.py,sha256=IA-dDnhqdD6WCZ_bjdGw_nQmp0cd0HiHeqGU_jIGocw,4687
|
|
68
68
|
jentic/apitools/openapi/datamodels/low/v31/server_variable.py,sha256=UfGDky_NVUF_WQc5ZIU947MjmpxaO__VIv6sq8HMsk0,2762
|
|
69
69
|
jentic/apitools/openapi/datamodels/low/v31/tag.py,sha256=8-QfVk4dUp3r-LbseMSvlCcAWeZkzlhZP3giVKNgaPI,2359
|
|
70
70
|
jentic/apitools/openapi/datamodels/low/v31/xml.py,sha256=SFLNLrhiZRWVH_CBV8SqtO4C4qjDjGtqz_lYpp84BnE,1930
|
|
71
|
-
jentic_openapi_datamodels-1.0.
|
|
72
|
-
jentic_openapi_datamodels-1.0.
|
|
73
|
-
jentic_openapi_datamodels-1.0.
|
|
74
|
-
jentic_openapi_datamodels-1.0.
|
|
75
|
-
jentic_openapi_datamodels-1.0.
|
|
71
|
+
jentic_openapi_datamodels-1.0.0a22.dist-info/licenses/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
72
|
+
jentic_openapi_datamodels-1.0.0a22.dist-info/licenses/NOTICE,sha256=pAOGW-rGw9KNc2cuuLWZkfx0GSTV4TicbgBKZSLPMIs,168
|
|
73
|
+
jentic_openapi_datamodels-1.0.0a22.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
74
|
+
jentic_openapi_datamodels-1.0.0a22.dist-info/METADATA,sha256=YJl4mpd-M7gRrOio1NX8QHQKXT-uHG2fqa87MWQjx5E,14260
|
|
75
|
+
jentic_openapi_datamodels-1.0.0a22.dist-info/RECORD,,
|
{jentic_openapi_datamodels-1.0.0a20.dist-info → jentic_openapi_datamodels-1.0.0a22.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|