{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":139894740,"defaultBranch":"master","name":"tractor","ownerLogin":"goodboy","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-07-05T20:01:14.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/291685?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1695846343.0","currentOid":""},"activityList":{"items":[{"before":"3f159235374b960d120c55a1be844cd1434ca48b","after":"28ea8e787aef8ab7ff99b34d6ab7cf19306b6b98","ref":"refs/heads/multihomed","pushedAt":"2024-01-12T01:58:50.000Z","pushType":"push","commitsCount":11,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Bump timeout on resource cache test a bitty bit.","shortMessageHtmlLink":"Bump timeout on resource cache test a bitty bit."}},{"before":"87cd725adb6f3f56579e7fa88a030040d9658aac","after":"3f159235374b960d120c55a1be844cd1434ca48b","ref":"refs/heads/multihomed","pushedAt":"2023-12-11T23:18:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"More thurough hard kill doc strings","shortMessageHtmlLink":"More thurough hard kill doc strings"}},{"before":"48accbd28fc3636b8a36faedc4fc9be867103ee8","after":"87cd725adb6f3f56579e7fa88a030040d9658aac","ref":"refs/heads/multihomed","pushedAt":"2023-11-07T21:46:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Add `open_root_actor(ensure_registry: bool)`\n\nAllows forcing the opened actor to either obtain the passed registry\naddrs or raise a runtime error.","shortMessageHtmlLink":"Add open_root_actor(ensure_registry: bool)"}},{"before":"ef0cfc4b209d064bf58c1ecce0ce3c735a444d17","after":"48accbd28fc3636b8a36faedc4fc9be867103ee8","ref":"refs/heads/multihomed","pushedAt":"2023-11-07T21:40:04.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Fix doc string \"its\" typo..","shortMessageHtmlLink":"Fix doc string \"its\" typo.."}},{"before":"2f0bed3018f75e38f899ae2db953cfd3bc443a9f","after":"ef0cfc4b209d064bf58c1ecce0ce3c735a444d17","ref":"refs/heads/multihomed","pushedAt":"2023-10-23T22:25:08.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Get inter-peer suite passing with all `Context` state checks!\n\nDefinitely needs some cleaning and refinement but this gets us to stage\n1 of being pretty frickin correct i'd say :dancer:","shortMessageHtmlLink":"Get inter-peer suite passing with all Context state checks!"}},{"before":"215fec1d4114df3bf1211f40b09fac4ab5492791","after":"2f0bed3018f75e38f899ae2db953cfd3bc443a9f","ref":"refs/heads/multihomed","pushedAt":"2023-10-19T16:41:23.000Z","pushType":"push","commitsCount":12,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Ignore `greenback` import error if not installed","shortMessageHtmlLink":"Ignore greenback import error if not installed"}},{"before":"6d951c526a7ae43e9786cacc53c8169211c755bf","after":"215fec1d4114df3bf1211f40b09fac4ab5492791","ref":"refs/heads/multihomed","pushedAt":"2023-10-18T19:01:17.000Z","pushType":"push","commitsCount":13,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Change old `._debug._pause()` name, cherry to #362 re `greenback`","shortMessageHtmlLink":"Change old ._debug._pause() name, cherry to #362 re greenback"}},{"before":"4314a59327ad7425f1d990d3e006dcf8453db9b1","after":"6d951c526a7ae43e9786cacc53c8169211c755bf","ref":"refs/heads/multihomed","pushedAt":"2023-10-10T13:55:28.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Comment all `.pause(shield=True)` attempts again, need to solve cancel scope `.__exit__()` frame hiding issue..","shortMessageHtmlLink":"Comment all .pause(shield=True) attempts again, need to solve cance…"}},{"before":"e94f1261b5b28f13f217bb7417f2eb8fbe7f14fb","after":"4314a59327ad7425f1d990d3e006dcf8453db9b1","ref":"refs/heads/multihomed","pushedAt":"2023-10-03T14:54:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Add post-mortem catch around failed transport addr binds to aid with runtime debugging","shortMessageHtmlLink":"Add post-mortem catch around failed transport addr binds to aid with …"}},{"before":"86da79a8547d7037a44880cb713614b837a343a1","after":"e94f1261b5b28f13f217bb7417f2eb8fbe7f14fb","ref":"refs/heads/multihomed","pushedAt":"2023-10-02T22:10:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Move `maybe_open_crash_handler()` CLI `--pdb`-driven wrapper to debug mod","shortMessageHtmlLink":"Move maybe_open_crash_handler() CLI --pdb-driven wrapper to debug…"}},{"before":"7bed470f5cefa7bc03471de14f971135fb96058f","after":"86da79a8547d7037a44880cb713614b837a343a1","ref":"refs/heads/multihomed","pushedAt":"2023-09-29T19:22:58.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Rename to `parse_maddr()` and fill out doc strings","shortMessageHtmlLink":"Rename to parse_maddr() and fill out doc strings"}},{"before":"3d0e95513c901a8686259dc67fac6d8978e246db","after":"7bed470f5cefa7bc03471de14f971135fb96058f","ref":"refs/heads/multihomed","pushedAt":"2023-09-28T19:40:37.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Start `.devx.cli` extensions for pop CLI frameworks\n\nStarting of with just a `typer` (and thus transitively `click`)\n`typer.Typer.callback` hook which allows passthrough of the `--ll\n` and `--pdb ` flags for use when\nbuilding CLIs that use the runtime Bo\n\nStill needs lotsa refinement and obviously better docs but, the doc\nstring for `load_runtime_vars()` shows how to use the underlying\n`.devx._debug.open_crash_handler()` via a wrapper that can be passed the\n`--pdb` flag and then enable debug mode throughout the entire actor\nsystem.","shortMessageHtmlLink":"Start .devx.cli extensions for pop CLI frameworks"}},{"before":null,"after":"3d0e95513c901a8686259dc67fac6d8978e246db","ref":"refs/heads/multihomed","pushedAt":"2023-09-27T20:25:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Init-support for \"multi homed\" transports\n\nSince we'd like to eventually allow a diverse set of transport\n(protocol) methods and stacks, and a multi-peer discovery system for\ndistributed actor-tree applications, this reworks all runtime internals\nto support multi-homing for any given tree on a logical host. In other\nwords any actor can now bind its transport server (currently only\nunsecured TCP + `msgspec`) to more then one address available in its\n(linux) network namespace. Further, registry actors (now dubbed\n\"registars\" instead of \"arbiters\") can also similarly bind to multiple\nnetwork addresses and provide discovery services to remote actors via\nmultiple addresses which can now be provided at runtime startup.\n\nDeats:\n- adjust `._runtime` internals to use a `list[tuple[str, int]]` (and\n thus pluralized) socket address sequence where applicable for transport\n server socket binds, now exposed via `Actor.accept_addrs`:\n - `Actor.__init__()` now takes a `registry_addrs: list`.\n - `Actor.is_arbiter` -> `.is_registrar`.\n - `._arb_addr` -> `._reg_addrs: list[tuple]`.\n - always reg and de-reg from all registrars in `async_main()`.\n - only set the global runtime var `'_root_mailbox'` to the loopback\n address since normally all in-tree processes should have access to\n it, right?\n - `._serve_forever()` task now takes `listen_sockaddrs: list[tuple]`\n- make `open_root_actor()` take a `registry_addrs: list[tuple[str, int]]`\n and defaults when not passed.\n- change `ActorNursery.start_..()` methods take `bind_addrs: list` and\n pass down through the spawning layer(s) via the parent-seed-msg.\n- generalize all `._discovery()` APIs to accept `registry_addrs`-like\n inputs and move all relevant subsystems to adopt the \"registry\" style\n naming instead of \"arbiter\":\n - make `find_actor()` support batched concurrent portal queries over\n all provided input addresses using `.trionics.gather_contexts()` Bo\n - syntax: move to using `async with ` 3.9+ style chained\n @acms.\n - a general modernization of the code to a python 3.9+ style.\n - start deprecation and change to \"registry\" naming / semantics:\n - `._discovery.get_arbiter()` -> `.get_registry()`","shortMessageHtmlLink":"Init-support for \"multi homed\" transports"}},{"before":"687852f368257dc5b4870ad8112bb9a7fd3bff5c","after":"3a31c9d3388b28277bc9af7f3aca22217431072a","ref":"refs/heads/dereg_on_oserror","pushedAt":"2023-09-26T14:32:10.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"to_asyncio: mask error logging, not sure it adds that much","shortMessageHtmlLink":"to_asyncio: mask error logging, not sure it adds that much"}},{"before":null,"after":"687852f368257dc5b4870ad8112bb9a7fd3bff5c","ref":"refs/heads/dereg_on_oserror","pushedAt":"2023-08-28T16:54:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Add stale entry deleted from registrar test\n\nBy spawning an actor task that immediately shuts down the transport\nserver and then sleeps, verify that attempting to connect via the\n`._discovery.find_actor()` helper delivers `None` for the `Portal`\nvalue.\n\nRelates to #184 and #216","shortMessageHtmlLink":"Add stale entry deleted from registrar test"}},{"before":"8d1285867c7b6134028fa9ad8e0350a2a51e9cb1","after":"f745da9fb2783c7b55ef7c7ae25d79d18bf530c8","ref":"refs/heads/shm_apis","pushedAt":"2023-08-18T14:19:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Add `numpy` for testing optional integrated shm API layer","shortMessageHtmlLink":"Add numpy for testing optional integrated shm API layer"}},{"before":"e03bec5efc9b8739809e7b6d51ca3a13735745d1","after":"22c14e235e3390674796dfc3c462863395d2bfda","ref":"refs/heads/asyncio_debugger_support","pushedAt":"2023-08-18T14:18:51.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Expose `Channel` @ pkg level, drop `_debug.pp()` alias","shortMessageHtmlLink":"Expose Channel @ pkg level, drop _debug.pp() alias"}},{"before":"bee2c36072939d7e537ec1fce9f297d37721db63","after":"e03bec5efc9b8739809e7b6d51ca3a13735745d1","ref":"refs/heads/asyncio_debugger_support","pushedAt":"2023-07-21T19:08:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Move `.to_asyncio` to modern optional value type annots","shortMessageHtmlLink":"Move .to_asyncio to modern optional value type annots"}},{"before":"398640c8026312fcf9540753754005896e9a85c4","after":"bee2c36072939d7e537ec1fce9f297d37721db63","ref":"refs/heads/asyncio_debugger_support","pushedAt":"2023-07-12T17:10:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Make `NamespacePath` work on object refs\n\nDetect if the input ref is a non-func (like an `object` instance) in\nwhich case grab its type name using `type()`. Wrap all the name-getting\ninto a new `_mk_fqpn()` static meth: gets the \"fully qualified path\nname\" and returns path and name in tuple; port other methds to use it.\nRefine and update the docs B)","shortMessageHtmlLink":"Make NamespacePath work on object refs"}},{"before":"a0276f41c23db8ee56b24de7dc9e51322857b48e","after":"7507e269ec2f769e4f6cc208dec51f69c62558e9","ref":"refs/heads/ctx_cancel_semantics_and_overruns","pushedAt":"2023-06-14T19:32:26.088Z","pushType":"push","commitsCount":3,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Just import `mp` top level in `._spawn`","shortMessageHtmlLink":"Just import mp top level in ._spawn"}},{"before":"203f95615cc9a16cb6280418e2f339b9a36dae07","after":"64956887302b6450c9503b7d04eef28053270bd6","ref":"refs/heads/piker_pin","pushedAt":"2023-05-25T20:00:55.325Z","pushType":"push","commitsCount":50,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Drop `Optional` style from runtime mod","shortMessageHtmlLink":"Drop Optional style from runtime mod"}},{"before":"872dcd7658698cedd796db6ce604765a2d2f8e26","after":"c7e27ad09d77a9f20396295d85896d6ec4ebafa5","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:53:28.191Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Add `debug_mode: bool` control to task mngr\n\nAllows dynamically importing `pdbp` when enabled and a way for\neventually linking with `tractor`'s own debug mode flag.","shortMessageHtmlLink":"Add debug_mode: bool control to task mngr"}},{"before":"e0c888fd5c822299ae4ba344c90ca10efc398f56","after":"872dcd7658698cedd796db6ce604765a2d2f8e26","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:51:55.917Z","pushType":"push","commitsCount":1,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Add `debug_mode: bool` control to task mngr","shortMessageHtmlLink":"Add debug_mode: bool control to task mngr"}},{"before":"0025e0908281637a4325b4127537b4636104b71c","after":"e0c888fd5c822299ae4ba344c90ca10efc398f56","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:44:32.673Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Go all in on \"task manager\" naming","shortMessageHtmlLink":"Go all in on \"task manager\" naming"}},{"before":"aed71dc824c45d1e37f4323e0d15b8660826e2e7","after":"0025e0908281637a4325b4127537b4636104b71c","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:43:36.603Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Go all in on \"task manager\" naming","shortMessageHtmlLink":"Go all in on \"task manager\" naming"}},{"before":"85095fff4e1c6e392b1409c408ae79ad737bd1f8","after":"aed71dc824c45d1e37f4323e0d15b8660826e2e7","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:40:10.391Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Go all in on \"task manager\" naming","shortMessageHtmlLink":"Go all in on \"task manager\" naming"}},{"before":"b24f0d5c1eb3b2ea7c7d76d9a9ec759770037d32","after":"85095fff4e1c6e392b1409c408ae79ad737bd1f8","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:39:42.257Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Go all in on \"task manager\" naming","shortMessageHtmlLink":"Go all in on \"task manager\" naming"}},{"before":"cda85a37e66f222ec2eff72adbee33190785cb83","after":"b24f0d5c1eb3b2ea7c7d76d9a9ec759770037d32","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:33:49.051Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Go all in on \"task manager\" naming","shortMessageHtmlLink":"Go all in on \"task manager\" naming"}},{"before":"f2649b8f89aa3ee5e957c65a21ff14288268ee56","after":"cda85a37e66f222ec2eff72adbee33190785cb83","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T19:33:24.557Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Go all in on \"task manager\" naming","shortMessageHtmlLink":"Go all in on \"task manager\" naming"}},{"before":"940e65fccf83dd4fb814c54519c4ad0708d90cda","after":"f2649b8f89aa3ee5e957c65a21ff14288268ee56","ref":"refs/heads/oco_supervisor_prototype","pushedAt":"2023-05-19T18:49:17.328Z","pushType":"push","commitsCount":1,"pusher":{"login":"goodboy","name":null,"path":"/goodboy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/291685?s=80&v=4"},"commit":{"message":"Go all in on \"task manager\" naming","shortMessageHtmlLink":"Go all in on \"task manager\" naming"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAD3c3EhwA","startCursor":null,"endCursor":null}},"title":"Activity · goodboy/tractor"}