8000 Merge pull request #676 from python-openapi/fix/parameter-deserialize… · python-openapi/openapi-core@0da2a38 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0da2a38

Browse files
authored
Merge pull request #676 from python-openapi/fix/parameter-deserializer-renamed-into-style-deserializer
Parameter deserializers renamed Style deserializers
2 parents cbbe084 + cf3d356 commit 0da2a38

File tree

14 files changed

+78
-88
lines changed

14 files changed

+78
-88
lines changed

openapi_core/deserializing/parameters/__init__.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

openapi_core/deserializing/parameters/factories.py

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from openapi_core.deserializing.styles.factories import (
2+
StyleDeserializersFactory,
3+
)
4+
5+
__all__ = ["style_deserializers_factory"]
6+
7+
style_deserializers_factory = StyleDeserializersFactory()

openapi_core/deserializing/parameters/deserializers.py renamed to openapi_core/deserializing/styles/deserializers.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,16 @@
55
from typing import Optional
66

77
from openapi_core.deserializing.exceptions import DeserializeError
8-
from openapi_core.deserializing.parameters.datatypes import (
9-
DeserializerCallable,
10-
)
11-
from openapi_core.deserializing.parameters.exceptions import (
8+
from openapi_core.deserializing.styles.datatypes import DeserializerCallable
9+
from openapi_core.deserializing.styles.exceptions import (
1210
EmptyQueryParameterValue,
1311
)
1412
from openapi_core.schema.parameters import get_aslist
1513
from openapi_core.schema.parameters import get_explode
1614
from openapi_core.spec import Spec
1715

1816

19-
class CallableParameterDeserializer:
17+
class CallableStyleDeserializer:
2018
def __init__(
2119
self,
2220
param_or_header: Spec,

openapi_core/deserializing/parameters/exceptions.py renamed to openapi_core/deserializing/styles/exceptions.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55

66
@dataclass
7-
class BaseParameterDeserializeError(DeserializeError):
8-
"""Base parameter deserialize operation error"""
7+
class BaseStyleDeserializeError(DeserializeError):
8+
"""Base style deserialize operation error"""
99

1010
location: str
1111

1212

1313
@dataclass
14-
class ParameterDeserializeError(BaseParameterDeserializeError):
14+
class ParameterDeserializeError(BaseStyleDeserializeError):
1515
"""Parameter deserialize operation error"""
1616

1717
style: str
@@ -25,7 +25,7 @@ def __str__(self) -> str:
2525

2626

2727
@dataclass(init=False)
28-
class EmptyQueryParameterValue(BaseParameterDeserializeError):
28+
class EmptyQueryParameterValue(BaseStyleDeserializeError):
2929
name: str
3030

3131
def __init__(self, name: str):
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import re
2+
from functools import partial
3+
from typing import Dict
4+
5+
from openapi_core.deserializing.styles.datatypes import DeserializerCallable
6+
from openapi_core.deserializing.styles.deserializers import (
7+
CallableStyleDeserializer,
8+
)
9+
from openapi_core.deserializing.styles.util import split
10+
from openapi_core.schema.parameters import get_style
11+
from openapi_core.spec import Spec
12+
13+
14+
class StyleDeserializersFactory:
15+
STYLE_DESERIALIZERS: Dict[str, DeserializerCallable] = {
16+
"form": partial(split, separator=","),
17+
"simple": partial(split, separator=","),
18+
"spaceDelimited": partial(split, separator=" "),
19+
"pipeDelimited": partial(split, separator="|"),
20+
"deepObject": partial(re.split, pattern=r"\[|\]"),
21+
}
22+
23+
def create(self, param_or_header: Spec) -> CallableStyleDeserializer:
24+
style = get_style(param_or_header)
25+
26+
deserialize_callable = self.STYLE_DESERIALIZERS.get(style)
27+
return CallableStyleDeserializer(
28< 10000 /td>+
param_or_header, style, deserialize_callable
29+
)

openapi_core/unmarshalling/request/unmarshallers.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@
1111
from openapi_core.deserializing.media_types.factories import (
1212
MediaTypeDeserializersFactory,
1313
)
14-
from openapi_core.deserializing.parameters import (
15-
parameter_deserializers_factory,
16-
)
17-
from openapi_core.deserializing.parameters.factories import (
18-
ParameterDeserializersFactory,
14+
from openapi_core.deserializing.styles import style_deserializers_factory
15+
from openapi_core.deserializing.styles.factories import (
16+
StyleDeserializersFactory,
1917
)
2018
from openapi_core.protocols import BaseRequest
2119
from openapi_core.protocols import Request
@@ -86,7 +84,7 @@ def __init__(
8684
spec: Spec,
8785
base_url: Optional[str] = None,
8886
schema_casters_factory: SchemaCastersFactory = schema_casters_factory,
89-
parameter_deserializers_factory: ParameterDeserializersFactory = parameter_deserializers_factory,
87+
style_deserializers_factory: StyleDeserializersFactory = style_deserializers_factory,
9088
media_type_deserializers_factory: MediaTypeDeserializersFactory = media_type_deserializers_factory,
9189
schema_validators_factory: Optional[SchemaValidatorsFactory] = None,
9290
format_validators: Optional[FormatValidatorsDict] = None,
@@ -106,7 +104,7 @@ def __init__(
106104
spec,
107105
base_url=base_url,
108106
schema_casters_factory=schema_casters_factory,
109-
parameter_deserializers_factory=parameter_deserializers_factory,
107+
style_deserializers_factory=style_deserializers_factory,
110108
media_type_deserializers_factory=media_type_deserializers_factory,
111109
schema_validators_factory=schema_validators_factory,
112110
format_validators=format_validators,
@@ -121,7 +119,7 @@ def __init__(
121119
spec,
122120
base_url=base_url,
123121
schema_casters_factory=schema_casters_factory,
124-
parameter_deserializers_factory=parameter_deserializers_factory,
122+
style_deserializers_factory=style_deserializers_factory,
125123
media_type_deserializers_factory=media_type_deserializers_factory,
126124
schema_validators_factory=schema_validators_factory,
127125
format_validators=format_validators,

openapi_core/unmarshalling/unmarshallers.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,9 @@
1414
from openapi_core.deserializing.media_types.factories import (
1515
MediaTypeDeserializersFactory,
1616
)
17-
from openapi_core.deserializing.parameters import (
18-
parameter_deserializers_factory,
19-
)
20-
from openapi_core.deserializing.parameters.factories import (
21-
ParameterDeserializersFactory,
17+
from openapi_core.deserializing.styles import style_deserializers_factory
18+
from openapi_core.deserializing.styles.factories import (
19+
StyleDeserializersFactory,
2220
)
2321
from openapi_core.spec import Spec
2422
from openapi_core.unmarshalling.schemas.datatypes import (
@@ -40,7 +38,7 @@ def __init__(
4038
spec: Spec,
4139
base_url: Optional[str] = None,
4240
schema_casters_factory: SchemaCastersFactory = schema_casters_factory,
43-
parameter_deserializers_factory: ParameterDeserializersFactory = parameter_deserializers_factory,
41+
style_deserializers_factory: StyleDeserializersFactory = style_deserializers_factory,
4442
media_type_deserializers_factory: MediaTypeDeserializersFactory = media_type_deserializers_factory,
4543
schema_validators_factory: Optional[SchemaValidatorsFactory] = None,
4644
format_validators: Optional[FormatValidatorsDict] = None,
@@ -62,7 +60,7 @@ def __init__(
6260
spec,
6361
base_url=base_url,
6462
schema_casters_factory=schema_casters_factory,
65-
parameter_deserializers_factory=parameter_deserializers_factory,
63+
style_deserializers_factory=style_deserializers_factory,
6664
media_type_deserializers_factory=media_type_deserializers_factory,
6765
schema_validators_factory=schema_validators_factory,
6866
format_validators=format_validators,

0 commit comments

Comments
 (0)
0