Tyler Goodlet
f81e802219
Support `loglevel` fixture injection
...
For `pytest`, support defining a `loglevel` fixture value which will be
passed into internals when using `@tractor_test`.
2018-11-30 01:11:08 -05:00
goodboy
58ebacf0f7
Merge pull request #45 from tgoodlet/expose_tractor_test
...
Expose `tractor_test` for external use
2018-11-26 14:42:24 -05:00
Tyler Goodlet
321c096496
Add testing sub-pkg
2018-11-26 14:16:29 -05:00
Tyler Goodlet
512a2f25a2
Expose `tractor_test` in the same way as `trio`
2018-11-26 11:26:04 -05:00
Tyler Goodlet
0879150399
Move `tractor_test` to new module
2018-11-26 11:20:53 -05:00
goodboy
b0f7e6a954
Merge pull request #42 from tgoodlet/improved_errors
...
Improved errors - introduce trio.MultiError
2018-11-22 14:56:11 -05:00
Tyler Goodlet
23c7519fec
Jeeze 3.7.1 got even faster?
2018-11-22 14:25:31 -05:00
Tyler Goodlet
a482681f9c
Leverage `pytest.raises()` better; fix a bunch of docs
2018-11-22 11:43:04 -05:00
Tyler Goodlet
469a1e5874
Pin to trio 0.8+
2018-11-19 18:43:38 -05:00
Tyler Goodlet
3e74cc6f11
Verify nested boxed errors
2018-11-19 16:53:21 -05:00
Tyler Goodlet
0a240187c6
Log the exception when unable to ship back rpc errors
2018-11-19 16:52:55 -05:00
Tyler Goodlet
7a2b7d9d14
Delay tweak for py3.7.1
2018-11-19 14:17:01 -05:00
Tyler Goodlet
9102c48810
Add multierror cancellation tests
2018-11-19 14:16:42 -05:00
Tyler Goodlet
82fcf025cc
Fix: MultiError isn't an Exception...
2018-11-19 14:16:09 -05:00
Tyler Goodlet
1bb37dbddf
Expose trio.MultiError publicly
2018-11-19 14:15:28 -05:00
Tyler Goodlet
9bb8a062eb
mypy fixes
2018-11-19 08:47:42 -05:00
Tyler Goodlet
835d1fa07a
Vastly improve error triggered cancellation
...
At the expense of a bit more complexity in `ActorNursery.wait()`
(which I commented the heck out of fwiw) this adds far superior and
correct cancellation semantics for when a nursery is cancelled due
to (remote) errors in subactors.
This includes:
- `wait()` will now raise a `trio.MultiError` if multiple subactors
error with the same semantics as in `trio`.
- in `wait()` portals which are paired with `run_in_actor()`
spawned subactors (versus `start_actor()`) are waited on separately
and if the nursery **hasn't** been cancelled but there are errors
those are raised immediately before waiting on `start_actor()`
subactors which will block indefinitely if they haven't been
explicitly cancelled.
- if `wait()` does raise when the nursery hasn't yet been cancelled
it's expected that it will be called again depending on the actor
supervision strategy (i.e. right now we operate with a one-cancels-all
strategy, the same as `trio`, so `ActorNursery.__aexit__() calls
`cancel()` if any error is raised by `wait()`).
Oh and I added `is_main_process()` helper; can't remember why..
2018-11-19 08:44:19 -05:00
Tyler Goodlet
e75b25dc21
Improve error propagation machinery
...
Use the new custom error types throughout the actor and portal
primitives and set a few new rules:
- internal errors are any error not raised by an rpc task and are
**not** forwarded to portals but instead are raised directly in
the msg loop.
- portals always re-raise a "main task" error for every call to
``Portal.result()``.
2018-11-19 04:05:07 -05:00
Tyler Goodlet
2f6609ab78
Add custom exceptions with msg (un)packing
2018-11-19 03:51:12 -05:00
Tyler Goodlet
71bb87aa3a
Drop deprecated trio error
2018-11-09 01:53:15 -05:00
Tyler Goodlet
12fa5542b1
Oh, mypy...
2018-11-09 01:52:57 -05:00
Tyler Goodlet
2ce8e06619
Some minor doc/comment tweaks
2018-11-09 01:40:12 -05:00
Tyler Goodlet
aa32f42715
Avoid hanging multi-prog test when SIGINT fails
2018-11-09 01:36:45 -05:00
Tyler Goodlet
aa8238d5e0
Revert allowing multiple stream handlers; clutters test output
2018-11-09 01:35:51 -05:00
goodboy
8b7bf4fc07
Merge pull request #39 from tgoodlet/self_register
...
Verify arbiter self registration works
2018-09-21 10:18:17 -04:00
Tyler Goodlet
109b5971ed
Don't overload `func` arg
2018-09-21 10:11:27 -04:00
Tyler Goodlet
034146f2b1
Verify arbiter self registration
2018-09-21 00:32:23 -04:00
Tyler Goodlet
2973d7f1de
Await async funcs properly in `LocalPortal.run()`
2018-09-21 00:31:30 -04:00
Tyler Goodlet
71b44b997e
Drop sillyness in intro
2018-09-20 20:30:57 -04:00
Tyler Goodlet
7dd91d0684
Wait longer for arbiter-daemon to spawn on py3.6
2018-09-17 09:17:11 -04:00
Tyler Goodlet
65beb2d84e
Top level actor must have a `main()` now
2018-09-14 16:34:13 -04:00
Tyler Goodlet
716a44b6b8
Better document `run_daemon()`
2018-09-14 16:33:45 -04:00
goodboy
85a5d1f849
Merge pull request #38 from tgoodlet/multi_program_tests
...
Multi program tests
2018-09-10 22:43:39 -04:00
Tyler Goodlet
827a6c6014
Make `rpc_modules` a positional arg to `tractor.run_daemon()`
2018-09-10 22:31:23 -04:00
Tyler Goodlet
037c4c3797
Comment tweak
2018-09-10 15:28:19 -04:00
Tyler Goodlet
d808ffd8f3
`Logger.warn()` is deprecated
2018-09-10 15:19:49 -04:00
Tyler Goodlet
d12136d44d
Add some mult-program tests
...
Run the arbiter-actor in a separate program and do some basic tests to
make sure everything works - particularly, registration and
cancellation.
2018-09-08 09:44:29 -04:00
Tyler Goodlet
ee7959cb55
Fix same named actor race
...
When an actor has already been registered with the arbiter it should
exist in the registry and thus the wait event should have been removed.
Check that the registry indeed holds an event before clearing it.
2018-09-08 09:40:35 -04:00
Tyler Goodlet
6b8393a4d6
Add `tractor.run_daemon()` for running a main rpc daemon
2018-09-08 09:39:53 -04:00
Tyler Goodlet
0ca668453c
Running without a main func is a type error
2018-09-05 18:13:23 -04:00
Tyler Goodlet
914d1b67d8
Fix typo
2018-09-04 22:17:12 -04:00
Tyler Goodlet
a998a5e415
Forgot to remove spawn tests from test_local.py
2018-09-04 22:17:02 -04:00
goodboy
6dfbdd33a1
Merge pull request #37 from tgoodlet/tests_reorg
...
Tests reorg
2018-09-03 16:22:44 -04:00
Tyler Goodlet
c2457f7cce
Move basic spawning tests to separate module
2018-09-02 22:07:32 -04:00
Tyler Goodlet
18e101d38e
Move streaming tests into separate module
2018-09-02 21:58:42 -04:00
Tyler Goodlet
51076ebb5c
Break cancellation tests into new module
2018-09-02 11:51:58 -04:00
Tyler Goodlet
438a79707f
Couple more type tweaks
2018-09-01 14:43:48 -04:00
Tyler Goodlet
3dcf16c43d
Min cancel delay >= 0
2018-08-31 20:38:34 -04:00
goodboy
22ac567230
Merge pull request #35 from tgoodlet/type_annotations
...
Add type annotations to most functions
2018-08-31 20:04:39 -04:00
Tyler Goodlet
4d63125a3c
Add mypy checking to CI!
2018-08-31 18:06:16 -04:00