effect
effect copied to clipboard
effect isolation in Python, to facilitate more purely functional code
I'm trying to get my head around this library and I'm having some trouble understanding how I'm meant to structure Effects that are built out of other Effects, and how...
- [ ] delays between retries: - [ ] constant - [ ] exponential - [ ] randomized modifier - [ ] maximum number of retries - [ ] super...
It will be cool to write effect code using async/await syntax introduced in [PEP 492](https://www.python.org/dev/peps/pep-0492). For example, following code using `do` decorator: ```python @do def eff_func(): r1 = yield Effect(Intent1())...
The inverse is called 'catch' so it would seem to make sense (and allow for dropping the gross trailing underscore).
These are all the same function: - https://github.com/python-effect/effect/blob/826cbc5b6917683ba6ddf70cd693d3028ecdf226/effect/_test_utils.py#L52 - https://github.com/python-effect/effect/blob/826cbc5b6917683ba6ddf70cd693d3028ecdf226/effect/_base.py#L183 - https://github.com/python-effect/effect/blob/826cbc5b6917683ba6ddf70cd693d3028ecdf226/effect/test_retry.py#L63 so probably some of them should import the one implementation
This is perhaps a usage bug rather than a bug in effect, but: ``` class Print: def __init__(self, line): self.line = line @sync_performer def real_print(dispatcher, print_): print(print_.line) import pdb;pdb.Pdb(stdout=sys.stderr).set_trace() sys.stdout.flush()...
Similar to https://twistedmatrix.com/trac/ticket/6538 , which is for tracing callback history on Deferreds, I think we should have this feature for Effects. I _hope_ that it will be easier for Effects....
It would be nice to have an analog of [DeferredSemaphore](http://twistedmatrix.com/documents/current/api/twisted.internet.defer.DeferredSemaphore.html) and/or [DeferredLock](http://twistedmatrix.com/documents/current/api/twisted.internet.defer.DeferredLock.html). This could then be used to implement #8.
Unlike Deferreds, Effects can't have callbacks added to them after a result is available. This means that they have a handy property that once an effect has been performed, and...
Original ask: https://github.com/rackerlabs/otter/pull/789/files?diff=split#diff-46adfe1ec6f5f279e1d90dc10518c9abR188