openapi3-parser 1.1.20__tar.gz → 1.1.22__tar.gz

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 (46) hide show
  1. openapi3_parser-1.1.22/PKG-INFO +130 -0
  2. openapi3_parser-1.1.22/pyproject.toml +71 -0
  3. openapi3_parser-1.1.22/readme.md +89 -0
  4. openapi3_parser-1.1.22/setup.cfg +4 -0
  5. openapi3_parser-1.1.22/src/openapi3_parser.egg-info/PKG-INFO +130 -0
  6. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi3_parser.egg-info/SOURCES.txt +2 -2
  7. openapi3_parser-1.1.22/src/openapi3_parser.egg-info/requires.txt +2 -0
  8. openapi3_parser-1.1.22/src/openapi_parser/__init__.py +3 -0
  9. openapi3_parser-1.1.22/src/openapi_parser/enumeration.py +149 -0
  10. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/tests/test_enumeration.py +12 -11
  11. openapi3_parser-1.1.20/PKG-INFO +0 -29
  12. openapi3_parser-1.1.20/setup.cfg +0 -29
  13. openapi3_parser-1.1.20/setup.py +0 -34
  14. openapi3_parser-1.1.20/src/openapi3_parser.egg-info/PKG-INFO +0 -29
  15. openapi3_parser-1.1.20/src/openapi3_parser.egg-info/requires.txt +0 -2
  16. openapi3_parser-1.1.20/src/openapi_parser/__init__.py +0 -11
  17. openapi3_parser-1.1.20/src/openapi_parser/enumeration.py +0 -148
  18. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/license.txt +0 -0
  19. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi3_parser.egg-info/dependency_links.txt +0 -0
  20. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi3_parser.egg-info/top_level.txt +0 -0
  21. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/__init__.py +0 -0
  22. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/common.py +0 -0
  23. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/content.py +0 -0
  24. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/external_doc.py +0 -0
  25. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/header.py +0 -0
  26. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/info.py +0 -0
  27. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/oauth_flow.py +0 -0
  28. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/operation.py +0 -0
  29. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/parameter.py +0 -0
  30. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/path.py +0 -0
  31. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/request.py +0 -0
  32. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/response.py +0 -0
  33. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/schema.py +0 -0
  34. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/schemas.py +0 -0
  35. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/security.py +0 -0
  36. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/server.py +0 -0
  37. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/builders/tag.py +0 -0
  38. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/errors.py +0 -0
  39. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/loose_types.py +0 -0
  40. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/parser.py +0 -0
  41. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/py.typed +0 -0
  42. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/resolver.py +0 -0
  43. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/src/openapi_parser/specification.py +0 -0
  44. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/tests/test_parser.py +0 -0
  45. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/tests/test_parser_options.py +0 -0
  46. {openapi3_parser-1.1.20 → openapi3_parser-1.1.22}/tests/test_runner.py +0 -0
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: openapi3-parser
3
+ Version: 1.1.22
4
+ Summary: OpenAPI v3 parser
5
+ Author-email: Artem Manchenkov <artem@manchenkoff.me>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2020 Artyom Manchenkov
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: homepage, https://github.com/manchenkoff/openapi3-parser
29
+ Project-URL: source, https://github.com/manchenkoff/openapi3-parser
30
+ Keywords: swagger,python,swagger-parser,openapi3-parser,parser,openapi3,swagger-api
31
+ Classifier: Development Status :: 4 - Beta
32
+ Classifier: License :: OSI Approved :: MIT License
33
+ Classifier: Operating System :: OS Independent
34
+ Classifier: Intended Audience :: Developers
35
+ Classifier: Programming Language :: Python :: 3.9
36
+ Classifier: Topic :: Software Development :: Libraries
37
+ Requires-Python: >=3.9
38
+ Description-Content-Type: text/markdown
39
+ Requires-Dist: openapi-spec-validator>=0.7.2
40
+ Requires-Dist: prance>=23.6.21.0
41
+
42
+ # OpenAPI Parser
43
+
44
+ [![PyPI - Version](https://img.shields.io/pypi/v/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
45
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/openapi3-parser)](https://clickpy.clickhouse.com/dashboard/openapi3-parser)
46
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
47
+ [![PyPI - Format](https://img.shields.io/pypi/format/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
48
+ [![PyPI - License](https://img.shields.io/pypi/l/openapi3-parser)](license.txt)
49
+
50
+ A simple package to parse your OpenAPI 3 documents into Python object to work with.
51
+
52
+ Supported versions:
53
+
54
+ | Version | Status |
55
+ | ------- | -------------- |
56
+ | 2.0 | Deprecated |
57
+ | 3.0 | **Supported** |
58
+ | 3.1 | In development |
59
+
60
+ ## How to install
61
+
62
+ To install package run the following command
63
+
64
+ ```
65
+ pip install openapi3-parser
66
+ ```
67
+
68
+ ## How to use
69
+
70
+ Example of parser usage
71
+
72
+ ```
73
+ >>> from openapi_parser import parse
74
+ >>> content = parse('swagger.yml')
75
+ >>> print(content)
76
+ ```
77
+
78
+ Get application servers
79
+
80
+ ```python
81
+ from openapi_parser import parse
82
+
83
+ specification = parse('data/swagger.yml')
84
+
85
+ print("Application servers")
86
+
87
+ for server in specification.servers:
88
+ print(f"{server.description} - {server.url}")
89
+
90
+ # Output
91
+ #
92
+ # >> Application servers
93
+ # >> production - https://users.app
94
+ # >> staging - http://stage.users.app
95
+ # >> development - http://users.local
96
+ ```
97
+
98
+ Get list of application URLs
99
+
100
+ ```python
101
+ from openapi_parser import parse
102
+
103
+ specification = parse('tests/data/swagger.yml')
104
+
105
+ urls = [x.url for x in specification.paths]
106
+
107
+ print(urls)
108
+
109
+ # Output
110
+ #
111
+ # >> ['/users', '/users/{uuid}']
112
+ ```
113
+
114
+ Get operation with supported HTTP methods
115
+
116
+ ```python
117
+ from openapi_parser import parse
118
+
119
+ specification = parse('tests/data/swagger.yml')
120
+
121
+ for path in specification.paths:
122
+ supported_methods = ','.join([x.method.value for x in path.operations])
123
+
124
+ print(f"Operation: {path.url}, methods: {supported_methods}")
125
+
126
+ # Output
127
+ #
128
+ # >> Operation: /users, methods: get,post
129
+ # >> Operation: /users/{uuid}, methods: get,put
130
+ ```
@@ -0,0 +1,71 @@
1
+ [project]
2
+ name = "openapi3-parser"
3
+ version = "1.1.22"
4
+ description = "OpenAPI v3 parser"
5
+ readme = "readme.md"
6
+ license = { file = "license.txt" }
7
+ authors = [{ name = "Artem Manchenkov", email = "artem@manchenkoff.me" }]
8
+ keywords = [
9
+ "swagger",
10
+ "python",
11
+ "swagger-parser",
12
+ "openapi3-parser",
13
+ "parser",
14
+ "openapi3",
15
+ "swagger-api",
16
+ ]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Operating System :: OS Independent",
21
+ "Intended Audience :: Developers",
22
+ "Programming Language :: Python :: 3.9",
23
+ "Topic :: Software Development :: Libraries",
24
+ ]
25
+ requires-python = ">=3.9"
26
+ dependencies = ["openapi-spec-validator>=0.7.2", "prance>=23.6.21.0"]
27
+
28
+ [project.urls]
29
+ homepage = "https://github.com/manchenkoff/openapi3-parser"
30
+ source = "https://github.com/manchenkoff/openapi3-parser"
31
+
32
+ [dependency-groups]
33
+ dev = ["mypy>=1.18.2", "pytest>=8.4.2"]
34
+
35
+ [build-system]
36
+ requires = ["setuptools>=61.0"]
37
+ build-backend = "setuptools.build_meta"
38
+
39
+ [tool.setuptools.packages.find]
40
+ where = ["src"]
41
+
42
+ [[tool.uv.index]]
43
+ name = "testpypi"
44
+ url = "https://test.pypi.org/simple/"
45
+ publish-url = "https://test.pypi.org/legacy/"
46
+ explicit = true
47
+
48
+ [tool.mypy]
49
+ python_version = 3.9
50
+
51
+ check_untyped_defs = true
52
+ follow_imports = "silent"
53
+ no_implicit_reexport = true
54
+ no_implicit_optional = true
55
+
56
+ strict_optional = true
57
+ strict_equality = true
58
+
59
+ ignore_missing_imports = true
60
+ ignore_errors = false
61
+
62
+ disallow_any_generics = false
63
+ disallow_untyped_defs = true
64
+ disallow_untyped_calls = true
65
+ disallow_untyped_decorators = true
66
+
67
+ warn_redundant_casts = true
68
+ warn_unused_ignores = true
69
+ warn_unused_configs = true
70
+ warn_unreachable = true
71
+ warn_no_return = true
@@ -0,0 +1,89 @@
1
+ # OpenAPI Parser
2
+
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
4
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/openapi3-parser)](https://clickpy.clickhouse.com/dashboard/openapi3-parser)
5
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
6
+ [![PyPI - Format](https://img.shields.io/pypi/format/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
7
+ [![PyPI - License](https://img.shields.io/pypi/l/openapi3-parser)](license.txt)
8
+
9
+ A simple package to parse your OpenAPI 3 documents into Python object to work with.
10
+
11
+ Supported versions:
12
+
13
+ | Version | Status |
14
+ | ------- | -------------- |
15
+ | 2.0 | Deprecated |
16
+ | 3.0 | **Supported** |
17
+ | 3.1 | In development |
18
+
19
+ ## How to install
20
+
21
+ To install package run the following command
22
+
23
+ ```
24
+ pip install openapi3-parser
25
+ ```
26
+
27
+ ## How to use
28
+
29
+ Example of parser usage
30
+
31
+ ```
32
+ >>> from openapi_parser import parse
33
+ >>> content = parse('swagger.yml')
34
+ >>> print(content)
35
+ ```
36
+
37
+ Get application servers
38
+
39
+ ```python
40
+ from openapi_parser import parse
41
+
42
+ specification = parse('data/swagger.yml')
43
+
44
+ print("Application servers")
45
+
46
+ for server in specification.servers:
47
+ print(f"{server.description} - {server.url}")
48
+
49
+ # Output
50
+ #
51
+ # >> Application servers
52
+ # >> production - https://users.app
53
+ # >> staging - http://stage.users.app
54
+ # >> development - http://users.local
55
+ ```
56
+
57
+ Get list of application URLs
58
+
59
+ ```python
60
+ from openapi_parser import parse
61
+
62
+ specification = parse('tests/data/swagger.yml')
63
+
64
+ urls = [x.url for x in specification.paths]
65
+
66
+ print(urls)
67
+
68
+ # Output
69
+ #
70
+ # >> ['/users', '/users/{uuid}']
71
+ ```
72
+
73
+ Get operation with supported HTTP methods
74
+
75
+ ```python
76
+ from openapi_parser import parse
77
+
78
+ specification = parse('tests/data/swagger.yml')
79
+
80
+ for path in specification.paths:
81
+ supported_methods = ','.join([x.method.value for x in path.operations])
82
+
83
+ print(f"Operation: {path.url}, methods: {supported_methods}")
84
+
85
+ # Output
86
+ #
87
+ # >> Operation: /users, methods: get,post
88
+ # >> Operation: /users/{uuid}, methods: get,put
89
+ ```
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: openapi3-parser
3
+ Version: 1.1.22
4
+ Summary: OpenAPI v3 parser
5
+ Author-email: Artem Manchenkov <artem@manchenkoff.me>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2020 Artyom Manchenkov
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: homepage, https://github.com/manchenkoff/openapi3-parser
29
+ Project-URL: source, https://github.com/manchenkoff/openapi3-parser
30
+ Keywords: swagger,python,swagger-parser,openapi3-parser,parser,openapi3,swagger-api
31
+ Classifier: Development Status :: 4 - Beta
32
+ Classifier: License :: OSI Approved :: MIT License
33
+ Classifier: Operating System :: OS Independent
34
+ Classifier: Intended Audience :: Developers
35
+ Classifier: Programming Language :: Python :: 3.9
36
+ Classifier: Topic :: Software Development :: Libraries
37
+ Requires-Python: >=3.9
38
+ Description-Content-Type: text/markdown
39
+ Requires-Dist: openapi-spec-validator>=0.7.2
40
+ Requires-Dist: prance>=23.6.21.0
41
+
42
+ # OpenAPI Parser
43
+
44
+ [![PyPI - Version](https://img.shields.io/pypi/v/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
45
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/openapi3-parser)](https://clickpy.clickhouse.com/dashboard/openapi3-parser)
46
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
47
+ [![PyPI - Format](https://img.shields.io/pypi/format/openapi3-parser)](https://pypi.org/project/openapi3-parser/)
48
+ [![PyPI - License](https://img.shields.io/pypi/l/openapi3-parser)](license.txt)
49
+
50
+ A simple package to parse your OpenAPI 3 documents into Python object to work with.
51
+
52
+ Supported versions:
53
+
54
+ | Version | Status |
55
+ | ------- | -------------- |
56
+ | 2.0 | Deprecated |
57
+ | 3.0 | **Supported** |
58
+ | 3.1 | In development |
59
+
60
+ ## How to install
61
+
62
+ To install package run the following command
63
+
64
+ ```
65
+ pip install openapi3-parser
66
+ ```
67
+
68
+ ## How to use
69
+
70
+ Example of parser usage
71
+
72
+ ```
73
+ >>> from openapi_parser import parse
74
+ >>> content = parse('swagger.yml')
75
+ >>> print(content)
76
+ ```
77
+
78
+ Get application servers
79
+
80
+ ```python
81
+ from openapi_parser import parse
82
+
83
+ specification = parse('data/swagger.yml')
84
+
85
+ print("Application servers")
86
+
87
+ for server in specification.servers:
88
+ print(f"{server.description} - {server.url}")
89
+
90
+ # Output
91
+ #
92
+ # >> Application servers
93
+ # >> production - https://users.app
94
+ # >> staging - http://stage.users.app
95
+ # >> development - http://users.local
96
+ ```
97
+
98
+ Get list of application URLs
99
+
100
+ ```python
101
+ from openapi_parser import parse
102
+
103
+ specification = parse('tests/data/swagger.yml')
104
+
105
+ urls = [x.url for x in specification.paths]
106
+
107
+ print(urls)
108
+
109
+ # Output
110
+ #
111
+ # >> ['/users', '/users/{uuid}']
112
+ ```
113
+
114
+ Get operation with supported HTTP methods
115
+
116
+ ```python
117
+ from openapi_parser import parse
118
+
119
+ specification = parse('tests/data/swagger.yml')
120
+
121
+ for path in specification.paths:
122
+ supported_methods = ','.join([x.method.value for x in path.operations])
123
+
124
+ print(f"Operation: {path.url}, methods: {supported_methods}")
125
+
126
+ # Output
127
+ #
128
+ # >> Operation: /users, methods: get,post
129
+ # >> Operation: /users/{uuid}, methods: get,put
130
+ ```
@@ -1,6 +1,6 @@
1
1
  license.txt
2
- setup.cfg
3
- setup.py
2
+ pyproject.toml
3
+ readme.md
4
4
  src/openapi3_parser.egg-info/PKG-INFO
5
5
  src/openapi3_parser.egg-info/SOURCES.txt
6
6
  src/openapi3_parser.egg-info/dependency_links.txt
@@ -0,0 +1,2 @@
1
+ openapi-spec-validator>=0.7.2
2
+ prance>=23.6.21.0
@@ -0,0 +1,3 @@
1
+ from .parser import parse
2
+
3
+ __all__ = ["parse"]
@@ -0,0 +1,149 @@
1
+ from enum import Enum, unique
2
+
3
+
4
+ @unique
5
+ class DataType(Enum):
6
+ NULL = "null"
7
+ INTEGER = "integer"
8
+ NUMBER = "number"
9
+ STRING = "string"
10
+ BOOLEAN = "boolean"
11
+ ARRAY = "array"
12
+ OBJECT = "object"
13
+ ONE_OF = "oneOf"
14
+ ANY_OF = "anyOf"
15
+
16
+
17
+ @unique
18
+ class IntegerFormat(Enum):
19
+ INT32 = "int32"
20
+ INT64 = "int64"
21
+
22
+
23
+ @unique
24
+ class NumberFormat(Enum):
25
+ FLOAT = "float"
26
+ DOUBLE = "double"
27
+
28
+
29
+ @unique
30
+ class StringFormat(Enum):
31
+ BYTE = "byte"
32
+ BINARY = "binary"
33
+ DATE = "date"
34
+ DATETIME = "date-time"
35
+ PASSWORD = "password"
36
+ UUID = "uuid"
37
+ UUID4 = "uuid4"
38
+ EMAIL = "email"
39
+ URI = "uri"
40
+ HOSTNAME = "hostname"
41
+ IPV4 = "ipv4"
42
+ IPV6 = "ipv6"
43
+ URL = "url"
44
+ TIME = "time"
45
+
46
+
47
+ @unique
48
+ class OperationMethod(Enum):
49
+ GET = "get"
50
+ PUT = "put"
51
+ POST = "post"
52
+ DELETE = "delete"
53
+ OPTIONS = "options"
54
+ HEAD = "head"
55
+ PATCH = "patch"
56
+ TRACE = "trace"
57
+
58
+
59
+ @unique
60
+ class BaseLocation(Enum):
61
+ HEADER = "header"
62
+ QUERY = "query"
63
+ COOKIE = "cookie"
64
+
65
+
66
+ @unique
67
+ class ParameterLocation(Enum):
68
+ HEADER = "header"
69
+ QUERY = "query"
70
+ COOKIE = "cookie"
71
+ PATH = "path"
72
+
73
+
74
+ @unique
75
+ class PathParameterStyle(Enum):
76
+ SIMPLE = "simple"
77
+ LABEL = "label"
78
+ MATRIX = "matrix"
79
+
80
+
81
+ @unique
82
+ class QueryParameterStyle(Enum):
83
+ FORM = "form"
84
+ SPACE_DELIMITED = "spaceDelimited"
85
+ PIPE_DELIMITED = "pipeDelimited"
86
+ DEEP_OBJECT = "deepObject"
87
+
88
+
89
+ @unique
90
+ class HeaderParameterStyle(Enum):
91
+ SIMPLE = "simple"
92
+
93
+
94
+ @unique
95
+ class CookieParameterStyle(Enum):
96
+ FORM = "form"
97
+
98
+
99
+ @unique
100
+ class ContentType(Enum):
101
+ JSON = "application/json"
102
+ JSON_TEXT = "text/json"
103
+ JSON_ANY = "application/*+json"
104
+ JSON_PROBLEM = "application/problem+json"
105
+ XML = "application/xml"
106
+ FORM = "application/x-www-form-urlencoded"
107
+ MULTIPART_FORM = "multipart/form-data"
108
+ PLAIN_TEXT = "text/plain"
109
+ HTML = "text/html"
110
+ PDF = "application/pdf"
111
+ PNG = "image/png"
112
+ JPEG = "image/jpeg"
113
+ GIF = "image/gif"
114
+ SVG = "image/svg+xml"
115
+ AVIF = "image/avif"
116
+ BMP = "image/bmp"
117
+ WEBP = "image/webp"
118
+ Image = "image/*"
119
+ BINARY = "application/octet-stream"
120
+
121
+
122
+ @unique
123
+ class SecurityType(Enum):
124
+ API_KEY = "apiKey"
125
+ HTTP = "http"
126
+ OAUTH2 = "oauth2"
127
+ OPEN_ID_CONNECT = "openIdConnect"
128
+
129
+
130
+ @unique
131
+ class AuthenticationScheme(Enum):
132
+ BASIC = "basic"
133
+ BEARER = "bearer"
134
+ DIGEST = "digest"
135
+ HOBA = "hoba"
136
+ MUTUAL = "mutual"
137
+ NEGOTIATE = "negotiate"
138
+ OAUTH = "oauth"
139
+ SCRAM_SHA1 = "scram-sha-1"
140
+ SCRAM_SHA256 = "scram-sha-256"
141
+ VAPID = "vapid"
142
+
143
+
144
+ @unique
145
+ class OAuthFlowType(Enum):
146
+ IMPLICIT = "implicit"
147
+ PASSWORD = "password"
148
+ CLIENT_CREDENTIALS = "clientCredentials"
149
+ AUTHORIZATION_CODE = "authorizationCode"
@@ -12,7 +12,7 @@ data_type_provider = (
12
12
  )
13
13
 
14
14
 
15
- @pytest.mark.parametrize(['string_value', 'expected'], data_type_provider)
15
+ @pytest.mark.parametrize(["string_value", "expected"], data_type_provider)
16
16
  def test_data_type(string_value: str, expected: DataType) -> None:
17
17
  assert DataType(string_value) == expected
18
18
 
@@ -28,7 +28,7 @@ integer_format_provider = (
28
28
  )
29
29
 
30
30
 
31
- @pytest.mark.parametrize(['string_value', 'expected'], integer_format_provider)
31
+ @pytest.mark.parametrize(["string_value", "expected"], integer_format_provider)
32
32
  def test_integer_format(string_value: str, expected: IntegerFormat) -> None:
33
33
  assert IntegerFormat(string_value) == expected
34
34
 
@@ -44,7 +44,7 @@ number_format_provider = (
44
44
  )
45
45
 
46
46
 
47
- @pytest.mark.parametrize(['string_value', 'expected'], number_format_provider)
47
+ @pytest.mark.parametrize(["string_value", "expected"], number_format_provider)
48
48
  def test_number_format(string_value: str, expected: NumberFormat) -> None:
49
49
  assert NumberFormat(string_value) == expected
50
50
 
@@ -67,10 +67,11 @@ string_format_provider = (
67
67
  ("ipv4", StringFormat.IPV4),
68
68
  ("ipv6", StringFormat.IPV6),
69
69
  ("url", StringFormat.URL),
70
+ ("time", StringFormat.TIME),
70
71
  )
71
72
 
72
73
 
73
- @pytest.mark.parametrize(['string_value', 'expected'], string_format_provider)
74
+ @pytest.mark.parametrize(["string_value", "expected"], string_format_provider)
74
75
  def test_string_format(string_value: str, expected: StringFormat) -> None:
75
76
  assert StringFormat(string_value) == expected
76
77
 
@@ -92,7 +93,7 @@ operation_method_provider = (
92
93
  )
93
94
 
94
95
 
95
- @pytest.mark.parametrize(['string_value', 'expected'], operation_method_provider)
96
+ @pytest.mark.parametrize(["string_value", "expected"], operation_method_provider)
96
97
  def test_operation_method(string_value: str, expected: OperationMethod) -> None:
97
98
  assert OperationMethod(string_value) == expected
98
99
 
@@ -109,7 +110,7 @@ base_location_provider = (
109
110
  )
110
111
 
111
112
 
112
- @pytest.mark.parametrize(['string_value', 'expected'], base_location_provider)
113
+ @pytest.mark.parametrize(["string_value", "expected"], base_location_provider)
113
114
  def test_base_location(string_value: str, expected: BaseLocation) -> None:
114
115
  assert BaseLocation(string_value) == expected
115
116
 
@@ -127,7 +128,7 @@ parameter_location_provider = (
127
128
  )
128
129
 
129
130
 
130
- @pytest.mark.parametrize(['string_value', 'expected'], parameter_location_provider)
131
+ @pytest.mark.parametrize(["string_value", "expected"], parameter_location_provider)
131
132
  def test_parameter_location(string_value: str, expected: ParameterLocation) -> None:
132
133
  assert ParameterLocation(string_value) == expected
133
134
 
@@ -160,7 +161,7 @@ media_type_provider = (
160
161
  )
161
162
 
162
163
 
163
- @pytest.mark.parametrize(['string_value', 'expected'], media_type_provider)
164
+ @pytest.mark.parametrize(["string_value", "expected"], media_type_provider)
164
165
  def test_media_type(string_value: str, expected: ContentType) -> None:
165
166
  assert ContentType(string_value) == expected
166
167
 
@@ -178,7 +179,7 @@ security_type_provider = (
178
179
  )
179
180
 
180
181
 
181
- @pytest.mark.parametrize(['string_value', 'expected'], security_type_provider)
182
+ @pytest.mark.parametrize(["string_value", "expected"], security_type_provider)
182
183
  def test_security_type(string_value: str, expected: SecurityType) -> None:
183
184
  assert SecurityType(string_value) == expected
184
185
 
@@ -202,7 +203,7 @@ auth_schema_provider = (
202
203
  )
203
204
 
204
205
 
205
- @pytest.mark.parametrize(['string_value', 'expected'], auth_schema_provider)
206
+ @pytest.mark.parametrize(["string_value", "expected"], auth_schema_provider)
206
207
  def test_auth_schema(string_value: str, expected: AuthenticationScheme) -> None:
207
208
  assert AuthenticationScheme(string_value) == expected
208
209
 
@@ -220,7 +221,7 @@ auth_flow_provider = (
220
221
  )
221
222
 
222
223
 
223
- @pytest.mark.parametrize(['string_value', 'expected'], auth_flow_provider)
224
+ @pytest.mark.parametrize(["string_value", "expected"], auth_flow_provider)
224
225
  def test_auth_flow(string_value: str, expected: OAuthFlowType) -> None:
225
226
  assert OAuthFlowType(string_value) == expected
226
227
 
@@ -1,29 +0,0 @@
1
- Metadata-Version: 2.2
2
- Name: openapi3-parser
3
- Version: 1.1.20
4
- Summary: OpenAPI v3 parser
5
- Home-page: https://github.com/manchenkoff/openapi3-parser
6
- Author: Artem Manchenkov
7
- Author-email: artem@manchenkoff.me
8
- License: MIT
9
- Project-URL: Source, https://github.com/manchenkoff/openapi3-parser
10
- Keywords: swagger,python,swagger-parser,openapi3-parser,parser,openapi3,swagger-api
11
- Classifier: Development Status :: 4 - Beta
12
- Classifier: License :: OSI Approved :: MIT License
13
- Classifier: Operating System :: OS Independent
14
- Classifier: Intended Audience :: Developers
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Topic :: Software Development :: Libraries
17
- Description-Content-Type: text/markdown
18
- License-File: license.txt
19
- Requires-Dist: prance>=0.20.2
20
- Requires-Dist: openapi-spec-validator==0.6.0
21
- Dynamic: author
22
- Dynamic: author-email
23
- Dynamic: classifier
24
- Dynamic: home-page
25
- Dynamic: keywords
26
- Dynamic: license
27
- Dynamic: project-url
28
- Dynamic: requires-dist
29
- Dynamic: summary
@@ -1,29 +0,0 @@
1
- [metadata]
2
- license_files = license.txt
3
- long_description = file: README.md
4
- long_description_content_type = text/markdown
5
-
6
- [mypy]
7
- python_version = 3.9
8
- check_untyped_defs = True
9
- follow_imports = silent
10
- no_implicit_reexport = True
11
- no_implicit_optional = True
12
- strict_optional = True
13
- strict_equality = True
14
- ignore_missing_imports = True
15
- ignore_errors = False
16
- disallow_any_generics = False
17
- disallow_untyped_defs = True
18
- disallow_untyped_calls = True
19
- disallow_untyped_decorators = True
20
- warn_redundant_casts = True
21
- warn_unused_ignores = True
22
- warn_unused_configs = True
23
- warn_unreachable = True
24
- warn_no_return = True
25
-
26
- [egg_info]
27
- tag_build =
28
- tag_date = 0
29
-
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- from setuptools import find_packages, setup
4
-
5
- from src import openapi_parser
6
-
7
- setup(
8
- name=openapi_parser.__title__,
9
- author=openapi_parser.__author__,
10
- author_email=openapi_parser.__email__,
11
- url="https://github.com/manchenkoff/openapi3-parser",
12
- project_urls={
13
- "Source": "https://github.com/manchenkoff/openapi3-parser",
14
- },
15
- version=openapi_parser.__version__,
16
- packages=find_packages(where='src'),
17
- package_dir={'': 'src'},
18
- package_data={"openapi_parser": ["py.typed"]},
19
- license="MIT",
20
- description=openapi_parser.__description__,
21
- keywords="swagger, python, swagger-parser, openapi3-parser, parser, openapi3, swagger-api",
22
- classifiers=[
23
- 'Development Status :: 4 - Beta',
24
- 'License :: OSI Approved :: MIT License',
25
- 'Operating System :: OS Independent',
26
- 'Intended Audience :: Developers',
27
- 'Programming Language :: Python :: 3.9',
28
- 'Topic :: Software Development :: Libraries',
29
- ],
30
- install_requires=[
31
- "prance>=0.20.2",
32
- "openapi-spec-validator==0.6.0",
33
- ],
34
- )
@@ -1,29 +0,0 @@
1
- Metadata-Version: 2.2
2
- Name: openapi3-parser
3
- Version: 1.1.20
4
- Summary: OpenAPI v3 parser
5
- Home-page: https://github.com/manchenkoff/openapi3-parser
6
- Author: Artem Manchenkov
7
- Author-email: artem@manchenkoff.me
8
- License: MIT
9
- Project-URL: Source, https://github.com/manchenkoff/openapi3-parser
10
- Keywords: swagger,python,swagger-parser,openapi3-parser,parser,openapi3,swagger-api
11
- Classifier: Development Status :: 4 - Beta
12
- Classifier: License :: OSI Approved :: MIT License
13
- Classifier: Operating System :: OS Independent
14
- Classifier: Intended Audience :: Developers
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Topic :: Software Development :: Libraries
17
- Description-Content-Type: text/markdown
18
- License-File: license.txt
19
- Requires-Dist: prance>=0.20.2
20
- Requires-Dist: openapi-spec-validator==0.6.0
21
- Dynamic: author
22
- Dynamic: author-email
23
- Dynamic: classifier
24
- Dynamic: home-page
25
- Dynamic: keywords
26
- Dynamic: license
27
- Dynamic: project-url
28
- Dynamic: requires-dist
29
- Dynamic: summary
@@ -1,2 +0,0 @@
1
- prance>=0.20.2
2
- openapi-spec-validator==0.6.0
@@ -1,11 +0,0 @@
1
- __version__ = '1.1.20'
2
- __title__ = 'openapi3-parser'
3
- __author__ = 'Artem Manchenkov'
4
- __email__ = 'artem@manchenkoff.me'
5
- __description__ = 'OpenAPI v3 parser'
6
-
7
- from .parser import parse
8
-
9
- __all__ = [
10
- "parse"
11
- ]
@@ -1,148 +0,0 @@
1
- from enum import Enum, unique
2
-
3
-
4
- @unique
5
- class DataType(Enum):
6
- NULL = 'null'
7
- INTEGER = 'integer'
8
- NUMBER = 'number'
9
- STRING = 'string'
10
- BOOLEAN = 'boolean'
11
- ARRAY = 'array'
12
- OBJECT = 'object'
13
- ONE_OF = 'oneOf'
14
- ANY_OF = 'anyOf'
15
-
16
-
17
- @unique
18
- class IntegerFormat(Enum):
19
- INT32 = 'int32'
20
- INT64 = 'int64'
21
-
22
-
23
- @unique
24
- class NumberFormat(Enum):
25
- FLOAT = 'float'
26
- DOUBLE = 'double'
27
-
28
-
29
- @unique
30
- class StringFormat(Enum):
31
- BYTE = 'byte'
32
- BINARY = 'binary'
33
- DATE = 'date'
34
- DATETIME = 'date-time'
35
- PASSWORD = 'password'
36
- UUID = 'uuid'
37
- UUID4 = 'uuid4'
38
- EMAIL = 'email'
39
- URI = 'uri'
40
- HOSTNAME = 'hostname'
41
- IPV4 = 'ipv4'
42
- IPV6 = 'ipv6'
43
- URL = 'url'
44
-
45
-
46
- @unique
47
- class OperationMethod(Enum):
48
- GET = 'get'
49
- PUT = 'put'
50
- POST = 'post'
51
- DELETE = 'delete'
52
- OPTIONS = 'options'
53
- HEAD = 'head'
54
- PATCH = 'patch'
55
- TRACE = 'trace'
56
-
57
-
58
- @unique
59
- class BaseLocation(Enum):
60
- HEADER = 'header'
61
- QUERY = 'query'
62
- COOKIE = 'cookie'
63
-
64
-
65
- @unique
66
- class ParameterLocation(Enum):
67
- HEADER = 'header'
68
- QUERY = 'query'
69
- COOKIE = 'cookie'
70
- PATH = 'path'
71
-
72
-
73
- @unique
74
- class PathParameterStyle(Enum):
75
- SIMPLE = 'simple'
76
- LABEL = 'label'
77
- MATRIX = 'matrix'
78
-
79
-
80
- @unique
81
- class QueryParameterStyle(Enum):
82
- FORM = 'form'
83
- SPACE_DELIMITED = 'spaceDelimited'
84
- PIPE_DELIMITED = 'pipeDelimited'
85
- DEEP_OBJECT = 'deepObject'
86
-
87
-
88
- @unique
89
- class HeaderParameterStyle(Enum):
90
- SIMPLE = 'simple'
91
-
92
-
93
- @unique
94
- class CookieParameterStyle(Enum):
95
- FORM = 'form'
96
-
97
-
98
- @unique
99
- class ContentType(Enum):
100
- JSON = 'application/json'
101
- JSON_TEXT = 'text/json'
102
- JSON_ANY = 'application/*+json'
103
- JSON_PROBLEM = 'application/problem+json'
104
- XML = 'application/xml'
105
- FORM = 'application/x-www-form-urlencoded'
106
- MULTIPART_FORM = 'multipart/form-data'
107
- PLAIN_TEXT = 'text/plain'
108
- HTML = 'text/html'
109
- PDF = 'application/pdf'
110
- PNG = 'image/png'
111
- JPEG = 'image/jpeg'
112
- GIF = 'image/gif'
113
- SVG = 'image/svg+xml'
114
- AVIF = 'image/avif'
115
- BMP = 'image/bmp'
116
- WEBP = 'image/webp'
117
- Image = 'image/*'
118
- BINARY = 'application/octet-stream'
119
-
120
-
121
- @unique
122
- class SecurityType(Enum):
123
- API_KEY = 'apiKey'
124
- HTTP = 'http'
125
- OAUTH2 = 'oauth2'
126
- OPEN_ID_CONNECT = 'openIdConnect'
127
-
128
-
129
- @unique
130
- class AuthenticationScheme(Enum):
131
- BASIC = 'basic'
132
- BEARER = 'bearer'
133
- DIGEST = 'digest'
134
- HOBA = 'hoba'
135
- MUTUAL = 'mutual'
136
- NEGOTIATE = 'negotiate'
137
- OAUTH = 'oauth'
138
- SCRAM_SHA1 = 'scram-sha-1'
139
- SCRAM_SHA256 = 'scram-sha-256'
140
- VAPID = 'vapid'
141
-
142
-
143
- @unique
144
- class OAuthFlowType(Enum):
145
- IMPLICIT = 'implicit'
146
- PASSWORD = 'password'
147
- CLIENT_CREDENTIALS = 'clientCredentials'
148
- AUTHORIZATION_CODE = 'authorizationCode'