From 70f5478645ab1713abd70a5c4f0dde753c26e140 Mon Sep 17 00:00:00 2001 From: Guzz-T Date: Sun, 1 Mar 2026 14:59:19 +0100 Subject: [PATCH] Add a base class for all cfi data vectors --- luxtronik/cfi/calculations.py | 13 ++----------- luxtronik/cfi/parameters.py | 15 ++------------- luxtronik/cfi/vector.py | 20 ++++++++++++++++++++ luxtronik/cfi/visibilities.py | 13 ++----------- luxtronik/shi/holdings.py | 4 ---- luxtronik/shi/inputs.py | 4 ---- tests/cfi/test_cfi_calculations.py | 4 ++-- tests/cfi/test_cfi_parameters.py | 4 ++-- tests/cfi/test_cfi_visibilities.py | 4 ++-- tests/shi/test_shi_vector.py | 4 ++-- 10 files changed, 34 insertions(+), 51 deletions(-) create mode 100644 luxtronik/cfi/vector.py diff --git a/luxtronik/cfi/calculations.py b/luxtronik/cfi/calculations.py index f5a90469..62416ee9 100644 --- a/luxtronik/cfi/calculations.py +++ b/luxtronik/cfi/calculations.py @@ -12,7 +12,7 @@ ) from luxtronik.cfi.constants import CALCULATIONS_FIELD_NAME -from luxtronik.data_vector import DataVector +from luxtronik.cfi.vector import DataVectorConfig from luxtronik.datatypes import Base @@ -25,22 +25,13 @@ CALCULATIONS_DEFAULT_DATA_TYPE ) -class Calculations(DataVector): +class Calculations(DataVectorConfig): """Class that holds all calculations.""" name = CALCULATIONS_FIELD_NAME definitions = CALCULATIONS_DEFINITIONS _outdated = CALCULATIONS_OUTDATED - def __init__(self): - super().__init__() - for d in CALCULATIONS_DEFINITIONS: - self._data.add(d, d.create_field()) - - @property - def calculations(self): - return self._data - def get_firmware_version(self): """Get the firmware version as string.""" return "".join([super(Calculations, self).get(i).value for i in range(81, 91)]) diff --git a/luxtronik/cfi/parameters.py b/luxtronik/cfi/parameters.py index a481cae9..f578b81c 100644 --- a/luxtronik/cfi/parameters.py +++ b/luxtronik/cfi/parameters.py @@ -12,7 +12,7 @@ ) from luxtronik.cfi.constants import PARAMETERS_FIELD_NAME -from luxtronik.data_vector import DataVector +from luxtronik.cfi.vector import DataVectorConfig LOGGER = logging.getLogger(__name__) @@ -24,20 +24,9 @@ PARAMETERS_DEFAULT_DATA_TYPE ) -class Parameters(DataVector): +class Parameters(DataVectorConfig): """Class that holds all parameters.""" name = PARAMETERS_FIELD_NAME definitions = PARAMETERS_DEFINITIONS _outdated = PARAMETERS_OUTDATED - - def __init__(self, safe=True): - """Initialize parameters class.""" - super().__init__() - self.safe = safe - for d in PARAMETERS_DEFINITIONS: - self._data.add(d, d.create_field()) - - @property - def parameters(self): - return self._data diff --git a/luxtronik/cfi/vector.py b/luxtronik/cfi/vector.py new file mode 100644 index 00000000..16f8d4b4 --- /dev/null +++ b/luxtronik/cfi/vector.py @@ -0,0 +1,20 @@ + +import logging + +from luxtronik.data_vector import DataVector + + +LOGGER = logging.getLogger(__name__) + +############################################################################### +# Configuration interface data-vector +############################################################################### + +class DataVectorConfig(DataVector): + """Specialized DataVector for Luxtronik configuration fields.""" + + def __init__(self, safe=True): + super().__init__() + self.safe = safe + for d in self.definitions: + self._data.add(d, d.create_field()) \ No newline at end of file diff --git a/luxtronik/cfi/visibilities.py b/luxtronik/cfi/visibilities.py index d220509b..224f8f32 100644 --- a/luxtronik/cfi/visibilities.py +++ b/luxtronik/cfi/visibilities.py @@ -12,7 +12,7 @@ ) from luxtronik.cfi.constants import VISIBILITIES_FIELD_NAME -from luxtronik.data_vector import DataVector +from luxtronik.cfi.vector import DataVectorConfig LOGGER = logging.getLogger(__name__) @@ -24,18 +24,9 @@ VISIBILITIES_DEFAULT_DATA_TYPE, ) -class Visibilities(DataVector): +class Visibilities(DataVectorConfig): """Class that holds all visibilities.""" name = VISIBILITIES_FIELD_NAME definitions = VISIBILITIES_DEFINITIONS _outdated = VISIBILITIES_OUTDATED - - def __init__(self): - super().__init__() - for d in VISIBILITIES_DEFINITIONS: - self._data.add(d, d.create_field()) - - @property - def visibilities(self): - return self._data diff --git a/luxtronik/shi/holdings.py b/luxtronik/shi/holdings.py index 71ff19ef..10643110 100644 --- a/luxtronik/shi/holdings.py +++ b/luxtronik/shi/holdings.py @@ -30,7 +30,3 @@ class Holdings(DataVectorSmartHome): name = HOLDINGS_FIELD_NAME definitions = HOLDINGS_DEFINITIONS _outdated = HOLDINGS_OUTDATED - - @property - def holdings(self): - return self._data \ No newline at end of file diff --git a/luxtronik/shi/inputs.py b/luxtronik/shi/inputs.py index 66109e94..fb7ab24d 100644 --- a/luxtronik/shi/inputs.py +++ b/luxtronik/shi/inputs.py @@ -30,7 +30,3 @@ class Inputs(DataVectorSmartHome): name = INPUTS_FIELD_NAME definitions = INPUTS_DEFINITIONS _outdated = INPUTS_OUTDATED - - @property - def inputs(self): - return self._data \ No newline at end of file diff --git a/tests/cfi/test_cfi_calculations.py b/tests/cfi/test_cfi_calculations.py index fd44cbed..18556308 100644 --- a/tests/cfi/test_cfi_calculations.py +++ b/tests/cfi/test_cfi_calculations.py @@ -13,12 +13,12 @@ def test_init(self): """Test cases for initialization""" calculations = Calculations() assert calculations.name == "calculation" - assert calculations.calculations == calculations._data + assert calculations.data == calculations._data def test_data(self): """Test cases for the data dictionary""" calculations = Calculations() - data = calculations.calculations + data = calculations.data # The Value must be a fields # The key can be an index diff --git a/tests/cfi/test_cfi_parameters.py b/tests/cfi/test_cfi_parameters.py index e9930fab..11a6dcf4 100644 --- a/tests/cfi/test_cfi_parameters.py +++ b/tests/cfi/test_cfi_parameters.py @@ -13,7 +13,7 @@ def test_init(self): """Test cases for initialization""" parameters = Parameters() assert parameters.name == "parameter" - assert parameters.parameters == parameters._data + assert parameters.data == parameters._data assert parameters.safe parameters = Parameters(False) @@ -22,7 +22,7 @@ def test_init(self): def test_data(self): """Test cases for the data dictionary""" parameters = Parameters() - data = parameters.parameters + data = parameters.data # The Value must be a fields # The key can be an index diff --git a/tests/cfi/test_cfi_visibilities.py b/tests/cfi/test_cfi_visibilities.py index 8ecb6f72..43f9af8a 100644 --- a/tests/cfi/test_cfi_visibilities.py +++ b/tests/cfi/test_cfi_visibilities.py @@ -13,12 +13,12 @@ def test_init(self): """Test cases for initialization""" visibilities = Visibilities() assert visibilities.name == "visibility" - assert visibilities.visibilities == visibilities._data + assert visibilities.data == visibilities._data def test_data(self): """Test cases for the data dictionary""" visibilities = Visibilities() - data = visibilities.visibilities + data = visibilities.data # The Value must be a fields # The key can be an index diff --git a/tests/shi/test_shi_vector.py b/tests/shi/test_shi_vector.py index a232c32d..d6da59c2 100644 --- a/tests/shi/test_shi_vector.py +++ b/tests/shi/test_shi_vector.py @@ -416,7 +416,7 @@ def test_init(self): """Test cases for initialization""" holdings = Holdings() assert holdings.name == "holding" - assert holdings.holdings == holdings._data + assert holdings.data == holdings._data class TestInputs: @@ -426,4 +426,4 @@ def test_init(self): """Test cases for initialization""" inputs = Inputs() assert inputs.name == "input" - assert inputs.inputs == inputs._data + assert inputs.data == inputs._data