From c831d5774901414543a92b8ef9312aee834d006d Mon Sep 17 00:00:00 2001 From: konradhalas Date: Tue, 10 Jan 2023 15:47:00 +0100 Subject: [PATCH] Inline create_instance function --- dacite/core.py | 7 ++++--- dacite/dataclasses.py | 8 -------- tests/test_dataclasses.py | 24 +----------------------- 3 files changed, 5 insertions(+), 34 deletions(-) diff --git a/dacite/core.py b/dacite/core.py index 3060996..9e45129 100644 --- a/dacite/core.py +++ b/dacite/core.py @@ -7,7 +7,6 @@ from dacite.data import Data from dacite.dataclasses import ( get_default_value_for_field, - create_instance, DefaultValueNotFoundError, get_fields, is_frozen, @@ -79,8 +78,10 @@ def from_dict(data_class: Type[T], data: Data, config: Optional[Config] = None) init_values[field.name] = value elif not is_frozen(data_class): post_init_values[field.name] = value - - return create_instance(data_class=data_class, init_values=init_values, post_init_values=post_init_values) + instance = data_class(**init_values) + for key, value in post_init_values.items(): + setattr(instance, key, value) + return instance def _build_value(type_: Type, data: Any, config: Config) -> Any: diff --git a/dacite/dataclasses.py b/dacite/dataclasses.py index de9ae69..d70f423 100644 --- a/dacite/dataclasses.py +++ b/dacite/dataclasses.py @@ -2,7 +2,6 @@ from typing import Type, Any, TypeVar, List from dacite.cache import cache -from dacite.data import Data from dacite.types import is_optional T = TypeVar("T", bound=Any) @@ -23,13 +22,6 @@ def get_default_value_for_field(field: Field, type_: Type) -> Any: raise DefaultValueNotFoundError() -def create_instance(data_class: Type[T], init_values: Data, post_init_values: Data) -> T: - instance = data_class(**init_values) - for key, value in post_init_values.items(): - setattr(instance, key, value) - return instance - - @cache def get_fields(data_class: Type[T]) -> List[Field]: fields = getattr(data_class, _FIELDS) diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py index 6f02b50..eff1844 100644 --- a/tests/test_dataclasses.py +++ b/tests/test_dataclasses.py @@ -3,7 +3,7 @@ import pytest -from dacite.dataclasses import get_default_value_for_field, create_instance, DefaultValueNotFoundError, is_frozen +from dacite.dataclasses import get_default_value_for_field, DefaultValueNotFoundError, is_frozen def test_get_default_value_for_field_with_default_value(): @@ -53,28 +53,6 @@ class X: get_default_value_for_field(field=dataclass_field, type_=dataclass_field.type) -def test_create_instance_with_simple_data_class(): - @dataclass - class X: - i: int - - instance = create_instance(data_class=X, init_values={"i": 1}, post_init_values={}) - - assert instance == X(i=1) - - -def test_create_instance_with_post_init_values(): - @dataclass - class X: - i: int - j: int = field(init=False) - - instance = create_instance(data_class=X, init_values={"i": 1}, post_init_values={"j": 2}) - - assert instance.i == 1 - assert instance.j == 2 - - def test_is_frozen_with_frozen_dataclass(): @dataclass(frozen=True) class X: