tractor/examples
Gud Boi 13cdc43f01 Fix silently-corrupt keys in `parse_wg_maddr()`
`_segments()` called `Multiaddr(maddr)` purely to validate, then
swallowed every failure under `except Exception: pass`. That was
harmless pre-#108 — w/o a `wg` codec there was nothing to
validate — but now that the codec is pinned in, the swallow is
load-bearing and disabled: a malformed key sails past validation
into `wg8_pubkey()`, which happily emits a corrupt b64 str, and
the returned struct then fails its own `.maddr` round-trip. No
raise, just quietly wrong output.

Deats,
- add `_have_wg_maddr_proto()`, the gate plan-03 already
  referenced but which never actually existed. Impl'd as
  `protocols.protocol_with_name('wg')` under
  `except ProtocolNotFoundError` and cached in a mod global,
  same shape as the TIPC plan's `is_tipc_available()`.
- only validate when that gate is `True`, and let
  `StringParseError` propagate — a maddr which doesn't parse
  must NOT reach `wg8_pubkey()`.
- keep the degraded split for a pre-#108 install, now w/ an
  explicit `XXX` naming the validation you give up.

So parsing stays pure but becomes total-or-raises. Our own
`ValueError`s (missing `/wg/` seg, bare tunnel w/o an overlay
ep) are unaffected, as is the `wg(8)` b64 round-trip.

(this patch was generated in some part by `claude-code` using `claude-opus-5` (`anthropic`))
2026-08-29 22:02:56 -04:00
..
advanced_faults Include `TransportClosed` in tpt-layer err handling 2026-02-19 13:55:02 -05:00
debugging Polish the debugger examples 2026-08-29 19:01:34 -04:00
discovery Harden the dedicated registrar example 2026-08-29 20:05:28 -04:00
integration Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
multihost/wg_lan Fix silently-corrupt keys in `parse_wg_maddr()` 2026-08-29 22:02:56 -04:00
parallelism Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
trio Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
__init__.py Make example a subpkg for `python -m <mod>` testing 2022-07-27 11:40:02 -04:00
__main__.py Use trio.run() in windows tests 2021-05-07 11:21:40 -04:00
a_trynamic_first_scene.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
actor_spawning_and_causality.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
actor_spawning_and_causality_with_daemon.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
asynchronous_generators.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
full_fledged_streaming_service.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
infected_asyncio_echo_server.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
multiple_streams_one_portal.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
nested_actor_tree.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
quick_cluster.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
remote_error_propagation.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
rpc_bidir_streaming.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
service_daemon_discovery.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
service_discovery.py Show the discovered actor address 2026-08-29 20:24:25 -04:00
streaming_broadcast_fanout.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
typed_payloads.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
uds_transport_actor_tree.py Widen `accept_addr` in the UDS example 2026-08-29 21:46:38 -04:00