Remove unused imports (F401) and duplicate/shadowed import redefinitions (F811) across the codebase using ruff's safe autofixes. No behavioral changes -- imports only. - ~1400 safe autofixes applied across 644 files (net -1072 lines) - __init__.py re-exports preserved (excluded from F401 removal so public re-export surfaces stay intact) - Re-exports that are imported or monkeypatched by tests but look unused in their defining module are kept with explicit # noqa: F401 (gateway/run.py load_dotenv; run_agent re-exports from agent.message_sanitization, agent.context_compressor, agent.retry_utils, agent.prompt_builder, agent.process_bootstrap, agent.codex_responses_adapter) - Unsafe F841 (unused-variable) fixes deliberately skipped -- those can change behavior when the RHS has side effects - ruff lints remain disabled in pyproject.toml (only PLW1514 is selected); this is a one-time cleanup, not a config change Verification: - python -m compileall: clean - pytest --collect-only: all 27161 tests collect (zero import errors) - core entry points import clean (run_agent, model_tools, cli, toolsets, hermes_state, batch_runner, gateway) - static scan: every name any test imports directly from an edited module still resolves
31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
"""Test that setup.py has shutil available for Matrix E2EE auto-install."""
|
|
import ast
|
|
|
|
|
|
|
|
def _parse_setup_imports():
|
|
"""Parse setup.py and return top-level import names."""
|
|
with open("hermes_cli/setup.py") as f:
|
|
tree = ast.parse(f.read())
|
|
names = set()
|
|
for node in ast.walk(tree):
|
|
if isinstance(node, ast.Import):
|
|
for alias in node.names:
|
|
names.add(alias.name)
|
|
elif isinstance(node, ast.ImportFrom):
|
|
for alias in node.names:
|
|
names.add(alias.name)
|
|
return names
|
|
|
|
|
|
class TestSetupShutilImport:
|
|
def test_shutil_imported_at_module_level(self):
|
|
"""shutil must be imported at module level so setup_gateway can use it
|
|
for the mautrix auto-install path."""
|
|
names = _parse_setup_imports()
|
|
assert "shutil" in names, (
|
|
"shutil is not imported at the top of hermes_cli/setup.py. "
|
|
"This causes a NameError when the Matrix E2EE auto-install "
|
|
"tries to call shutil.which('uv')."
|
|
)
|