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
@asyncio.coroutine
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.