Orrery#

PyPI - Version License Test lint Publish Docs

A framework for supporting MVC and observer patterns in Python

Install#

pip install orrery

Update#

pip install --update orrery

Documentation#

Quick start#

See the Tutorial page for more information

Create a model containing an initial value

from orrery.models import ValueModel
my_model = ValueModel(value=5)

Read or set the model value

my_model.value = 6
print(my_model.value)

Constant model:

from orrery.models import ConstantModel
my_model = ConstantModel(value=5)

Model containing a class (i.e. store without copying)

from orrery.models import ClassModel
my_object = MyClass()
my_model = ClassModel(my_object)

Check if a model has been given a value:

print(my_model.has_value())

Observe changes to a model:

class CallbackClass:
    def value_changed(self, model):
        print(f"New value: {model.value}")

callback_class = CallbackClass()
my_model.add_value_changed_listener(callback_class.value_changed)

Create a model which depends on other models:

from orrery.models import DependentModel, ValueModel

model_a = ValueModel(value=2)
model_b = ValueModel(value=3)
sum_model = DependentModel(
    dependencies=dict(model_a=model_a, model_b=model_b), 
    get_result=lambda dependencies: dependencies["model_a"].value + dependencies["model_b"].value
)
print(sum_model.value)

Source code#

License#

See license file