Pythonic Redux
Pythonic Redux using asyncio. aioredux
provides a predictable state container with the following goal: "[Redux] helps
you write applications that behave consistently, run in different environments
..., and are easy to test" (from the Redux
documentation).
- Free software: Mozilla Public License
This package requires Python 3.4 or higher
import asyncio import aioredux async def go(): initial_state = { 'todos': (), } def add_todo(text): return {'type': 'ADD_TODO', 'text': text} def reducer(state, action): if action['type'] == 'ADD_TODO': todos = state['todos'] + (action['text'],) return {'todos': todos} return state store = yield from aioredux.create_store(reducer, initial_state) yield from store.dispatch(add_todo('todo text')) print(store.state['todos']) asyncio.get_event_loop().run_until_complete(go())
dispatch
is marked asasync
although in most cases it functions like a plain Python function returning a Future. This is done to allow for cases where dispatch performs a more complicated set of (async) actions.- A Pythonic version of redux-thunk is also included.