diff --git a/pyproject.toml b/pyproject.toml index 7f47cd3..8239693 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,9 @@ classifiers = [ "Operating System :: OS Independent", ] dependencies = [ - "numpy", + "pydantic>=2.7.1", + "mat3ra-esse" + ] [project.optional-dependencies] diff --git a/src/py/mat3ra/__init__.py b/src/py/mat3ra/__init__.py index e69de29..8db66d3 100644 --- a/src/py/mat3ra/__init__.py +++ b/src/py/mat3ra/__init__.py @@ -0,0 +1 @@ +__path__ = __import__("pkgutil").extend_path(__path__, __name__) diff --git a/src/py/mat3ra/prode/__init__.py b/src/py/mat3ra/prode/__init__.py index 5e1f4cb..dd7d36b 100644 --- a/src/py/mat3ra/prode/__init__.py +++ b/src/py/mat3ra/prode/__init__.py @@ -1,6 +1,39 @@ -import numpy as np +from enum import Enum +from types import SimpleNamespace +from mat3ra.esse.models.properties_directory.enum_options import ( + ScalarPropertyEnum, + NonScalarPropertyEnum, + TensorPropertyEnum, + ObjectPropertyEnum, + ProtoPropertyEnum, + MetaPropertyEnum, +) -def get_length(vec: np.ndarray) -> float: - return float(np.linalg.norm(vec)) +class AllPropertyEnum(str, Enum): + """All property names combined from all categories""" + pass + + +for enum_class in [ + ScalarPropertyEnum, + NonScalarPropertyEnum, + TensorPropertyEnum, + ObjectPropertyEnum, + ProtoPropertyEnum, + MetaPropertyEnum, +]: + for item in enum_class: + setattr(AllPropertyEnum, item.name, item.value) + + +PropertyName = SimpleNamespace( + scalar=ScalarPropertyEnum, + non_scalar=NonScalarPropertyEnum, + tensor=TensorPropertyEnum, + object=ObjectPropertyEnum, + proto=ProtoPropertyEnum, + meta=MetaPropertyEnum, + all=AllPropertyEnum, +) diff --git a/tests/py/test_sample.py b/tests/py/test_sample.py index 315f171..78e5215 100644 --- a/tests/py/test_sample.py +++ b/tests/py/test_sample.py @@ -1,12 +1,8 @@ -import numpy as np +import mat3ra.prode as prode -from mat3ra.prode import get_length - -def test_get_length(): - """Test that get_length returns correct type and value.""" - vec = np.array([1, 2]) - result = get_length(vec) - assert isinstance(result, float) - assert np.isclose(result, np.sqrt(5)) +def test_property_name_enum(): + result = prode.PropertyName.non_scalar.band_gaps + assert result.value == "band_gaps" + assert isinstance(result.value, str)