pydepot 0.1.1

Last updated:

0 purchases

pydepot 0.1.1 Image
pydepot 0.1.1 Images
Add to Cart

Description:

pydepot 0.1.1

Strongly-typed, scalable state container for Python.

Documentation


Simple example
# main.py

from typing import NamedTuple

import pydepot


class State(NamedTuple):
counter: int


class AddToCounterAction(pydepot.Action):
def __init__(self, value: int):
self.value: int = value


class AddToCounterReducer(pydepot.Reducer[AddToCounterAction, State]):
@property
def action_type(self) -> type[AddToCounterAction]:
return AddToCounterAction

def apply(self, action: AddToCounterAction, state: State) -> State:
return State(counter=state.counter + action.value)


class CounterSubscriber(pydepot.StoreSubscriber[State]):
def on_state(self, state: State) -> None:
print(f"The counter has changed to {state.counter}.")


def main() -> None:
store = pydepot.Store(initial_state=State(counter=0))
store.register(AddToCounterReducer())

subscriber = CounterSubscriber()
store.subscribe(subscriber)

store.dispatch(AddToCounterAction(value=42))


if __name__ == "__main__":
main()

$ python3 main.py

The counter has changed to 42!

Installation
Pydepot is available as pydepot on PyPI:
pip install pydepot

Usage
For detailed quickstart and API reference, visit the Documentation
License

Copyright (C) 2023 tombartk

This program is free software: you can redistribute it and/or modify it under the terms
of the GNU Affero General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program.
If not, see https://www.gnu.org/licenses/.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.