ruff 0.16 enables rules that earlier releases did not, so `ruff check .`
was already failing on HEAD with 35 findings - the CI job installs ruff
unpinned and would have gone red on the next push regardless of this
branch.
All changes are mechanical and behaviour-neutral:
- Optional[X] -> X | None, List[str] -> list[str], dropped the now unused
typing imports (every module already carries
`from __future__ import annotations`, and requires-python is >= 3.10).
- Sorted import blocks, `import automtu.x as x` -> `from automtu import x`.
- subprocess.run in pmtu.py and wg.py now passes check=False explicitly.
That is the parameter default, so the calls behave exactly as before.
- int(round(x)) -> round(x): round() with a single argument already
returns int.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>