solver_basics_01.py always failed its own check — the two inverse paths
(solve() vs the explicit product_matrix + np.linalg.solve) agree only to
floating-point precision, but the example compared their coefficient dicts
with ==; it now checks the blade sets match and compares the coefficients
with np.allclose.
Ratchet the py/tests ANN gate — the existing unannotated test code now
carries per-line # noqa: ANN… directives (added with
ruff check --add-noqa, ~2 600 directives across 124 files), and ANN was
removed from the py/tests/** per-file-ignores. The current baseline passes,
while new test functions must be annotated to pass ruff check.
No star imports anywhere — the last two from pytanga.geometry.* import *
lines (in the N2/N3 analysis tests) were replaced with explicit
entity/operator imports, and F403/F405 were dropped from the
py/tests/** per-file-ignores, so star imports are now rejected repo-wide.