Skip to main content

Small library for observation mechanism

Project description

ntt-json-model

Library with model object which is observable and can be serialize and deserialize from json file

Example

With primitive data

from ntt_json_model import *

class TestModel(ModelBase):
    def __init__(self, 
                    nValue: int = 3, 
                    strName: str = "Hello",
                    fTemp: float = 3.1,
                    lstScores: List[int] = []) -> None:
        super().__init__()

        IntegerProperty(self, nValue, "_nValue")
        FloatProperty(self, fTemp, "_fTemp")
        StrProperty(self, strName, "_strName")
        ListProperty(self, lstScores, "_lstScores")

    @property
    def Value(self) -> int:
        return self._nValue.GetValue()

    @Value.setter
    def Value(self, nValue: int) -> None:
        self._nValue.SetValue(nValue)

    @property
    def Temp(self) -> str:
        return self._fTemp.GetValue()

    @Temp.setter
    def Temp(self, fTemp: float) -> None:
        self._fTemp.SetValue(fTemp)
    
    @property
    def Name(self) -> str:
        return self._strName.GetValue()

    @Name.setter
    def Name(self, strName: str) -> None:
        self._strName.SetValue(strName)

    @property
    def Scores(self) -> List[int]:
        return self._lstScores.GetValue()

ModelBase.mSubModels[TestModel.__name__] = TestModel

def PrintIfChanged() -> None:
    print("Model has changed")

model = TestModel()
model.Connect(PrintIfChanged)
model.Temp = 3  # ---> "Model has changed"

print(model.ToDict()) 
# Output:
# {
#     "__class__": "TestModel",
#     "_nValue": 3,
#     "_fTemp": 3.0,
#     "_strName": "Hello",
#     "_lstScores": []
# }

model.FromDict({
    "__class__": "TestModel",
    "_nValue": 3,
    "_fTemp": 3.0,
    "_strName": "Hello",
    "_lstScores": [4, 3]
})

Model Data

class TestModelClass(ModelBase):
    def __init__(self, nScore: int = 4, *args, **kwargs) -> None:
        super().__init__()

        IntegerProperty(self, nScore, "_nScore")
        ModelProperty(self, TestModel(*args, **kwargs), "_mTestModel")

    @property
    def Score(self) -> int:
        return self._nScore.GetValue()

    @Score.setter
    def Score(self, nNewScore: int) -> None:
        self._nScore.SetValue(nNewScore)

    @property
    def TestModel(self) -> TestModel:
        return self._mTestModel.GetValue()

ModelBase.mSubModels[TestModelClass.__name__] = TestModelClass

Model List Data

class TestModelListClass(ModelBase):
    def __init__(self, fScore: float = 8.5) -> None:
        super().__init__()

        FloatProperty(self, fScore, "_fScore")
        ModelListProperty(self, [], "_mModels")
        
    @property
    def Score(self) -> float:
        return self._fScore.GetValue()

    @Score.setter
    def Score(self, fNewScore: float) -> None:
        self._fScore.SetValue(fNewScore)

    @property
    def Models(self) -> List[TestModelClass]:
        return self._mModels.GetValue()

ModelBase.mSubModels[TestModelListClass.__name__] = TestModelListClass

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ntt-json-model-1.0.2.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

ntt_json_model-1.0.2-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file ntt-json-model-1.0.2.tar.gz.

File metadata

  • Download URL: ntt-json-model-1.0.2.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for ntt-json-model-1.0.2.tar.gz
Algorithm Hash digest
SHA256 37e778aec0909748016e21ade850dcee9fd69d1f3e99382d1b010cb2d91b7fa8
MD5 e0d648808b9bec82f2c0e267f8d89f10
BLAKE2b-256 8a3f6d14aed687bdccad680be0c4453366e9ff9370cbb04a0f1e5502ebe3e418

See more details on using hashes here.

File details

Details for the file ntt_json_model-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ntt_json_model-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 88ba87a97d06a64d387c7cae75a63fd2c27974157ab47f5f9b7786d1d8c35840
MD5 67614f0c13700e8f5bafc73f38be2b2e
BLAKE2b-256 23d85c2ca5d332968633e54cd03738f80194c9d87b33424ad5f3c5e258e5ea54

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page