tractor/tractor/discovery
Gud Boi f671b589b7 Read WireGuard iface keys through `pyroute2`
Add async `read_wg_pubkey()` and `read_wg_peers()` helpers which
offload `WireGuard.info()` calls to a `trio` worker thread.

Deats,
- add the Linux-only `wg` extra and pin `pyroute2`
- pass `flags=0` so a read never creates a named netns
- normalize multipart replies, validate keys and de-dup peers
- always close the netlink client, including error paths
- test thread offload, netns forwarding and client cleanup

Prompt-IO: ai/prompt-io/opencode/20260821T233204Z_5d92595f_prompt_io.md

(this patch was generated in some part by `opencode` using `gpt-5.6-sol` (`openai`))
2026-08-29 22:00:29 -04:00
..
__init__.py Read WireGuard iface keys through `pyroute2` 2026-08-29 22:00:29 -04:00
_addr.py Emit canonical tagged addresses 2026-08-29 22:00:16 -04:00
_api.py Move registrar probes to `discovery._api` 2026-08-14 18:43:36 -04:00
_multiaddr.py Emit canonical tagged addresses 2026-08-29 22:00:16 -04:00
_registry.py Fix misc bugs caught by Copilot review 2026-04-14 19:54:15 -04:00
_tunnel.py Read WireGuard iface keys through `pyroute2` 2026-08-29 22:00:29 -04:00