Skip to content

Commit 92fe9e1

Browse files
committed
feat: added support for 'content' field in parameters
1 parent c360e47 commit 92fe9e1

29 files changed

+1218
-710
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ clean: ## Remove build files
2323
@echo "Temporary files were clear"
2424

2525
test: ## Run code tests
26-
@pipenv run python -m pytest -q
26+
@pipenv run python -m pytest -qv
2727

2828
sync: ## Sync with Pipfile packages list
2929
@pipenv sync

Pipfile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ url = "https://pypi.org/simple"
44
verify_ssl = true
55

66
[dev-packages]
7-
twine = ">=3.3.0"
8-
wheel = ">=0.35.1"
9-
mypy = ">=0.800"
10-
pytest = ">=6.2.2"
11-
build = "*"
7+
twine = ">=4.0.2"
8+
wheel = ">=0.45.1"
9+
build = ">=1.0.3"
10+
mypy = ">=1.15.0"
11+
pytest = ">=8.3.5"
1212

1313
[packages]
14-
prance = ">=0.20.2"
15-
openapi-spec-validator = "==0.6.0"
14+
openapi-spec-validator = ">=0.7.1"
15+
prance = ">=23.6.21.0"
1616

1717
[requires]
1818
python_version = "3.9"

Pipfile.lock

Lines changed: 1007 additions & 623 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +0,0 @@
1-
from .info import InfoBuilder
2-
from .server import ServerBuilder
3-
from .tag import TagBuilder
4-
from .external_doc import ExternalDocBuilder
5-
from .schema import SchemaFactory
6-
from .parameter import ParameterBuilder
7-
from .header import HeaderBuilder
8-
from .content import ContentBuilder
9-
from .request import RequestBuilder
10-
from .response import ResponseBuilder
11-
from .operation import OperationBuilder
12-
from .path import PathBuilder
13-
from .oauth_flow import OAuthFlowBuilder
14-
from .security import SecurityBuilder
15-
from .schemas import SchemasBuilder
16-
17-
__all__ = [
18-
"InfoBuilder",
19-
"ServerBuilder",
20-
"TagBuilder",
21-
"ExternalDocBuilder",
22-
"SchemaFactory",
23-
"ParameterBuilder",
24-
"HeaderBuilder",
25-
"ContentBuilder",
26-
"RequestBuilder",
27-
"ResponseBuilder",
28-
"OperationBuilder",
29-
"PathBuilder",
30-
"OAuthFlowBuilder",
31-
"SecurityBuilder",
32-
"SchemasBuilder",
33-
]

src/openapi_parser/builders/content.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import logging
22
from typing import Type, Union, Any
33

4-
from . import SchemaFactory
4+
from .schema import SchemaFactory
55
from ..enumeration import ContentType
6-
from ..specification import Content
76
from ..loose_types import LooseContentType
7+
from ..specification import Content
88

99
logger = logging.getLogger(__name__)
1010

src/openapi_parser/builders/header.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

3-
from . import SchemaFactory
43
from .common import extract_typed_props, PropertyMeta, extract_extension_attributes
4+
from .schema import SchemaFactory
55
from ..specification import Header
66

77
logger = logging.getLogger(__name__)

src/openapi_parser/builders/operation.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import logging
22
from typing import Dict
33

4-
from . import ExternalDocBuilder, ParameterBuilder, RequestBuilder, ResponseBuilder
54
from .common import extract_typed_props, PropertyMeta, extract_extension_attributes
5+
from .external_doc import ExternalDocBuilder
6+
from .parameter import ParameterBuilder
7+
from .request import RequestBuilder
8+
from .response import ResponseBuilder
69
from ..enumeration import OperationMethod
710
from ..specification import Operation, Response
811

src/openapi_parser/builders/parameter.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import logging
22
from typing import List
33

4-
from . import SchemaFactory
54
from .common import extract_typed_props, PropertyMeta, extract_extension_attributes
5+
from .content import ContentBuilder
6+
from .schema import SchemaFactory
67
from ..enumeration import ParameterLocation, HeaderParameterStyle, PathParameterStyle, QueryParameterStyle, \
78
CookieParameterStyle
89
from ..specification import Parameter
@@ -26,9 +27,11 @@
2627

2728
class ParameterBuilder:
2829
schema_factory: SchemaFactory
30+
content_builder: ContentBuilder
2931

30-
def __init__(self, schema_factory: SchemaFactory) -> None:
32+
def __init__(self, schema_factory: SchemaFactory, content_builder: ContentBuilder) -> None:
3133
self.schema_factory = schema_factory
34+
self.content_builder = content_builder
3235

3336
def build_list(self, parameters: List[dict]) -> list[Parameter]:
3437
return [self.build(parameter) for parameter in parameters]
@@ -41,6 +44,7 @@ def build(self, data: dict) -> Parameter:
4144
"location": PropertyMeta(name="in", cast=ParameterLocation),
4245
"required": PropertyMeta(name="required", cast=None),
4346
"schema": PropertyMeta(name="schema", cast=self.schema_factory.create),
47+
"content": PropertyMeta(name="content", cast=self.content_builder.build_list),
4448
"description": PropertyMeta(name="description", cast=str),
4549
"deprecated": PropertyMeta(name="deprecated", cast=None),
4650
"explode": PropertyMeta(name="explode", cast=None),

src/openapi_parser/builders/path.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import logging
22
from typing import Dict
33

4-
from . import OperationBuilder, ParameterBuilder
54
from .common import extract_typed_props, PropertyMeta, extract_extension_attributes
5+
from .operation import OperationBuilder
6+
from .parameter import ParameterBuilder
67
from ..enumeration import OperationMethod
78
from ..specification import Path
89

src/openapi_parser/builders/request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

3-
from . import ContentBuilder
43
from .common import extract_typed_props, PropertyMeta
4+
from .content import ContentBuilder
55
from ..specification import RequestBody
66

77
logger = logging.getLogger(__name__)

0 commit comments

Comments
 (0)