robotframework-openapitools 1.0.0b4__py3-none-any.whl → 1.0.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.
Files changed (37) hide show
  1. OpenApiDriver/__init__.py +1 -0
  2. OpenApiDriver/openapi_executors.py +32 -4
  3. OpenApiDriver/openapidriver.libspec +183 -80
  4. OpenApiDriver/openapidriver.py +8 -279
  5. OpenApiLibCore/__init__.py +26 -0
  6. OpenApiLibCore/data_generation/__init__.py +0 -0
  7. OpenApiLibCore/data_generation/body_data_generation.py +4 -4
  8. OpenApiLibCore/data_generation/data_generation_core.py +18 -45
  9. OpenApiLibCore/data_invalidation.py +1 -5
  10. OpenApiLibCore/dto_base.py +31 -22
  11. OpenApiLibCore/dto_utils.py +31 -3
  12. OpenApiLibCore/localized_faker.py +0 -0
  13. OpenApiLibCore/models.py +26 -18
  14. OpenApiLibCore/openapi_libcore.libspec +229 -121
  15. OpenApiLibCore/openapi_libcore.py +45 -274
  16. OpenApiLibCore/parameter_utils.py +3 -3
  17. OpenApiLibCore/path_functions.py +5 -6
  18. OpenApiLibCore/path_invalidation.py +5 -7
  19. OpenApiLibCore/protocols.py +6 -0
  20. OpenApiLibCore/request_data.py +0 -0
  21. OpenApiLibCore/resource_relations.py +4 -2
  22. OpenApiLibCore/validation.py +4 -9
  23. OpenApiLibCore/value_utils.py +1 -1
  24. openapi_libgen/__init__.py +3 -0
  25. openapi_libgen/generator.py +2 -4
  26. openapi_libgen/parsing_utils.py +9 -5
  27. openapi_libgen/spec_parser.py +4 -4
  28. openapitools_docs/__init__.py +0 -0
  29. openapitools_docs/docstrings.py +891 -0
  30. openapitools_docs/documentation_generator.py +35 -0
  31. openapitools_docs/templates/documentation.jinja +209 -0
  32. {robotframework_openapitools-1.0.0b4.dist-info → robotframework_openapitools-1.0.1.dist-info}/METADATA +16 -98
  33. robotframework_openapitools-1.0.1.dist-info/RECORD +44 -0
  34. robotframework_openapitools-1.0.0b4.dist-info/RECORD +0 -40
  35. {robotframework_openapitools-1.0.0b4.dist-info → robotframework_openapitools-1.0.1.dist-info}/LICENSE +0 -0
  36. {robotframework_openapitools-1.0.0b4.dist-info → robotframework_openapitools-1.0.1.dist-info}/WHEEL +0 -0
  37. {robotframework_openapitools-1.0.0b4.dist-info → robotframework_openapitools-1.0.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,35 @@
1
+ import sys
2
+ from pathlib import Path
3
+
4
+ from jinja2 import Environment, FileSystemLoader
5
+
6
+ from openapitools_docs.docstrings import (
7
+ ADVANCED_USE_DOCUMENTATION,
8
+ OPENAPIDRIVER_DOCUMENTATION,
9
+ OPENAPILIBCORE_DOCUMENTATION,
10
+ OPENAPILIBGEN_DOCUMENTATION,
11
+ )
12
+
13
+ HERE = Path(__file__).parent.resolve()
14
+
15
+
16
+ def generate(output_folder: Path) -> None:
17
+ output_folder.mkdir(parents=True, exist_ok=True)
18
+
19
+ environment = Environment(loader=FileSystemLoader(f"{HERE}/templates/"))
20
+
21
+ documentation_template = environment.get_template("documentation.jinja")
22
+ output_file_path = output_folder / "index.html"
23
+ documentation_content = documentation_template.render(
24
+ libgen_documentation=OPENAPILIBGEN_DOCUMENTATION,
25
+ driver_documentation=OPENAPIDRIVER_DOCUMENTATION,
26
+ libcore_documentation=OPENAPILIBCORE_DOCUMENTATION,
27
+ advanced_use_documentation=ADVANCED_USE_DOCUMENTATION,
28
+ )
29
+ with open(output_file_path, mode="w", encoding="utf-8") as html_file:
30
+ html_file.write(documentation_content)
31
+
32
+
33
+ if __name__ == "__main__": # pragma: no cover
34
+ output_folder = Path(sys.argv[1])
35
+ generate(output_folder=output_folder)
@@ -0,0 +1,209 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <title>Robot Framework OpenApiTools documentation</title>
6
+ <!-- Get the flavicon -->
7
+ <link href="https://robotframework.org/img/icons/favicon-32x32.png" rel="icon" type="image/png">
8
+ <!-- Get the fonts -->
9
+ <link href="https://fonts.cdnfonts.com/css/ocr-a-std" rel="stylesheet">
10
+ <link href="https://fontlibrary.org//face/courier-code" rel="stylesheet" />
11
+ <!-- Code highlighting -->
12
+ <link href="code_highlighting/prism.css" rel="stylesheet" />
13
+
14
+ <style>
15
+ @import url("https://fonts.cdnfonts.com/css/ocr-a-std");
16
+ @import url("https://fontlibrary.org//face/courier-code");
17
+
18
+ :root {
19
+ color-scheme: light dark;
20
+ --font-title: "OCR A Std", sans-serif;
21
+ --font-body: "CourierCodeRoman";
22
+ --color-theme: light-dark(#00c0b5, #00c0b5);
23
+ --color-link: light-dark(#00857e, #00c0b5);
24
+ --color-black: #000;
25
+ --color-white: #f5f5f5;
26
+ --color-grey-light: #e7e7e7;
27
+ --color-grey-dark: #292f33;
28
+ --color-background: light-dark(#f0f0f0, #222);
29
+ --color-background-secondary: light-dark(#fff, #2b2b2b);
30
+ --font-size-body: 1rem;
31
+ --line-height-body: 1.75;
32
+ --font-size-banner: 6rem;
33
+ --font-weight-banner: 900;
34
+ --font-size-tablinks: 0.875rem;
35
+ --padding-very-small: 0.5rem;
36
+ --padding-small: 0.75rem;
37
+ --padding-normal: 1rem;
38
+ --padding-large: 2.25rem;
39
+ --border-radius-rounded: 0.2rem;
40
+ }
41
+
42
+ html {
43
+ font-size: 100%;
44
+ }
45
+
46
+ nav {
47
+ float: left;
48
+ width: 20%;
49
+ padding: 20px;
50
+ }
51
+
52
+ article {
53
+ float: left;
54
+ width: 80%;
55
+ padding: 20px;
56
+ }
57
+
58
+ body {
59
+ color: light-dark(var(--color-black), var(--color-white));
60
+ background-color: var(--color-background);
61
+ font-size: var(--font-size-body);
62
+ font-family: var(--font-body);
63
+ line-height: var(--line-height-body);
64
+ }
65
+
66
+ .flex-container {
67
+ display: flex;
68
+ }
69
+
70
+ .banner {
71
+ width: 100%;
72
+ background-color: var(--color-theme);
73
+ font-family: var(--font-title);
74
+ font-weight: var(--font-weight-banner);
75
+ font-size: var(--font-size-banner);
76
+ text-align: center;
77
+ }
78
+
79
+ .color-white {
80
+ color: var(--color-white)
81
+ }
82
+
83
+ .color-black {
84
+ color: var(--color-black)
85
+ }
86
+
87
+ .secondary-background {
88
+ background-color: var(--color-background-secondary);
89
+ padding: var(--padding-large)
90
+ }
91
+
92
+ .sidenav {
93
+ color: light-dark(var(--color-grey-dark), var(--color-grey-light));
94
+ background-color: var(--color-background);
95
+ }
96
+
97
+ a {
98
+ color: var(--color-link)
99
+ }
100
+
101
+ hr {
102
+ border: solid 2px var(--color-theme);
103
+ border-radius: 4px;
104
+ }
105
+
106
+ .code-block {
107
+ background-color: light-dark(var(--color-grey-light), var(--color-grey-dark));
108
+ padding: 0 var(--padding-normal)
109
+ }
110
+
111
+ .sidenav a:link,
112
+ .sidenav a:visited {
113
+ background-color: var(--color-background-secondary);
114
+ color: light-dark(var(--color-black), var(--color-white));
115
+ padding: 14px 25px;
116
+ border: 1px outset var(--color-link);
117
+ border-radius: 4px;
118
+ text-align: left;
119
+ text-decoration: none;
120
+ display: block;
121
+ }
122
+
123
+ .sidenav a:hover,
124
+ .sidenav a:active {
125
+ color: var(--color-theme);
126
+ }
127
+
128
+ .tablinks {
129
+ color: var(--color-black);
130
+ background-color: var(--color-white);
131
+ text-transform: uppercase;
132
+ box-shadow: rgba(0, 0, 0, 0.1) 2px 4px 3px -1px, rgba(0, 0, 0, 0.04) 6px 6px 15px -1px;
133
+ font-family: var(--font-title);
134
+ border-radius: var(--border-radius-rounded);
135
+ transition: color 0.2s, background-color 0.1s, box-shadow 0.1s;
136
+ padding: var(--padding-very-small) var(--padding-normal);
137
+ font-size: var(--font-size-tablinks);
138
+ margin-bottom: var(--padding-small);
139
+ margin-right: var(--padding-normal);
140
+ }
141
+
142
+ .tablinks.active {
143
+ color: var(--color-white);
144
+ background-color: var(--color-theme);
145
+ box-shadow: rgba(0, 0, 0, 0.2) 2px 3px 2px -1px inset;
146
+ }
147
+ </style>
148
+ </head>
149
+
150
+ <body>
151
+ <header>
152
+ <h1 class="banner">
153
+ <div class="color-white">ROBOT FRAMEWORK</div>
154
+ <div class="color-black">OPENAPITOOLS</div>
155
+ </h1>
156
+ </header>
157
+
158
+ <div class="flex-container">
159
+ <nav class="sidenav">
160
+ <h3>Keyword documentation quicklinks</h3>
161
+ <a href="openapidriver.html" target="_blank">OpenApiDriver</a>
162
+ <a href="openapi_libcore.html" target="_blank">OpenApiLibCore</a>
163
+ </nav>
164
+
165
+ <article>
166
+ <p>OpenApiTools is a set of libraries centered around the OpenAPI Specification</p>
167
+
168
+ <div class="tab">
169
+ <button class="tablinks" onclick="openDocs(event, 'libgen')" id="defaultOpen">OpenApiLibGen</button>
170
+ <button class="tablinks" onclick="openDocs(event, 'driver')">OpenApiDriver</button>
171
+ <button class="tablinks" onclick="openDocs(event, 'libcore')">OpenApiLibCore</button>
172
+ <button class="tablinks" onclick="openDocs(event, 'advanced')">Advanced Use</button>
173
+ </div>
174
+ <div id="libgen" class="tabcontent">
175
+ <div class="secondary-background">{{ libgen_documentation }}</div>
176
+ </div>
177
+ <div id="driver" class="tabcontent">
178
+ <div class="secondary-background">{{ driver_documentation }}</div>
179
+ </div>
180
+ <div id="libcore" class="tabcontent">
181
+ <div class="secondary-background">{{ libcore_documentation }}</div>
182
+ </div>
183
+ <div id="advanced" class="tabcontent">
184
+ <div class="secondary-background">{{ advanced_use_documentation }}</div>
185
+ </div>
186
+ </article>
187
+ </div>
188
+
189
+ <script>
190
+ function openDocs(evt, moduleName) {
191
+ var i, tabcontent, tablinks;
192
+ tabcontent = document.getElementsByClassName("tabcontent");
193
+ for (i = 0; i < tabcontent.length; i++) {
194
+ tabcontent[i].style.display = "none";
195
+ }
196
+ tablinks = document.getElementsByClassName("tablinks");
197
+ for (i = 0; i < tablinks.length; i++) {
198
+ tablinks[i].className = tablinks[i].className.replace(" active", "");
199
+ }
200
+ document.getElementById(moduleName).style.display = "block";
201
+ evt.currentTarget.className += " active";
202
+ }
203
+ document.getElementById("defaultOpen").click();
204
+ </script>
205
+ <!-- Code highlighting -->
206
+ <script src="code_highlighting/prism.js"></script>
207
+ </body>
208
+
209
+ </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: robotframework-openapitools
3
- Version: 1.0.0b4
3
+ Version: 1.0.1
4
4
  Summary: A set of Robot Framework libraries to test APIs for which the OAS is available.
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -210,6 +210,9 @@ Maintainer-email: r.a.mackaij@gmail.com
210
210
  Requires-Python: >=3.10, <4
211
211
  Classifier: Programming Language :: Python :: 3
212
212
  Classifier: Programming Language :: Python :: 3.10
213
+ Classifier: Programming Language :: Python :: 3.11
214
+ Classifier: Programming Language :: Python :: 3.12
215
+ Classifier: Programming Language :: Python :: 3.13
213
216
  Classifier: License :: OSI Approved :: Apache Software License
214
217
  Classifier: Operating System :: OS Independent
215
218
  Classifier: Topic :: Software Development :: Testing
@@ -226,109 +229,24 @@ Requires-Dist: rich_click (>=1.7.0)
226
229
  Requires-Dist: robotframework (>=6.0.0,!=7.0.0)
227
230
  Requires-Dist: robotframework-datadriver (>=1.10.0)
228
231
  Requires-Dist: rstr (>=3.2.0)
232
+ Project-URL: Documentation, https://marketsquare.github.io/robotframework-openapitools
229
233
  Project-URL: Homepage, https://github.com/MarketSquare/robotframework-openapitools
234
+ Project-URL: Repository, https://github.com/MarketSquare/robotframework-openapitools.git
230
235
  Description-Content-Type: text/markdown
231
236
 
232
- # OpenApiTools for Robot Framework
233
-
234
- OpenApiTools is a set of libraries centered around the OpenAPI Specification:
235
-
236
- - [OpenApiDriver](./driver.md)
237
- - [OpenApiLibCore](./libcore.md)
238
-
239
-
240
- ## New in OpenApiTools v1.0.0
241
-
242
- Inspired by the work Bartlomiej and Mateusz did on #roboswag, I've created a CLI tool that generates a fully functional Robot Framework (Python) library that builds on OpenApiLibCore for automatic request data generation and request execution.
243
-
244
- ### So how does it work?
245
- After installing / updating to the v1.0.0 beta (`pip install robotframework-openapitools==1.0.0b3`) , there's a new CLI command available in your (virtual) environment: `generate-library`. You'll have to provide a path to the openapi spec (json or yaml, can be a url or path to the file), provide a path to where to generate the library and (optionally) a name for the library:
246
-
247
- ```
248
- $ generate-library
249
- Please provide a source for the generation:
250
- $ http://127.0.0.1:8000/openapi.json
251
- Please provide a path to where the library will be generated:
252
- $ ./generated
253
- Please provide a name for the library [default: FastAPI]:
254
- $ My Generated Library
255
- generated/MyGeneratedLibrary/__init__.py created
256
- generated/MyGeneratedLibrary/my_generated_library.py created
257
- ```
258
-
259
- > Note: there's currently 2 environment variables that are taken into account by the generator; USE_SUMMARY_AS_KEYWORD_NAME can result in nicer keyword names (but: uniqueness is not guaranteed, so you might need to rename some of the generated keywords manually) and EXPAND_BODY_ARGUMENTS is what a recent poll in #api-testing was about.
260
-
261
- If the location where the library is located is in your Python search path, you'll be able to use it like a regular Robot Framework library (in fact, it's a drop-in replacement for OpenApiLibCore):
237
+ [![build](https://github.com/MarketSquare/robotframework-openapitools/actions/workflows/on-push.yml/badge.svg)](https://github.com/MarketSquare/robotframework-openapitools/actions/workflows/on-push.yml)
238
+ ![coverage](coverage-badge.svg)
262
239
 
263
- ```{robot}
264
- *** Settings ***
265
- Library MyGeneratedLibrary
266
- ... source=${ORIGIN}/openapi.json
267
- ... origin=${ORIGIN}
268
- ... base_path=${EMPTY}
269
- ... mappings_path=${ROOT}/tests/user_implemented/custom_user_mappings.py
270
- Variables ${ROOT}/tests/variables.py
240
+ ![latest release](https://img.shields.io/pypi/v/robotframework-openapitools?label=latest%20release)
241
+ ![Python versions](https://img.shields.io/pypi/pyversions/robotframework-openapitools)
242
+ ![PyPi downloads](https://img.shields.io/pypi/dm/robotframework-openapitools)
243
+ ![license](https://img.shields.io/pypi/l/robotframework-openapitools)
271
244
 
245
+ # OpenApiTools for Robot Framework
272
246
 
273
- *** Variables ***
274
- ${ORIGIN}= http://localhost:8000
275
-
276
-
277
- *** Test Cases ***
278
- Test Generated Keywords: Get Employees
279
- ${response}= Get Employees
280
- Should Be Equal As Integers ${response.status_code} 200
281
-
282
- Test Generated Keywords: Post Employee
283
- VAR &{body} name=Robin the Robot
284
- ${response}= Post Employee body=${body}
285
- # ${response}= Post Employee name=Robin the Robot
286
- Should Be Equal As Integers ${response.status_code} 201
287
- Should Be Equal ${response.json()}[name] Robin the Robot
288
-
289
- Test Generated Keywords: Get Employee
290
- ${response}= Get Employee
291
- Should Be Equal As Integers ${response.status_code} 200
292
-
293
- Test Generated Keywords: Patch Employee
294
- ${employee_id}= Get Valid Id For Path path=/employees/{employee_id}
295
- VAR &{body} date_of_birth=2021-12-31
296
- ${response}= Patch Employee employee_id=${employee_id} body=${body}
297
- # ${response}= Patch Employee employee_id=${employee_id} date_of_birth=2021-12-31
298
- Should Be Equal As Integers ${response.status_code} 403
299
-
300
- Test Generated Keywords: Post WageGroup
301
- VAR &{body} hourly_rate=99.99
302
- ${response}= Post Wagegroup body=${body}
303
- # ${response}= Post Wagegroup hourly_rate=99.99
304
- Should Be Equal As Integers ${response.status_code} 201
305
- Should Be Equal As Numbers ${response.json()}[hourly-rate] 99.99
306
-
307
- Test Generated Keywords: Get Energy Label
308
- ${response}= Get Energy Label
309
- ... zipcode=1111AA
310
- ... home_number=10
311
- ... extension=too long to be acceptable
312
- ... validate_against_schema=${FALSE}
313
- Should Be Equal As Integers ${response.status_code} 422
314
-
315
- VAR @{omit} extension
316
- ${response}= Get Energy Label
317
- ... zipcode=1111AA
318
- ... home_number=10
319
- ... extension=too long to be acceptable
320
- ... omit_parameters=${omit}
321
- Should Be Equal As Integers ${response.status_code} 200
322
- ```
323
-
324
- ### Contributions and feedback
247
+ If you're testing an API for which an OpenAPI specification is available (if you have a Swagger UI available, you are), OpenApiTools is for you!
325
248
 
326
- So now I need your feedback! Does the library generator work for your openapi spec? Does the library work / do all the generated keywords work? Please let me know of any issues you run into!
327
- Things I'd like to address / improve before an official release:
328
- - parameters with union types (e.g. int or float) are currently annotated as Any.
329
- - support for lists / arrays is limited (i.e. not supported as body)
330
- - objects / dicts are currently only typed as dict; I'm looking into TypedDict annotation for better auto-complete / auto-conversion
331
- - a documentation rework
249
+ To read everything about it, see the [html documentation](https://marketsquare.github.io/robotframework-openapitools).
332
250
 
333
- Subscribe to https://app.slack.com/client/T07PJQ9S7/CKK0X68KD for updates
251
+ The latest release notes can be found [here](./release_notes/1.0.1.md).
334
252
 
@@ -0,0 +1,44 @@
1
+ OpenApiDriver/__init__.py,sha256=6H51khQlcectCI8e67ls56QtkjB34neOaBS6gxo4ROk,1454
2
+ OpenApiDriver/openapi_executors.py,sha256=xYHi372ruxqc2lD3t6q9KZpOHQ7SR-vIilikU_Sm5vk,13211
3
+ OpenApiDriver/openapi_reader.py,sha256=1M3nFRRLgD3Vepiru_jqYgVrnkRznFpR7lzdUKetxYw,4340
4
+ OpenApiDriver/openapidriver.libspec,sha256=lAHhwhW_3DSYBd07oblHs6BW-RPaU2C2VzE75SNGaEo,26020
5
+ OpenApiDriver/openapidriver.py,sha256=bsGmmk9-u4tWanOwuiMba7dVnUgN4lN503wWIwaeYOc,3795
6
+ OpenApiDriver/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ OpenApiLibCore/__init__.py,sha256=KTuNKDTLeO59KUC4PvGYkIzymqXt_m19uFHfzUyc-8I,2366
8
+ OpenApiLibCore/annotations.py,sha256=YmvWKTbhyxRk2aWFra3v-3p30e96TFJ-CV9f3X90rPs,238
9
+ OpenApiLibCore/data_generation/__init__.py,sha256=NJViPQGHkczF2gxfS0wE2vE3wCRU9ixDEwHPMZApu6A,206
10
+ OpenApiLibCore/data_generation/body_data_generation.py,sha256=GkoQec3hEbpRr_hMwFJjFDjACQ776Uj3x3bhmB4TJVo,8348
11
+ OpenApiLibCore/data_generation/data_generation_core.py,sha256=MUjMJR5luhuPIU9fO5DflJhB0a6LVrHHoTqpEajXqxM,7938
12
+ OpenApiLibCore/data_invalidation.py,sha256=UqCQe62fkTUQdYofbVpBBS11kFeOsN6DJHCRFy0FC9w,11158
13
+ OpenApiLibCore/dto_base.py,sha256=r7tek0Ui-Zl05Dk1jXAUT00SfcUuN7mprXolHSMXMaI,9313
14
+ OpenApiLibCore/dto_utils.py,sha256=-mpG2tsjRuldDH9hms1hay6kDNNvVXl7XzLu8RUxjIg,4173
15
+ OpenApiLibCore/localized_faker.py,sha256=-Z3ry6V7xIkmAlUq70a1L_OspAPZTDFt4RFo3zj4Llo,2205
16
+ OpenApiLibCore/models.py,sha256=EfSxhcY78qTVyzWp4wHLE5h1kYR4QhjGQ-mkmIwgxg4,22813
17
+ OpenApiLibCore/oas_cache.py,sha256=Z2v0mn6JwKchbUKojYVt9sXi8Mc4LoENtN_ekTUtzfI,387
18
+ OpenApiLibCore/openapi_libcore.libspec,sha256=OwF2N6A4vUU3ySfnZbuNroF0pkUhV_6WS8IKYOHgvsE,42903
19
+ OpenApiLibCore/openapi_libcore.py,sha256=Hzxx95P5V7N4jSolNOkQRmB3aKxtu-WFw1ZMxT4Qsvw,25898
20
+ OpenApiLibCore/parameter_utils.py,sha256=Df1RajxtZNLD5UDFEBxprxKpGiUn52SeG04Ms96JnDA,3527
21
+ OpenApiLibCore/path_functions.py,sha256=8WW4BA14hNDx4dD_F40EGZSgDWO3yk5CxhrjqGpIkeU,8002
22
+ OpenApiLibCore/path_invalidation.py,sha256=RIf6pZIszz13nfuIQzOzK8sXZCrFSmEbXivfpc1jGRg,1435
23
+ OpenApiLibCore/protocols.py,sha256=qvCLUohC8OZhTxtabYPLJE0gGWB9L6GHwdGT1T8zKpM,1072
24
+ OpenApiLibCore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ OpenApiLibCore/request_data.py,sha256=KK-pPyfZUJGh9uPNUrvYb-DxumPGH9vcqJ_bdKJnmYw,8887
26
+ OpenApiLibCore/resource_relations.py,sha256=38Cd9FVvV0FCiTMc5uQleRVyQFbvnGaoiXOruKcOpag,1773
27
+ OpenApiLibCore/validation.py,sha256=xdWLaYslwlbBesaBzJfoQeCuseiCSZyCdFC7JLGqGQQ,14977
28
+ OpenApiLibCore/value_utils.py,sha256=6DcTSpYlo_moAY04K45iSvREQXtO5d9IK8ln5RAaims,7545
29
+ openapi_libgen/__init__.py,sha256=dprxYWWncvDF9z6lajA0T8ayvmvj1zwORou0C9tqTe0,108
30
+ openapi_libgen/command_line.py,sha256=rWByjZDPYYra6WOsINL2zj5Ny3YSIXiTrhRjSBA4FRE,2380
31
+ openapi_libgen/generator.py,sha256=kmHYFWb1zd8TymJh1z594bFRPOuZsllRYhIHtHEcCIE,2655
32
+ openapi_libgen/parsing_utils.py,sha256=ORJJq8QNPMFUI_shdzeRFYydyy9YsEm0TaWrpqqZubI,1039
33
+ openapi_libgen/spec_parser.py,sha256=lfYwwmGO0gsZH5gHttccxIxltI-2JSAAJma0k03tmRg,6414
34
+ openapi_libgen/templates/__init__.jinja,sha256=92OFwNzeO7lEiUBv04GfjKXA1088V7GbeneASBShbmc,102
35
+ openapi_libgen/templates/library.jinja,sha256=tIwJuGerOUJmMt928P_38MMfcnSHZqcPDPEJ56R6wT0,952
36
+ openapitools_docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ openapitools_docs/docstrings.py,sha256=oOoNeyo2g_bgHm93b4fASFtOlB0otm1iDJFDEYBIZaY,38355
38
+ openapitools_docs/documentation_generator.py,sha256=q9sSvOi0MQ1izmxaGaCLTh8pz8wqPAk3Rr0klllj8gI,1164
39
+ openapitools_docs/templates/documentation.jinja,sha256=oMcfj5ovyA2ignA9zhUvIq-6KdWbHvY-Qk9tnWr4c3s,7205
40
+ robotframework_openapitools-1.0.1.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
41
+ robotframework_openapitools-1.0.1.dist-info/METADATA,sha256=eRJt9eo2SLxmgUYmjdC61urUOXMLjeQvfVYOUq-tf-k,15620
42
+ robotframework_openapitools-1.0.1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
43
+ robotframework_openapitools-1.0.1.dist-info/entry_points.txt,sha256=_yd5PITEJf85hIEsrRkkWxXePf_O9YOOUjON3TYLy0c,69
44
+ robotframework_openapitools-1.0.1.dist-info/RECORD,,
@@ -1,40 +0,0 @@
1
- OpenApiDriver/__init__.py,sha256=YjHr-j8g9KwRriNCw_ABvCEbUEp118J70xeJ_t7qcas,1453
2
- OpenApiDriver/openapi_executors.py,sha256=4rBaRiVquPkWgTFMSeKbDqWi6ZlYOwcHDkNwotb9TPc,12536
3
- OpenApiDriver/openapi_reader.py,sha256=1M3nFRRLgD3Vepiru_jqYgVrnkRznFpR7lzdUKetxYw,4340
4
- OpenApiDriver/openapidriver.libspec,sha256=fxh2m7HAO_xK-TyEWlgbm8SeFC-iKcJD4vbHM-uCHvM,26481
5
- OpenApiDriver/openapidriver.py,sha256=vypR00YZS3ygGfFxdUedLdCm_f_bWDLMpD1vb49-O0A,15321
6
- OpenApiDriver/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- OpenApiLibCore/__init__.py,sha256=CGfgD0W2GcRDc5Q-tDpWk4IDpUmdCSZVPZ18a_KN-co,1733
8
- OpenApiLibCore/annotations.py,sha256=YmvWKTbhyxRk2aWFra3v-3p30e96TFJ-CV9f3X90rPs,238
9
- OpenApiLibCore/data_generation/__init__.py,sha256=NJViPQGHkczF2gxfS0wE2vE3wCRU9ixDEwHPMZApu6A,206
10
- OpenApiLibCore/data_generation/body_data_generation.py,sha256=s7lBsh3Tr9lMKfgDYhY2ROTKVIpVGHDUgNh-65U5i-4,8266
11
- OpenApiLibCore/data_generation/data_generation_core.py,sha256=UKtKnD7nnOZhiZOIHTZh5Fg5xMMW3M10ofgmGjiRhtI,9004
12
- OpenApiLibCore/data_invalidation.py,sha256=UjNUWXASk7AqqDkGx-3mU7SFb46pjP-A5Q5u1xXksrA,11293
13
- OpenApiLibCore/dto_base.py,sha256=CF7a8XPcRjWnHuRap_dV8Pcw3f18vxzEHQ5bhO0-FiE,9108
14
- OpenApiLibCore/dto_utils.py,sha256=5dvMYM2Nt9gXq6GGTGJjU5Z75x9p9ky-1V01aLTZgX8,3177
15
- OpenApiLibCore/localized_faker.py,sha256=-Z3ry6V7xIkmAlUq70a1L_OspAPZTDFt4RFo3zj4Llo,2205
16
- OpenApiLibCore/models.py,sha256=dHpduBUtbLkxJHsVF5kgt-qCku6Lq1TijD-8-U5By2Q,22423
17
- OpenApiLibCore/oas_cache.py,sha256=Z2v0mn6JwKchbUKojYVt9sXi8Mc4LoENtN_ekTUtzfI,387
18
- OpenApiLibCore/openapi_libcore.libspec,sha256=VX97Z7bPQLdt7uuhskGgUGoZc1klE7m63i5mrWtUPVM,44119
19
- OpenApiLibCore/openapi_libcore.py,sha256=xyHVShyEvSmBNMVlyK1N8TOT4QReTfvZ3vF7HrsB-Gw,35432
20
- OpenApiLibCore/parameter_utils.py,sha256=SifTQu-VyPw5jvAbzHdPBHX04PeF2Y5HEp-UNBk_9Ho,3530
21
- OpenApiLibCore/path_functions.py,sha256=JYsJT76DdQtlGLqMwzYKj_EkSkNkRrVcXN3JfTe0CDg,8097
22
- OpenApiLibCore/path_invalidation.py,sha256=2iYjkskMV-7lWu_id_LbVIiumffMWZicqoIKeewqpFA,1539
23
- OpenApiLibCore/protocols.py,sha256=lzUJ2meBvqUoJrqBa3mS-63SaPeNelQngkMvW_BgzG4,877
24
- OpenApiLibCore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- OpenApiLibCore/request_data.py,sha256=KK-pPyfZUJGh9uPNUrvYb-DxumPGH9vcqJ_bdKJnmYw,8887
26
- OpenApiLibCore/resource_relations.py,sha256=m2MDNIqhyCgnJCJ9nTLG4P_T7RflkCVyUM9V82VxKI0,1733
27
- OpenApiLibCore/validation.py,sha256=q5qeAVKKmLkCMCPRt7-SG0IXSCk3F_USy-7kPQ5tjOQ,15235
28
- OpenApiLibCore/value_utils.py,sha256=_x7bjrSyozIqzlnoo9KjguM322q-pDob5EOMpDpH7do,7519
29
- openapi_libgen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- openapi_libgen/command_line.py,sha256=rWByjZDPYYra6WOsINL2zj5Ny3YSIXiTrhRjSBA4FRE,2380
31
- openapi_libgen/generator.py,sha256=kK5SxhTJ4uFBoKegXuYwlE-qMMKEccC4T3_BHYZ3yBg,2727
32
- openapi_libgen/parsing_utils.py,sha256=d_N-v619SR6iyolz65IGN12H5wMUA8dzPuG1l7rv5gg,821
33
- openapi_libgen/spec_parser.py,sha256=6yZTJOdzXZ-ew__0dpm6XOAmBSfC3e91URI333ujIAg,6322
34
- openapi_libgen/templates/__init__.jinja,sha256=92OFwNzeO7lEiUBv04GfjKXA1088V7GbeneASBShbmc,102
35
- openapi_libgen/templates/library.jinja,sha256=tIwJuGerOUJmMt928P_38MMfcnSHZqcPDPEJ56R6wT0,952
36
- robotframework_openapitools-1.0.0b4.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
37
- robotframework_openapitools-1.0.0b4.dist-info/METADATA,sha256=Zy0USPxvhvKpVnVSBeR0-bAc3560wWZ2tFAB69Rap7c,19102
38
- robotframework_openapitools-1.0.0b4.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
39
- robotframework_openapitools-1.0.0b4.dist-info/entry_points.txt,sha256=_yd5PITEJf85hIEsrRkkWxXePf_O9YOOUjON3TYLy0c,69
40
- robotframework_openapitools-1.0.0b4.dist-info/RECORD,,