Skip to content

refactor: move the flat-layout research core under grl_snam/ - #103

Merged
transfix merged 3 commits into
mainfrom
refactor/flat-modules-into-package
Sep 27, 2026
Merged

transfix merged 3 commits into
mainfrom
refactor/flat-modules-into-package

Conversation

@transfix

Copy link
Copy Markdown
Contributor

The five research-core modules — sdf_nav.py, material_nav.py, train_coef_energy.py, eval_coef_energy.py, surrogate_robust.py — lived at the repo root as top-level modules, imported absolutely (import sdf_nav) by the package, tests, scripts, and experiments, and shipped via explicit [tool.poetry] packages py-module includes. That flat layout pollutes the global module namespace and is easy to mistake for stray leftovers.

What

  • Move all five under grl_snam/ (git renames, history preserved).
  • Rewrite every import site — 78 files → grl_snam.<module> (import grl_snam.sdf_nav as sdf_nav, from grl_snam.sdf_nav import …). Aliased imports (import material_nav as mnav) and a docstring reference are preserved; the surrogate_robust↔train_coef_energy try/except import cycle still resolves.
  • pyproject: drop the 5 top-level module includes (now covered by { include = "grl_snam" }); add them to the coverage omit list so the 80% gate scope is unchanged (they were outside the gate before, as top-level modules).

Verification

  • Every module imports; all .py compile.
  • Full test suite: 378 passed, 26 skipped, 0 failed (skips are the native-lib-gated parity tests; nothing regressed).

Pure move + import-rewrite — no behavior change.

sdf_nav / material_nav / train_coef_energy / eval_coef_energy / surrogate_robust
were top-level modules at the repo root, imported absolutely (import sdf_nav) by
the package + tests + scripts + experiments and shipped via explicit pyproject
py-module includes — a flat-layout legacy. Move all five under grl_snam/ and
rewrite every import site (78 files) to grl_snam.<module> (aliased imports and a
docstring reference preserved; the surrogate_robust<->train_coef_energy try/except
cycle survives). pyproject: drop the 5 top-level includes (now under the grl_snam
package); add them to the coverage omit list to keep the 80% gate scope unchanged.
Verified: all modules import, every .py compiles, and the full test suite passes
(378 passed, 26 skipped — the native-lib-gated ones).
Moving the five modules under grl_snam/ pulled them into the black+ruff gate (they
were unlinted at the repo root). Rather than carve them back out, bring them up to
standard: black-format all five, ruff --fix (44 auto-fixes: import sort, pyupgrade,
unused-import cleanup — noqa re-exports preserved), and drop two dead F841 unused
locals (surrogate_robust dev, train_coef_energy W) by hand. Lint now clean across the
whole grl_snam package with the five IN scope; full suite still 378 passed / 26 skipped.
The cp313 CI leg uses a newer black (its cvcpkg closure is mislaid -> pip-latest)
than cp312's pinned black; black 24.x formatting of the moved modules was rejected
by cp313's newer black. Reformat the three with black 26.x — verified accepted by
BOTH 26.5.1 and 24.10.0 (a fixed point across the matrix), ruff still clean,
AST-preserving so behavior is unchanged.
@transfix
transfix merged commit 9ec992a into main Sep 27, 2026
3 checks passed
@transfix
transfix deleted the refactor/flat-modules-into-package branch September 27, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant