robotframework-openapitools 0.2.0__py3-none-any.whl → 0.2.1__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.
- OpenApiDriver/openapidriver.libspec +2 -2
- OpenApiLibCore/dto_base.py +2 -2
- OpenApiLibCore/oas_cache.py +17 -5
- OpenApiLibCore/openapi_libcore.libspec +16 -16
- OpenApiLibCore/openapi_libcore.py +73 -17
- {robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/METADATA +1 -1
- {robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/RECORD +9 -9
- {robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/LICENSE +0 -0
- {robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<keywordspec name="OpenApiDriver" type="LIBRARY" format="HTML" scope="SUITE" generated="2024-04-
|
3
|
-
<version>0.2.
|
2
|
+
<keywordspec name="OpenApiDriver" type="LIBRARY" format="HTML" scope="SUITE" generated="2024-04-18T10:17:57+00:00" specversion="5" source="/workspaces/robotframework-openapitools/src/OpenApiDriver/openapidriver.py" lineno="352">
|
3
|
+
<version>0.2.1</version>
|
4
4
|
<doc><p>Visit the <a href="https://github.com/MarketSquare/robotframework-openapidriver">library page</a> for an introduction and examples.</p></doc>
|
5
5
|
<tags>
|
6
6
|
</tags>
|
OpenApiLibCore/dto_base.py
CHANGED
@@ -76,8 +76,8 @@ def merge_schemas(first: Dict[str, Any], second: Dict[str, Any]) -> Dict[str, An
|
|
76
76
|
elif isinstance(value, list):
|
77
77
|
# if the key holds a list, extend the values (e.g. 'required')
|
78
78
|
merged_schema[key].extend(value)
|
79
|
-
|
80
|
-
logger.
|
79
|
+
elif value != merged_schema[key]:
|
80
|
+
logger.warning(
|
81
81
|
f"key '{key}' with value '{merged_schema[key]}' not "
|
82
82
|
f"updated to '{value}'"
|
83
83
|
)
|
OpenApiLibCore/oas_cache.py
CHANGED
@@ -1,5 +1,17 @@
|
|
1
|
-
from typing import Dict
|
2
|
-
|
3
|
-
from
|
4
|
-
|
5
|
-
|
1
|
+
from typing import Callable, Dict, Tuple
|
2
|
+
|
3
|
+
from openapi_core import Spec
|
4
|
+
from openapi_core.contrib.requests import (
|
5
|
+
RequestsOpenAPIRequest,
|
6
|
+
RequestsOpenAPIResponse,
|
7
|
+
)
|
8
|
+
from prance import ResolvingParser
|
9
|
+
|
10
|
+
PARSER_CACHE: Dict[
|
11
|
+
str,
|
12
|
+
Tuple[
|
13
|
+
ResolvingParser,
|
14
|
+
Spec,
|
15
|
+
Callable[[RequestsOpenAPIRequest, RequestsOpenAPIResponse], None],
|
16
|
+
],
|
17
|
+
] = {}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<keywordspec name="OpenApiLibCore" type="LIBRARY" format="HTML" scope="SUITE" generated="2024-04-
|
3
|
-
<version>0.2.
|
2
|
+
<keywordspec name="OpenApiLibCore" type="LIBRARY" format="HTML" scope="SUITE" generated="2024-04-18T10:17:56+00:00" specversion="5" source="/workspaces/robotframework-openapitools/src/OpenApiLibCore/openapi_libcore.py" lineno="415">
|
3
|
+
<version>0.2.1</version>
|
4
4
|
<doc><p>Main class providing the keywords and core logic to interact with an OpenAPI server.</p>
|
5
5
|
<p>Visit the <a href="https://github.com/MarketSquare/robotframework-openapi-libcore">library page</a> for an introduction.</p></doc>
|
6
6
|
<tags>
|
7
7
|
</tags>
|
8
8
|
<inits>
|
9
|
-
<init name="__init__" lineno="
|
9
|
+
<init name="__init__" lineno="423">
|
10
10
|
<arguments repr="source: str, origin: str = , base_path: str = , mappings_path: str | Path = , invalid_property_default_response: int = 422, default_id_property_name: str = id, faker_locale: str | List[str] | None = None, recursion_limit: int = 1, recursion_default: Any = {}, username: str = , password: str = , security_token: str = , auth: AuthBase | None = None, cert: str | Tuple[str, str] | None = None, verify_tls: bool | str | None = True, extra_headers: Dict[str, str] | None = None, cookies: Dict[str, str] | RequestsCookieJar | None = None, proxies: Dict[str, str] | None = None">
|
11
11
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="source: str">
|
12
12
|
<name>source</name>
|
@@ -144,7 +144,7 @@
|
|
144
144
|
</init>
|
145
145
|
</inits>
|
146
146
|
<keywords>
|
147
|
-
<kw name="Authorized Request" lineno="
|
147
|
+
<kw name="Authorized Request" lineno="1591">
|
148
148
|
<arguments repr="url: str, method: str, params: Dict[str, Any] | None = None, headers: Dict[str, str] | None = None, json_data: Dict[str, Dict[str, ForwardRef('JSON')] | List[ForwardRef('JSON')] | str | int | float | bool | None] | List[Dict[str, ForwardRef('JSON')] | List[ForwardRef('JSON')] | str | int | float | bool | None] | str | int | float | bool | None = None">
|
149
149
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="url: str">
|
150
150
|
<name>url</name>
|
@@ -174,7 +174,7 @@
|
|
174
174
|
<p>&gt; Note: provided username / password or auth objects take precedence over token based security</p></doc>
|
175
175
|
<shortdoc>Perform a request using the security token or authentication set in the library.</shortdoc>
|
176
176
|
</kw>
|
177
|
-
<kw name="Ensure In Use" lineno="
|
177
|
+
<kw name="Ensure In Use" lineno="1495">
|
178
178
|
<arguments repr="url: str, resource_relation: IdReference">
|
179
179
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="url: str">
|
180
180
|
<name>url</name>
|
@@ -188,7 +188,7 @@
|
|
188
188
|
<doc><p>Ensure that the (right-most) <span class="name">id</span> of the resource referenced by the <span class="name">url</span> is used by the resource defined by the <span class="name">resource_relation</span>.</p></doc>
|
189
189
|
<shortdoc>Ensure that the (right-most) `id` of the resource referenced by the `url` is used by the resource defined by the `resource_relation`.</shortdoc>
|
190
190
|
</kw>
|
191
|
-
<kw name="Get Ids From Url" lineno="
|
191
|
+
<kw name="Get Ids From Url" lineno="866">
|
192
192
|
<arguments repr="url: str">
|
193
193
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="url: str">
|
194
194
|
<name>url</name>
|
@@ -198,7 +198,7 @@
|
|
198
198
|
<doc><p>Perform a GET request on the <span class="name">url</span> and return the list of resource <span class="name">ids</span> from the response.</p></doc>
|
199
199
|
<shortdoc>Perform a GET request on the `url` and return the list of resource `ids` from the response.</shortdoc>
|
200
200
|
</kw>
|
201
|
-
<kw name="Get Invalid Json Data" lineno="
|
201
|
+
<kw name="Get Invalid Json Data" lineno="1272">
|
202
202
|
<arguments repr="url: str, method: str, status_code: int, request_data: RequestData">
|
203
203
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="url: str">
|
204
204
|
<name>url</name>
|
@@ -221,7 +221,7 @@
|
|
221
221
|
<p>&gt; Note: applicable UniquePropertyValueConstraint and IdReference Relations are considered before changes to <span class="name">json_data</span> are made.</p></doc>
|
222
222
|
<shortdoc>Return `json_data` based on the `dto` on the `request_data` that will cause the provided `status_code` for the `method` operation on the `url`.</shortdoc>
|
223
223
|
</kw>
|
224
|
-
<kw name="Get Invalidated Parameters" lineno="
|
224
|
+
<kw name="Get Invalidated Parameters" lineno="1320">
|
225
225
|
<arguments repr="status_code: int, request_data: RequestData">
|
226
226
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="status_code: int">
|
227
227
|
<name>status_code</name>
|
@@ -235,7 +235,7 @@
|
|
235
235
|
<doc><p>Returns a version of <span class="name">params, headers</span> as present on <span class="name">request_data</span> that has been modified to cause the provided <span class="name">status_code</span>.</p></doc>
|
236
236
|
<shortdoc>Returns a version of `params, headers` as present on `request_data` that has been modified to cause the provided `status_code`.</shortdoc>
|
237
237
|
</kw>
|
238
|
-
<kw name="Get Invalidated Url" lineno="
|
238
|
+
<kw name="Get Invalidated Url" lineno="1238">
|
239
239
|
<arguments repr="valid_url: str">
|
240
240
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="valid_url: str">
|
241
241
|
<name>valid_url</name>
|
@@ -246,7 +246,7 @@
|
|
246
246
|
<p>Raises ValueError if the valid_url cannot be invalidated.</p></doc>
|
247
247
|
<shortdoc>Return an url with all the path parameters in the `valid_url` replaced by a random UUID.</shortdoc>
|
248
248
|
</kw>
|
249
|
-
<kw name="Get Json Data For Dto Class" lineno="
|
249
|
+
<kw name="Get Json Data For Dto Class" lineno="1114">
|
250
250
|
<arguments repr="schema: Dict[str, Any], dto_class: Dto | Type[Dto], operation_id: str = ">
|
251
251
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="schema: Dict[str, Any]">
|
252
252
|
<name>schema</name>
|
@@ -265,7 +265,7 @@
|
|
265
265
|
<doc><p>Generate a valid (json-compatible) dict for all the <span class="name">dto_class</span> properties.</p></doc>
|
266
266
|
<shortdoc>Generate a valid (json-compatible) dict for all the `dto_class` properties.</shortdoc>
|
267
267
|
</kw>
|
268
|
-
<kw name="Get Json Data With Conflict" lineno="
|
268
|
+
<kw name="Get Json Data With Conflict" lineno="1539">
|
269
269
|
<arguments repr="url: str, method: str, dto: Dto, conflict_status_code: int">
|
270
270
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="url: str">
|
271
271
|
<name>url</name>
|
@@ -287,7 +287,7 @@
|
|
287
287
|
<doc><p>Return <span class="name">json_data</span> based on the <span class="name">UniquePropertyValueConstraint</span> that must be returned by the <span class="name">get_relations</span> implementation on the <span class="name">dto</span> for the given <span class="name">conflict_status_code</span>.</p></doc>
|
288
288
|
<shortdoc>Return `json_data` based on the `UniquePropertyValueConstraint` that must be returned by the `get_relations` implementation on the `dto` for the given `conflict_status_code`.</shortdoc>
|
289
289
|
</kw>
|
290
|
-
<kw name="Get Parameterized Endpoint From Url" lineno="
|
290
|
+
<kw name="Get Parameterized Endpoint From Url" lineno="1260">
|
291
291
|
<arguments repr="url: str">
|
292
292
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="url: str">
|
293
293
|
<name>url</name>
|
@@ -297,7 +297,7 @@
|
|
297
297
|
<doc><p>Return the endpoint as found in the <span class="name">paths</span> section based on the given <span class="name">url</span>.</p></doc>
|
298
298
|
<shortdoc>Return the endpoint as found in the `paths` section based on the given `url`.</shortdoc>
|
299
299
|
</kw>
|
300
|
-
<kw name="Get Request Data" lineno="
|
300
|
+
<kw name="Get Request Data" lineno="906">
|
301
301
|
<arguments repr="endpoint: str, method: str">
|
302
302
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="endpoint: str">
|
303
303
|
<name>endpoint</name>
|
@@ -311,7 +311,7 @@
|
|
311
311
|
<doc><p>Return an object with valid request data for body, headers and query params.</p></doc>
|
312
312
|
<shortdoc>Return an object with valid request data for body, headers and query params.</shortdoc>
|
313
313
|
</kw>
|
314
|
-
<kw name="Get Valid Id For Endpoint" lineno="
|
314
|
+
<kw name="Get Valid Id For Endpoint" lineno="770">
|
315
315
|
<arguments repr="endpoint: str, method: str">
|
316
316
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="endpoint: str">
|
317
317
|
<name>endpoint</name>
|
@@ -326,7 +326,7 @@
|
|
326
326
|
<p>To prevent resource conflicts with other test cases, a new resource is created (POST) if possible.</p></doc>
|
327
327
|
<shortdoc>Support keyword that returns the `id` for an existing resource at `endpoint`.</shortdoc>
|
328
328
|
</kw>
|
329
|
-
<kw name="Get Valid Url" lineno="
|
329
|
+
<kw name="Get Valid Url" lineno="730">
|
330
330
|
<arguments repr="endpoint: str, method: str">
|
331
331
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="endpoint: str">
|
332
332
|
<name>endpoint</name>
|
@@ -342,7 +342,7 @@
|
|
342
342
|
<p>&gt; Note: if valid ids cannot be retrieved within the scope of the API, the <span class="name">PathPropertiesConstraint</span> Relation can be used. More information can be found <a href="https://marketsquare.github.io/robotframework-openapi-libcore/advanced_use.html">here</a>.</p></doc>
|
343
343
|
<shortdoc>This keyword returns a valid url for the given `endpoint` and `method`.</shortdoc>
|
344
344
|
</kw>
|
345
|
-
<kw name="Set Origin" lineno="
|
345
|
+
<kw name="Set Origin" lineno="592">
|
346
346
|
<arguments repr="origin: str">
|
347
347
|
<arg kind="POSITIONAL_OR_NAMED" required="true" repr="origin: str">
|
348
348
|
<name>origin</name>
|
@@ -128,7 +128,18 @@ from itertools import zip_longest
|
|
128
128
|
from logging import getLogger
|
129
129
|
from pathlib import Path
|
130
130
|
from random import choice, sample
|
131
|
-
from typing import
|
131
|
+
from typing import (
|
132
|
+
Any,
|
133
|
+
Callable,
|
134
|
+
Dict,
|
135
|
+
Generator,
|
136
|
+
List,
|
137
|
+
Optional,
|
138
|
+
Set,
|
139
|
+
Tuple,
|
140
|
+
Type,
|
141
|
+
Union,
|
142
|
+
)
|
132
143
|
from uuid import uuid4
|
133
144
|
|
134
145
|
from openapi_core import Config, OpenAPI, Spec
|
@@ -597,7 +608,8 @@ class OpenApiLibCore: # pylint: disable=too-many-instance-attributes
|
|
597
608
|
|
598
609
|
@cached_property
|
599
610
|
def validation_spec(self) -> Spec:
|
600
|
-
|
611
|
+
_, validation_spec, _ = self._load_specs_and_validator()
|
612
|
+
return validation_spec
|
601
613
|
|
602
614
|
@property
|
603
615
|
def openapi_spec(self) -> Dict[str, Any]:
|
@@ -607,13 +619,43 @@ class OpenApiLibCore: # pylint: disable=too-many-instance-attributes
|
|
607
619
|
|
608
620
|
@cached_property
|
609
621
|
def _openapi_spec(self) -> Dict[str, Any]:
|
610
|
-
parser = self.
|
622
|
+
parser, _, _ = self._load_specs_and_validator()
|
611
623
|
return parser.specification
|
612
624
|
|
613
|
-
|
614
|
-
|
625
|
+
@cached_property
|
626
|
+
def response_validator(
|
627
|
+
self,
|
628
|
+
) -> Callable[[RequestsOpenAPIRequest, RequestsOpenAPIResponse], None]:
|
629
|
+
_, _, response_validator = self._load_specs_and_validator()
|
630
|
+
return response_validator
|
631
|
+
|
632
|
+
def _get_json_types_from_spec(self, spec: Dict[str, Any]) -> Set[str]:
|
633
|
+
json_types: Set[str] = set(self._get_json_types(spec))
|
634
|
+
return {json_type for json_type in json_types if json_type is not None}
|
635
|
+
|
636
|
+
def _get_json_types(self, item: Any) -> Generator[str, None, None]:
|
637
|
+
if isinstance(item, dict):
|
638
|
+
content_dict = item.get("content")
|
639
|
+
if content_dict is None:
|
640
|
+
for value in item.values():
|
641
|
+
yield from self._get_json_types(value)
|
642
|
+
|
643
|
+
else:
|
644
|
+
for content_type in content_dict:
|
645
|
+
if "json" in content_type:
|
646
|
+
yield content_type
|
647
|
+
|
648
|
+
if isinstance(item, list):
|
649
|
+
for list_item in item:
|
650
|
+
yield from self._get_json_types(list_item)
|
615
651
|
|
616
|
-
def
|
652
|
+
def _load_specs_and_validator(
|
653
|
+
self,
|
654
|
+
) -> Tuple[
|
655
|
+
ResolvingParser,
|
656
|
+
Spec,
|
657
|
+
Callable[[RequestsOpenAPIRequest, RequestsOpenAPIResponse], None],
|
658
|
+
]:
|
617
659
|
try:
|
618
660
|
|
619
661
|
def recursion_limit_handler(
|
@@ -626,7 +668,10 @@ class OpenApiLibCore: # pylint: disable=too-many-instance-attributes
|
|
626
668
|
# will have a global scope due to how the Python import system works. This
|
627
669
|
# ensures that in a Suite of Suites where multiple Suites use the same
|
628
670
|
# `source`, that OAS is only parsed / loaded once.
|
629
|
-
parser = PARSER_CACHE.get(
|
671
|
+
parser, validation_spec, response_validator = PARSER_CACHE.get(
|
672
|
+
self._source, (None, None, None)
|
673
|
+
)
|
674
|
+
|
630
675
|
if parser is None:
|
631
676
|
parser = ResolvingParser(
|
632
677
|
self._source,
|
@@ -640,9 +685,25 @@ class OpenApiLibCore: # pylint: disable=too-many-instance-attributes
|
|
640
685
|
"Source was loaded, but no specification was present after parsing."
|
641
686
|
)
|
642
687
|
|
643
|
-
|
688
|
+
validation_spec = Spec.from_dict(parser.specification)
|
689
|
+
|
690
|
+
json_types_from_spec: Set[str] = self._get_json_types_from_spec(
|
691
|
+
parser.specification
|
692
|
+
)
|
693
|
+
extra_deserializers = {
|
694
|
+
json_type: _json.loads for json_type in json_types_from_spec
|
695
|
+
}
|
696
|
+
config = Config(extra_media_type_deserializers=extra_deserializers)
|
697
|
+
openapi = OpenAPI(spec=validation_spec, config=config)
|
698
|
+
response_validator = openapi.validate_response
|
699
|
+
|
700
|
+
PARSER_CACHE[self._source] = (
|
701
|
+
parser,
|
702
|
+
validation_spec,
|
703
|
+
response_validator,
|
704
|
+
)
|
644
705
|
|
645
|
-
return parser
|
706
|
+
return parser, validation_spec, response_validator
|
646
707
|
|
647
708
|
except ResolutionError as exception:
|
648
709
|
BuiltIn().fatal_error(
|
@@ -660,15 +721,10 @@ class OpenApiLibCore: # pylint: disable=too-many-instance-attributes
|
|
660
721
|
Validate the reponse for a given request against the OpenAPI Spec that is
|
661
722
|
loaded during library initialization.
|
662
723
|
"""
|
663
|
-
|
664
|
-
config = None
|
665
|
-
else:
|
666
|
-
extra_deserializer = {response.content_type: _json.loads}
|
667
|
-
config = Config(extra_media_type_deserializers=extra_deserializer)
|
724
|
+
self.response_validator(request=request, response=response)
|
668
725
|
|
669
|
-
|
670
|
-
|
671
|
-
)
|
726
|
+
def read_paths(self) -> Dict[str, Any]:
|
727
|
+
return self.openapi_spec["paths"]
|
672
728
|
|
673
729
|
@keyword
|
674
730
|
def get_valid_url(self, endpoint: str, method: str) -> str:
|
{robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: robotframework-openapitools
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.1
|
4
4
|
Summary: A set of Robot Framework libraries to test APIs for which the OAS is available.
|
5
5
|
Home-page: https://github.com/MarketSquare/robotframework-openapitools
|
6
6
|
License: Apache-2.0
|
{robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/RECORD
RENAMED
@@ -1,15 +1,15 @@
|
|
1
1
|
OpenApiDriver/__init__.py,sha256=34h5RkB8nBNRKPId4r_B_xzcgXJYD3m2QYwIaPfpv80,1331
|
2
2
|
OpenApiDriver/openapi_executors.py,sha256=XEuHUD-3mBNb8WNK8gmJoYkz2HAjzS-K9oQ0FTmgOoc,32851
|
3
3
|
OpenApiDriver/openapi_reader.py,sha256=4kSM-hFd54ws-jq88inbienkaoC5sSDwfRuxLrHP7aA,4652
|
4
|
-
OpenApiDriver/openapidriver.libspec,sha256=
|
4
|
+
OpenApiDriver/openapidriver.libspec,sha256=3yU3o0AhCFulFWmmFwW-w0LY7GQaYSaU8er64Dr8cCA,28323
|
5
5
|
OpenApiDriver/openapidriver.py,sha256=QRFcF1q9x88rqsD7XzBN25wPYqTbZldK4rSvpEdhQHo,15214
|
6
6
|
OpenApiDriver/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
OpenApiLibCore/__init__.py,sha256=TOeGg8q0V8BNvdP9tEPE2MRQm7XyS1VzC5AP8y_qOPg,1591
|
8
|
-
OpenApiLibCore/dto_base.py,sha256=
|
8
|
+
OpenApiLibCore/dto_base.py,sha256=L1jKJLOthqL7jjdfZ6HDmM3t967UiH7RWkvsAu6NURg,11794
|
9
9
|
OpenApiLibCore/dto_utils.py,sha256=maYX9QqPaJtiEo8vIFQLsT2FOT-LUGVnNcVaca4zCDk,2903
|
10
|
-
OpenApiLibCore/oas_cache.py,sha256=
|
11
|
-
OpenApiLibCore/openapi_libcore.libspec,sha256=
|
12
|
-
OpenApiLibCore/openapi_libcore.py,sha256=
|
10
|
+
OpenApiLibCore/oas_cache.py,sha256=Qg_Is5pAJZjZu5VmwEEarQs8teKrh3Y2psCcpDLU5Y4,379
|
11
|
+
OpenApiLibCore/openapi_libcore.libspec,sha256=9Kn1CGzUoIL1uzb5cpjQrJS7ZKxjHAvRqADzCzdGlKQ,33102
|
12
|
+
OpenApiLibCore/openapi_libcore.py,sha256=GHuhcpMiDNGCy-0pmTB5WRbUDzK8wpL5O07lZo0kPVQ,65826
|
13
13
|
OpenApiLibCore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
14
|
OpenApiLibCore/value_utils.py,sha256=wO5ssYTuk4YWWMJb0kl5n20X2r0NG55FXvgLqQd8qvw,18145
|
15
15
|
roboswag/__init__.py,sha256=-8ql4wuY_ftOZRdCxSmBCMW3WpDk7Ir__st9xcb9qCI,223
|
@@ -35,7 +35,7 @@ roboswag/validate/__init__.py,sha256=stpgQmvZvqlqPBjZ3Vxhd3wbX_Nb85jyIbj44_EhK_w
|
|
35
35
|
roboswag/validate/core.py,sha256=CfUEhkXPFAzIppRSiGyh62j4BYW4vkjIXWEzRcJFD6o,84
|
36
36
|
roboswag/validate/schema.py,sha256=jyD44GcYU_JQLw5hb1wK-DwxOsbJ-FstoNHwIVVMqoo,711
|
37
37
|
roboswag/validate/text_response.py,sha256=P7WEC6ot1OG3YDEXRtmOwIFwki8jgq8fMb-L77X4vIo,527
|
38
|
-
robotframework_openapitools-0.2.
|
39
|
-
robotframework_openapitools-0.2.
|
40
|
-
robotframework_openapitools-0.2.
|
41
|
-
robotframework_openapitools-0.2.
|
38
|
+
robotframework_openapitools-0.2.1.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
|
39
|
+
robotframework_openapitools-0.2.1.dist-info/METADATA,sha256=tT_w_nW-DgGsHRjhoWUQxRg92sQTdjTG7gzdPf19ndE,1610
|
40
|
+
robotframework_openapitools-0.2.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
41
|
+
robotframework_openapitools-0.2.1.dist-info/RECORD,,
|
{robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/LICENSE
RENAMED
File without changes
|
{robotframework_openapitools-0.2.0.dist-info → robotframework_openapitools-0.2.1.dist-info}/WHEEL
RENAMED
File without changes
|