robotframework-openapitools 0.4.0__py3-none-any.whl → 1.0.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.
- OpenApiDriver/__init__.py +45 -41
- OpenApiDriver/openapi_executors.py +78 -49
- OpenApiDriver/openapi_reader.py +114 -116
- OpenApiDriver/openapidriver.libspec +209 -133
- OpenApiDriver/openapidriver.py +31 -296
- OpenApiLibCore/__init__.py +39 -13
- OpenApiLibCore/annotations.py +10 -0
- OpenApiLibCore/data_generation/__init__.py +10 -0
- OpenApiLibCore/data_generation/body_data_generation.py +250 -0
- OpenApiLibCore/data_generation/data_generation_core.py +233 -0
- OpenApiLibCore/data_invalidation.py +294 -0
- OpenApiLibCore/dto_base.py +67 -130
- OpenApiLibCore/dto_utils.py +125 -85
- OpenApiLibCore/localized_faker.py +88 -0
- OpenApiLibCore/models.py +723 -0
- OpenApiLibCore/oas_cache.py +14 -13
- OpenApiLibCore/openapi_libcore.libspec +355 -330
- OpenApiLibCore/openapi_libcore.py +385 -1953
- OpenApiLibCore/parameter_utils.py +97 -0
- OpenApiLibCore/path_functions.py +215 -0
- OpenApiLibCore/path_invalidation.py +42 -0
- OpenApiLibCore/protocols.py +38 -0
- OpenApiLibCore/request_data.py +246 -0
- OpenApiLibCore/resource_relations.py +55 -0
- OpenApiLibCore/validation.py +380 -0
- OpenApiLibCore/value_utils.py +216 -481
- openapi_libgen/__init__.py +3 -0
- openapi_libgen/command_line.py +75 -0
- openapi_libgen/generator.py +82 -0
- openapi_libgen/parsing_utils.py +30 -0
- openapi_libgen/spec_parser.py +154 -0
- openapi_libgen/templates/__init__.jinja +3 -0
- openapi_libgen/templates/library.jinja +30 -0
- robotframework_openapitools-1.0.0.dist-info/METADATA +249 -0
- robotframework_openapitools-1.0.0.dist-info/RECORD +40 -0
- {robotframework_openapitools-0.4.0.dist-info → robotframework_openapitools-1.0.0.dist-info}/WHEEL +1 -1
- robotframework_openapitools-1.0.0.dist-info/entry_points.txt +3 -0
- roboswag/__init__.py +0 -9
- roboswag/__main__.py +0 -3
- roboswag/auth.py +0 -44
- roboswag/cli.py +0 -80
- roboswag/core.py +0 -85
- roboswag/generate/__init__.py +0 -1
- roboswag/generate/generate.py +0 -121
- roboswag/generate/models/__init__.py +0 -0
- roboswag/generate/models/api.py +0 -219
- roboswag/generate/models/definition.py +0 -28
- roboswag/generate/models/endpoint.py +0 -68
- roboswag/generate/models/parameter.py +0 -25
- roboswag/generate/models/response.py +0 -8
- roboswag/generate/models/tag.py +0 -16
- roboswag/generate/models/utils.py +0 -60
- roboswag/generate/templates/api_init.jinja +0 -15
- roboswag/generate/templates/models.jinja +0 -7
- roboswag/generate/templates/paths.jinja +0 -68
- roboswag/logger.py +0 -33
- roboswag/validate/__init__.py +0 -6
- roboswag/validate/core.py +0 -3
- roboswag/validate/schema.py +0 -21
- roboswag/validate/text_response.py +0 -14
- robotframework_openapitools-0.4.0.dist-info/METADATA +0 -42
- robotframework_openapitools-0.4.0.dist-info/RECORD +0 -41
- {robotframework_openapitools-0.4.0.dist-info → robotframework_openapitools-1.0.0.dist-info}/LICENSE +0 -0
@@ -1,68 +0,0 @@
|
|
1
|
-
from itertools import chain
|
2
|
-
from typing import Dict, List
|
3
|
-
|
4
|
-
from roboswag.generate.models.parameter import Parameter
|
5
|
-
from roboswag.generate.models.response import Response
|
6
|
-
|
7
|
-
|
8
|
-
class Endpoint:
|
9
|
-
def __init__(
|
10
|
-
self,
|
11
|
-
method_name: str,
|
12
|
-
http_method,
|
13
|
-
url,
|
14
|
-
summary: str,
|
15
|
-
description: str,
|
16
|
-
path_params: List[Parameter],
|
17
|
-
headers: List[Parameter],
|
18
|
-
query: List[Parameter],
|
19
|
-
body: Parameter,
|
20
|
-
responses: Dict[str, Response],
|
21
|
-
exp_status: str = "200",
|
22
|
-
):
|
23
|
-
self.method_name: str = method_name
|
24
|
-
self.http_method = http_method
|
25
|
-
self.url = self.prepare_path(url, path_params)
|
26
|
-
self.summary: str = summary
|
27
|
-
self.description: str = description
|
28
|
-
self.path_params: List[Parameter] = path_params
|
29
|
-
self.headers: List[Parameter] = headers
|
30
|
-
self.query: List[Parameter] = query
|
31
|
-
self.body: Parameter = body
|
32
|
-
self.responses: Dict[str, Response] = responses
|
33
|
-
self.exp_status = exp_status
|
34
|
-
self.method_signature: str = self.get_python_method_signature()
|
35
|
-
|
36
|
-
@staticmethod
|
37
|
-
def prepare_path(url, path_params):
|
38
|
-
for param in path_params:
|
39
|
-
url = url.replace(f"{{{param.name}}}", f"{{{param.python_name}}}")
|
40
|
-
return url
|
41
|
-
|
42
|
-
def get_python_method_signature(self) -> str:
|
43
|
-
max_line_length: int = 120
|
44
|
-
args = [
|
45
|
-
str(param)
|
46
|
-
for param in chain(self.path_params, self.headers, self.query)
|
47
|
-
if param
|
48
|
-
]
|
49
|
-
if self.body:
|
50
|
-
args.append(f"{self.body}")
|
51
|
-
args.append(f"exp_status={self.exp_status}")
|
52
|
-
args.append(f"validate_schema=True")
|
53
|
-
line = f" def {self.method_name}(self"
|
54
|
-
prefix = len(line) - 4
|
55
|
-
last_index = len(args) - 1
|
56
|
-
method_sig = ""
|
57
|
-
for index, arg in enumerate(args):
|
58
|
-
if not arg:
|
59
|
-
continue
|
60
|
-
if len(line) + len(arg) + 2 > max_line_length - (
|
61
|
-
2 if last_index == index else 0
|
62
|
-
):
|
63
|
-
method_sig += line
|
64
|
-
line = ",\n" + prefix * " " + arg
|
65
|
-
else:
|
66
|
-
line += f", {arg}"
|
67
|
-
method_sig += line
|
68
|
-
return method_sig
|
@@ -1,25 +0,0 @@
|
|
1
|
-
from roboswag.generate.models.utils import pythonify_name
|
2
|
-
|
3
|
-
|
4
|
-
class Parameter:
|
5
|
-
def __init__(
|
6
|
-
self,
|
7
|
-
name: str,
|
8
|
-
default=None,
|
9
|
-
param_type=None,
|
10
|
-
description=None,
|
11
|
-
required=None,
|
12
|
-
schema=None,
|
13
|
-
) -> None:
|
14
|
-
self.name: str = name
|
15
|
-
self.python_name: str = pythonify_name(name)
|
16
|
-
self.default = default
|
17
|
-
self.param_type = param_type
|
18
|
-
self.description = description
|
19
|
-
self.required = required
|
20
|
-
self.schema = schema
|
21
|
-
|
22
|
-
def __str__(self):
|
23
|
-
if self.default is None:
|
24
|
-
return self.python_name
|
25
|
-
return f"{self.python_name}={self.default}"
|
roboswag/generate/models/tag.py
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
from typing import List
|
2
|
-
|
3
|
-
from roboswag.generate.models.endpoint import Endpoint
|
4
|
-
from roboswag.generate.models.utils import pythonify_name
|
5
|
-
|
6
|
-
|
7
|
-
class Tag:
|
8
|
-
def __init__(self, name: str, description: str = "") -> None:
|
9
|
-
# tag is grouped paths/endpoints
|
10
|
-
self.name: str = pythonify_name(name, join_mark="", join_fn="title")
|
11
|
-
self.description: str = description
|
12
|
-
self.endpoints: List[Endpoint] = []
|
13
|
-
|
14
|
-
@staticmethod
|
15
|
-
def normalize_tag_name(tag_name: str) -> str:
|
16
|
-
return tag_name.strip(" -_").title() + "API"
|
@@ -1,60 +0,0 @@
|
|
1
|
-
import datetime
|
2
|
-
import re
|
3
|
-
import uuid
|
4
|
-
from typing import Dict
|
5
|
-
|
6
|
-
RESERVED_WORDS = {"global", "cls", "self"}
|
7
|
-
|
8
|
-
types_mapping = {
|
9
|
-
"string": {
|
10
|
-
"": str,
|
11
|
-
"byte": str,
|
12
|
-
"password": str,
|
13
|
-
"date": datetime.date,
|
14
|
-
"date-time": datetime.datetime,
|
15
|
-
"binary": bytes,
|
16
|
-
"uuid": uuid.UUID,
|
17
|
-
},
|
18
|
-
"integer": {
|
19
|
-
"": int,
|
20
|
-
"int32": int,
|
21
|
-
"int64": int,
|
22
|
-
},
|
23
|
-
"number": {
|
24
|
-
"float": float,
|
25
|
-
"double": float,
|
26
|
-
},
|
27
|
-
"boolean": bool,
|
28
|
-
"file": "file",
|
29
|
-
"array": list(),
|
30
|
-
"object": object,
|
31
|
-
}
|
32
|
-
|
33
|
-
|
34
|
-
def get_python_type(param_type, param_format=None):
|
35
|
-
if not param_type:
|
36
|
-
return str
|
37
|
-
if not types_mapping[param_type]:
|
38
|
-
return str
|
39
|
-
if not isinstance(types_mapping[param_type], Dict):
|
40
|
-
return types_mapping[param_type]
|
41
|
-
if param_format:
|
42
|
-
return types_mapping[param_type][param_format]
|
43
|
-
return str
|
44
|
-
|
45
|
-
|
46
|
-
def pythonify_name(name: str, join_mark: str = "_", join_fn: str = "lower") -> str:
|
47
|
-
names = re.split("([A-Z][a-z]+)", name)
|
48
|
-
if join_fn == "lower":
|
49
|
-
name = join_mark.join(name.lower() for name in names if name.strip())
|
50
|
-
elif join_fn == "title":
|
51
|
-
name = join_mark.join(name.title() for name in names if name.strip())
|
52
|
-
name = name.replace("-", "")
|
53
|
-
return name
|
54
|
-
|
55
|
-
|
56
|
-
def replace_reserved_name(name: str) -> str:
|
57
|
-
"""If the name is in reserved words, append it with _"""
|
58
|
-
if name in RESERVED_WORDS:
|
59
|
-
return f"_{name}"
|
60
|
-
return name
|
@@ -1,15 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
**OpenAPI version:** {{ swagger_version }}
|
3
|
-
**Title:** {{ infos["title"] }}
|
4
|
-
**API Version:** {{ infos["version"] }}
|
5
|
-
{% if infos.get("description") %}**Description:** {{ infos["description"] }}{% endif %}
|
6
|
-
{% if infos.get("termsOfService") %}**Terms of Service:** {{ infos["termsOfService"] }}{% endif %}
|
7
|
-
{% if infos.get("contact") %}**Contact:**
|
8
|
-
{%- for key, value in infos["contact"].items() %}
|
9
|
-
**{{ key }}:** {{ value }}
|
10
|
-
{%- endfor %}{% endif %}
|
11
|
-
{% if infos.get("license") %}**License:**
|
12
|
-
{%- for key, value in infos["license"].items() %}
|
13
|
-
**{{ key }}:** {{ value }}
|
14
|
-
{%- endfor %}{% endif %}
|
15
|
-
"""
|
@@ -1,7 +0,0 @@
|
|
1
|
-
class {{ class_name }}:
|
2
|
-
def __init__(self{% if properties %}{% for property in properties %}, {{ property.name }}: {{ property.type.__name__ }}{% endfor %}{% endif %}):
|
3
|
-
{% for property in properties %}self.{{ property.name }} = {{ property.name }}
|
4
|
-
{% endfor %}
|
5
|
-
{% if not properties %}
|
6
|
-
pass
|
7
|
-
{% endif %}
|
@@ -1,68 +0,0 @@
|
|
1
|
-
import logging
|
2
|
-
import json
|
3
|
-
|
4
|
-
from roboswag import APIModel
|
5
|
-
{% if authentication %}from roboswag.auth import {{ authentication }}{% endif %}
|
6
|
-
|
7
|
-
|
8
|
-
class {{ class_name }}(APIModel):
|
9
|
-
{% if description %} """**Description:** {{ description }}"""
|
10
|
-
{% endif %}
|
11
|
-
def __init__(self, url):
|
12
|
-
super().__init__(base_url=url{% if authentication %}, authentication={{ authentication }}{% endif %})
|
13
|
-
{% for endpoint in endpoints %}
|
14
|
-
{{ endpoint.method_signature }}{% if endpoint.body %}, validate_payload=True, overwrite_body=None{% endif %}{% if endpoint.headers %}, overwrite_headers=None{% endif %}{% if endpoint.query %}, overwrite_query=None{% endif %}, **kwargs):
|
15
|
-
{% if (endpoint.summary or endpoint.description) %} """{% if endpoint.summary %}
|
16
|
-
**Summary:** {{ endpoint.summary }}{% endif %}{% if endpoint.description %}
|
17
|
-
|
18
|
-
**Description:** {{ endpoint.description }}{% endif %}
|
19
|
-
"""{% endif %}
|
20
|
-
{%- if endpoint.headers %}
|
21
|
-
headers = {
|
22
|
-
{%- for param in endpoint.headers %}
|
23
|
-
"{{ param.name }}": {{ param.python_name }}{{ "," if not loop.last else "" }}
|
24
|
-
{%- endfor %}
|
25
|
-
}
|
26
|
-
if overwrite_headers:
|
27
|
-
headers = overwrite_headers
|
28
|
-
{% endif %}
|
29
|
-
{%- if endpoint.query %}
|
30
|
-
_query = {
|
31
|
-
{%- for param in endpoint.query %}
|
32
|
-
"{{ param.name }}": {{ param.python_name }}{{ "," if not loop.last else "" }}
|
33
|
-
{%- endfor %}
|
34
|
-
}
|
35
|
-
if overwrite_query:
|
36
|
-
_query = overwrite_query
|
37
|
-
{% endif %}
|
38
|
-
{%- if endpoint.body %}
|
39
|
-
if validate_payload:
|
40
|
-
{%- if endpoint.body.schema %}
|
41
|
-
schema = {{ endpoint.body.schema }}
|
42
|
-
self.validate.schema(json.loads({{ endpoint.body.python_name }}), schema)
|
43
|
-
{%- endif %}
|
44
|
-
|
45
|
-
_body = overwrite_body if overwrite_body else {{ endpoint.body.python_name }}
|
46
|
-
{%- endif %}
|
47
|
-
response = self.{{ endpoint.http_method }}({{ "f" if "{" in endpoint.url else "" }}"{{ endpoint.url }}"{% if endpoint.headers %}, headers=headers{% endif %}{% if endpoint.query %}, query=_query{% endif %}{% if endpoint.body %}, body=_body{% endif %}, status=exp_status, **kwargs)
|
48
|
-
|
49
|
-
if validate_schema:{% for status_code, resp in endpoint.responses.items() %}
|
50
|
-
{%- if resp.schema %}
|
51
|
-
{% if not loop.first %}el{% endif %}if response.status_code == {{ status_code }}:
|
52
|
-
schema = {{ resp.schema }}
|
53
|
-
self.validate.schema(response.json(), schema)
|
54
|
-
{%- elif status_code != "default" %}
|
55
|
-
{% if not loop.first %}el{% endif %}if response.status_code == {{ status_code }}:
|
56
|
-
# TODO self.validate.response_as_text(response, "FILL EXPECTED MESSAGE")
|
57
|
-
pass
|
58
|
-
{%- else %}
|
59
|
-
{% if not loop.first %}el{% endif %}if response.status_code == "default":
|
60
|
-
# TODO self.validate.response_as_text(response, "FILL EXPECTED MESSAGE")
|
61
|
-
pass
|
62
|
-
{%- endif %}{% endfor %}
|
63
|
-
else:
|
64
|
-
logging.error(f"Received status code ({response.status_code}) is not expected by the API specification")
|
65
|
-
assert False
|
66
|
-
|
67
|
-
return response
|
68
|
-
{% endfor %}
|
roboswag/logger.py
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
from pprint import pformat
|
2
|
-
|
3
|
-
from robot.api import logger
|
4
|
-
|
5
|
-
|
6
|
-
class Logger:
|
7
|
-
@staticmethod
|
8
|
-
def info(message):
|
9
|
-
logger.info(message)
|
10
|
-
|
11
|
-
@staticmethod
|
12
|
-
def debug(message):
|
13
|
-
logger.debug(message)
|
14
|
-
|
15
|
-
@staticmethod
|
16
|
-
def log_request(response):
|
17
|
-
# TODO we can add flag for removing auth details (such as passwords, tokens) if needed
|
18
|
-
if response.history: # TODO print redirects
|
19
|
-
original_request = response.history[0].request
|
20
|
-
redirected = "(redirected)"
|
21
|
-
else:
|
22
|
-
original_request = response.request
|
23
|
-
redirected = ""
|
24
|
-
logger.info(
|
25
|
-
f"{original_request.method.upper()} {original_request.url} {redirected}\n"
|
26
|
-
f"headers: {pformat(original_request.headers)}"
|
27
|
-
) # TODO make pretty print work
|
28
|
-
|
29
|
-
@staticmethod
|
30
|
-
def log_response(response):
|
31
|
-
logger.info(
|
32
|
-
f"{response.request.method.upper()} response: {response.status_code} {response.text}"
|
33
|
-
)
|
roboswag/validate/__init__.py
DELETED
roboswag/validate/core.py
DELETED
roboswag/validate/schema.py
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
import json
|
2
|
-
from pathlib import Path
|
3
|
-
from typing import Dict, Union
|
4
|
-
|
5
|
-
import jsonschema
|
6
|
-
|
7
|
-
from roboswag.validate.core import ValidateBase
|
8
|
-
|
9
|
-
|
10
|
-
class ValidateSchema(ValidateBase):
|
11
|
-
def schema(self, to_validate, schema: Union[str, Path, Dict]):
|
12
|
-
self.logger.info("Validating schema...")
|
13
|
-
if isinstance(schema, (str, Path)):
|
14
|
-
with open(schema) as fp:
|
15
|
-
schema = json.load(fp)
|
16
|
-
self.logger.debug(f"Schema:\n{json.dumps(schema, indent=4)}")
|
17
|
-
try:
|
18
|
-
jsonschema.validate(instance=to_validate, schema=schema)
|
19
|
-
except jsonschema.exceptions.ValidationError as err:
|
20
|
-
raise err
|
21
|
-
self.logger.info("Schema is valid.")
|
@@ -1,14 +0,0 @@
|
|
1
|
-
from roboswag.validate.core import ValidateBase
|
2
|
-
|
3
|
-
|
4
|
-
class ValidateTextResponse(ValidateBase):
|
5
|
-
def response_as_text(self, response, exp_response):
|
6
|
-
self.logger.info("Validating response...")
|
7
|
-
assertion_err_msg = (
|
8
|
-
"Received response description:\n"
|
9
|
-
f" '{response.text}'\n"
|
10
|
-
"does not equal expected:\n"
|
11
|
-
f" '{exp_response}'"
|
12
|
-
)
|
13
|
-
assert response.text == exp_response, assertion_err_msg
|
14
|
-
self.logger.info("Response is valid.")
|
@@ -1,42 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: robotframework-openapitools
|
3
|
-
Version: 0.4.0
|
4
|
-
Summary: A set of Robot Framework libraries to test APIs for which the OAS is available.
|
5
|
-
Home-page: https://github.com/MarketSquare/robotframework-openapitools
|
6
|
-
License: Apache-2.0
|
7
|
-
Author: Bartlomiej Hirsz
|
8
|
-
Author-email: bartek.hirsz@gmail.com
|
9
|
-
Maintainer: Robin Mackaij
|
10
|
-
Maintainer-email: r.a.mackaij@gmail.com
|
11
|
-
Requires-Python: >=3.8,<4.0
|
12
|
-
Classifier: Framework :: Robot Framework
|
13
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
14
|
-
Classifier: Operating System :: OS Independent
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
16
|
-
Classifier: Programming Language :: Python :: 3.8
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
18
|
-
Classifier: Programming Language :: Python :: 3.10
|
19
|
-
Classifier: Programming Language :: Python :: 3.11
|
20
|
-
Classifier: Programming Language :: Python :: 3.12
|
21
|
-
Classifier: Programming Language :: Python :: 3.13
|
22
|
-
Classifier: Topic :: Software Development :: Testing
|
23
|
-
Classifier: Topic :: Software Development :: Testing :: Acceptance
|
24
|
-
Requires-Dist: Faker (>=23.1.0)
|
25
|
-
Requires-Dist: Jinja2 (>=3.1.2)
|
26
|
-
Requires-Dist: black (>=24.1.0)
|
27
|
-
Requires-Dist: openapi-core (>=0.19.0)
|
28
|
-
Requires-Dist: prance[cli] (>=23)
|
29
|
-
Requires-Dist: requests (>=2.31.0)
|
30
|
-
Requires-Dist: rich_click (>=1.7.0)
|
31
|
-
Requires-Dist: robotframework (>=6.0.0,!=7.0.0)
|
32
|
-
Requires-Dist: robotframework-datadriver (>=1.10.0)
|
33
|
-
Requires-Dist: rstr (>=3.2.0)
|
34
|
-
Description-Content-Type: text/markdown
|
35
|
-
|
36
|
-
# OpenApiTools for Robot Framework
|
37
|
-
|
38
|
-
OpenApiTools is a set of libraries centered around the OpenAPI Specification:
|
39
|
-
|
40
|
-
- [OpenApiDriver](./driver.md)
|
41
|
-
- [OpenApiLibCore](./libcore.md)
|
42
|
-
|
@@ -1,41 +0,0 @@
|
|
1
|
-
OpenApiDriver/__init__.py,sha256=34h5RkB8nBNRKPId4r_B_xzcgXJYD3m2QYwIaPfpv80,1331
|
2
|
-
OpenApiDriver/openapi_executors.py,sha256=L_oixhT1Ux6ZOTz0-iQEBos_Qz1kkRc3W_YjI-A-VuM,12434
|
3
|
-
OpenApiDriver/openapi_reader.py,sha256=4kSM-hFd54ws-jq88inbienkaoC5sSDwfRuxLrHP7aA,4652
|
4
|
-
OpenApiDriver/openapidriver.libspec,sha256=5Wleyi6EM42z4_Wzg38L5YGUPNRBjGw-XU0ZaYut4ow,27181
|
5
|
-
OpenApiDriver/openapidriver.py,sha256=HD2t32pU0RokKbf2VopjxlArIVoh_-fLcwiJmfQ2MJM,15209
|
6
|
-
OpenApiDriver/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
OpenApiLibCore/__init__.py,sha256=CGZRj3Vh4TZ76LOLWJOrBFr27QYWVXsO1imLqH-aP9E,1604
|
8
|
-
OpenApiLibCore/dto_base.py,sha256=GE_vXY0bJsDfOyQFahRy9jVgFR6BbWDmyrAegl1NQS4,12299
|
9
|
-
OpenApiLibCore/dto_utils.py,sha256=maYX9QqPaJtiEo8vIFQLsT2FOT-LUGVnNcVaca4zCDk,2903
|
10
|
-
OpenApiLibCore/oas_cache.py,sha256=Qg_Is5pAJZjZu5VmwEEarQs8teKrh3Y2psCcpDLU5Y4,379
|
11
|
-
OpenApiLibCore/openapi_libcore.libspec,sha256=o3_sXNjA3QSr-sPH6Ai5mGPg0MFToLJ5GnTWqZWajfc,47001
|
12
|
-
OpenApiLibCore/openapi_libcore.py,sha256=zRk8QMc22wFLqpLQQOac1aZgoF_IDQdZdRkrBtfqCF0,93211
|
13
|
-
OpenApiLibCore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
|
-
OpenApiLibCore/value_utils.py,sha256=wO5ssYTuk4YWWMJb0kl5n20X2r0NG55FXvgLqQd8qvw,18145
|
15
|
-
roboswag/__init__.py,sha256=-8ql4wuY_ftOZRdCxSmBCMW3WpDk7Ir__st9xcb9qCI,223
|
16
|
-
roboswag/__main__.py,sha256=sZyVODLDUj4yuWwQEdB8lSOuNsmTfmt4XqbYUgwcIOg,35
|
17
|
-
roboswag/auth.py,sha256=Nh4p0OsRH6dvpPSPmFfLVsTcNXqDemzmtqHymRbCWNc,1323
|
18
|
-
roboswag/cli.py,sha256=mmdRPmu1J0w9gmHcd0ezSi7HAWLi_U18wELVztmIucs,2216
|
19
|
-
roboswag/core.py,sha256=TFv6XTno-c9SqzVuFjgUbpgn7xAQvuSsr3-hk3GxegY,2870
|
20
|
-
roboswag/generate/__init__.py,sha256=ibIs0SR9XqajHy9fPQJdCAQrTr1JXym3T0PZB_hXR_M,59
|
21
|
-
roboswag/generate/generate.py,sha256=a2okQD56z3Ql7d_LF9GfO_mM-jtgwUFYmjiXWmweTew,4706
|
22
|
-
roboswag/generate/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
|
-
roboswag/generate/models/api.py,sha256=wuBGnmP85DDUjlGDUrmZRxAxE8tlG5PAAit57qtupzU,8528
|
24
|
-
roboswag/generate/models/definition.py,sha256=PX4sPU000ceezlgF7s3UqIHzp5gqzurQbSMdkvHQM0o,841
|
25
|
-
roboswag/generate/models/endpoint.py,sha256=GnHtZV-2kB-28QNrJNvCUSoOy2tmT6qUlmeIG50ZhGg,2304
|
26
|
-
roboswag/generate/models/parameter.py,sha256=CWUuAgT8opjcuJ_ew6q-nYe5nWDZ8g4pe8H55bXQhf0,682
|
27
|
-
roboswag/generate/models/response.py,sha256=KTcQez15japXnSMsrYGdfRF9jz5igQf_ZFwpG4CejX8,257
|
28
|
-
roboswag/generate/models/tag.py,sha256=uV3YSujM-f7HVbHyWMZ46PV65SOzrYCiXsRhk7PwcGY,561
|
29
|
-
roboswag/generate/models/utils.py,sha256=NPDl9_urjctkL0nzYEb1lOMcbX64VqliszPPGhzklwY,1550
|
30
|
-
roboswag/generate/templates/api_init.jinja,sha256=NyvQ9I1lhzv3f1nsxaJx2l8iifwsG_HpK44POtNiJjI,621
|
31
|
-
roboswag/generate/templates/models.jinja,sha256=upTukanAN__KcaNLNphn0M2miMcJx91r1cqU9F9qiz8,357
|
32
|
-
roboswag/generate/templates/paths.jinja,sha256=jfqahBD0hSqDwaVfVZn-nFvsiGV-rZNE_p1qBTLbxx4,3191
|
33
|
-
roboswag/logger.py,sha256=SdxkYw8UITgy0zyGVyUSFh4PVXrDHf8ElZ052iDzF8U,1025
|
34
|
-
roboswag/validate/__init__.py,sha256=stpgQmvZvqlqPBjZ3Vxhd3wbX_Nb85jyIbj44_EhK_w,188
|
35
|
-
roboswag/validate/core.py,sha256=CfUEhkXPFAzIppRSiGyh62j4BYW4vkjIXWEzRcJFD6o,84
|
36
|
-
roboswag/validate/schema.py,sha256=jyD44GcYU_JQLw5hb1wK-DwxOsbJ-FstoNHwIVVMqoo,711
|
37
|
-
roboswag/validate/text_response.py,sha256=P7WEC6ot1OG3YDEXRtmOwIFwki8jgq8fMb-L77X4vIo,527
|
38
|
-
robotframework_openapitools-0.4.0.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
|
39
|
-
robotframework_openapitools-0.4.0.dist-info/METADATA,sha256=gebYOaq4qzFePksuD1iKi6kdc7nYGv9nFuwwWc7IAwc,1621
|
40
|
-
robotframework_openapitools-0.4.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
41
|
-
robotframework_openapitools-0.4.0.dist-info/RECORD,,
|
{robotframework_openapitools-0.4.0.dist-info → robotframework_openapitools-1.0.0.dist-info}/LICENSE
RENAMED
File without changes
|