Skip to content

Commit

Permalink
Issue #285
Browse files Browse the repository at this point in the history
  • Loading branch information
loyada committed Apr 7, 2024
1 parent 21ad653 commit ff5d1cd
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 6 deletions.
7 changes: 7 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@ def fixture_compact_serialization():
Structure.set_compact_serialization_default(False)


@pytest.fixture(name="compact_deserialization")
def fixture_compact_deserialization():
Structure.set_compact_deserialization_default(True)
yield
Structure.set_compact_deserialization_default(False)


@pytest.fixture(name="auto_conversion_of_enums")
def fixture_auto_conversion_of_enums():
Structure.set_auto_enum_conversion(True)
Expand Down
10 changes: 5 additions & 5 deletions tests/test_deserialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ class Foo(Structure):
)


def test_single_int_deserialization(compact_serialization):
def test_single_int_deserialization(compact_deserialization):
class Foo(Structure):
i = Integer
_additionalProperties = False
Expand All @@ -460,7 +460,7 @@ class Foo(Structure):
assert example.i == 5


def test_single_int_deserialization1(compact_serialization):
def test_single_int_deserialization1(compact_deserialization):
class Foo(Structure):
i = Integer
_additional_properties = False
Expand All @@ -471,7 +471,7 @@ class Foo(Structure):
assert example.i == 5


def test_single_array_deserialization(compact_serialization):
def test_single_array_deserialization(compact_deserialization):
class Foo(Structure):
arr = Array[String]
_additionalProperties = False
Expand Down Expand Up @@ -1512,7 +1512,7 @@ class Foo(Structure):
assert Deserializer(Foo).deserialize({"c": 1, "a": 2}) == Foo(a=2)


def test_additional_properties_turned_off_input_is_not_dict(additional_props_default_is_false, compact_serialization):
def test_additional_properties_turned_off_input_is_not_dict(additional_props_default_is_false, compact_deserialization):
class Foo(Structure):
a: list[int]

Expand Down Expand Up @@ -1551,7 +1551,7 @@ class Foo(Structure):


@mark.skipif(sys.version_info < (3, 9), reason="requires python3.9 or higher")
def test_smart_compact_deserialization_is_turned_on(compact_serialization):
def test_smart_compact_deserialization_is_turned_on(compact_deserialization):
class Foo(Structure):
a: list[int]
_additional_properties = False
Expand Down
2 changes: 1 addition & 1 deletion typedpy/serialization/serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -816,7 +816,7 @@ class reference field. Users are not supposed to use this argument.
len(fields) == 1
and required == fields
and additional_props is False
and TypedPyDefaults.compact_serialization_default
and TypedPyDefaults.compact_deserialization_default
):
field_name = fields[0]
return cls(
Expand Down
1 change: 1 addition & 0 deletions typedpy/structures/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ class TypedPyDefaults:
additional_properties_default: bool = True
ignore_invalid_additional_properties_in_deserialization: bool = True
compact_serialization_default: bool = False
compact_deserialization_default: bool = False
automatic_enum_conversion: bool = True
support_json_schema_v6: bool = False
uniqueness_features_enabled: bool = False
Expand Down
4 changes: 4 additions & 0 deletions typedpy/structures/structures.py
Original file line number Diff line number Diff line change
Expand Up @@ -1614,6 +1614,10 @@ def set_additional_properties_default(additional_props: bool = True):
def set_compact_serialization_default(compact_serialization_default: bool = False):
TypedPyDefaults.compact_serialization_default = compact_serialization_default

@staticmethod
def set_compact_deserialization_default(compact_deserialization_default: bool = False):
TypedPyDefaults.compact_deserialization_default = compact_deserialization_default

@staticmethod
def set_auto_enum_conversion(flag: bool = True):
TypedPyDefaults.automatic_enum_conversion = flag
Expand Down

0 comments on commit ff5d1cd

Please sign in to comment.