From 78bd079b0f9e31b8be6ee272e764fc85ccd64731 Mon Sep 17 00:00:00 2001 From: Simone Gallo Date: Thu, 10 Oct 2024 09:55:50 +0200 Subject: [PATCH 1/2] [ADD] DataReturn dataclass in BaseModels.py --- ozonenv/core/BaseModels.py | 15 ++++++++-- tests/unit/test_unit_base_models.py | 43 +++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 tests/unit/test_unit_base_models.py diff --git a/ozonenv/core/BaseModels.py b/ozonenv/core/BaseModels.py index edb66b4..c185d56 100644 --- a/ozonenv/core/BaseModels.py +++ b/ozonenv/core/BaseModels.py @@ -7,17 +7,18 @@ import logging import operator import re +from dataclasses import dataclass from datetime import datetime from functools import reduce from typing import Any -from typing import List, Optional, Dict -from typing import TypeVar +from typing import Optional +from typing import TypeVar, Generic, List, Dict import typing_extensions # from datetime import datetime from dateutil.parser import parse -from pydantic import BaseModel, Field, field_serializer, model_validator +from pydantic import BaseModel, Field, field_serializer from typing_extensions import Literal import ozonenv @@ -31,6 +32,7 @@ logger = logging.getLogger("asyncio") T = TypeVar("T", bound=BaseModel) +D = TypeVar("D") ModelType = TypeVar("ModelType", bound=BaseModel) default_fields = [ @@ -1610,3 +1612,10 @@ def components_ext_data_src(cls): @classmethod def get_data_model(cls): return "" + + +@dataclass +class DataReturn(Generic[D]): + data: D | None = None + fail: bool = False + msg: str = "" diff --git a/tests/unit/test_unit_base_models.py b/tests/unit/test_unit_base_models.py new file mode 100644 index 0000000..1bd8c00 --- /dev/null +++ b/tests/unit/test_unit_base_models.py @@ -0,0 +1,43 @@ +from ozonenv.core.BaseModels import DataReturn + + +class TestDataReturn: + def test_default_initialization(self): + """Test default initialization of DataReturn""" + result = DataReturn() + + assert result.data is None # data should default to None + assert result.fail is False # fail should default to False + assert result.msg == "" # msg should default to an empty string + + def test_custom_initialization(self): + """Test custom initialization of DataReturn with various types""" + result = DataReturn(data=42, fail=True, msg="Custom message") + + assert result.data == 42 + assert result.fail is True + assert result.msg == "Custom message" + + def test_list_data(self): + """Test using a list as the data""" + data = [1, 2, 3] + result = DataReturn(data=data) + + assert result.data == data + assert result.data[0] == 1 + + def test_dict_data(self): + """Test using a dictionary as the data""" + data = {"key": "value"} + result = DataReturn(data=data) + + assert result.data == data + assert result.data["key"] == "value" + + def test_none_data(self): + """Test explicitly passing None to data""" + result = DataReturn(data=None, fail=False, msg="No data") + + assert result.data is None + assert result.fail is False + assert result.msg == "No data" From 7a432afa08fc2764fd6b3fb4376936cecd9d6f8f Mon Sep 17 00:00:00 2001 From: Simone Gallo Date: Thu, 10 Oct 2024 10:03:47 +0200 Subject: [PATCH 2/2] [UPD] lib version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1eebaad..fd942ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "ozon-env" -version = "2.2.16" +version = "2.2.17" homepage = "https://github.com/archetipo/ozon-env" description = "Ozon Env API" readme = "README.md"