mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-29 06:31:32 +00:00
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
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
"""Test that skills subparser doesn't conflict (regression test for #898)."""
|
|
|
|
import argparse
|
|
|
|
|
|
def test_no_duplicate_skills_subparser():
|
|
"""Ensure 'skills' subparser is only registered once to avoid Python 3.11+ crash.
|
|
|
|
Python 3.11 changed argparse to raise an exception on duplicate subparser
|
|
names instead of silently overwriting (see CPython #94331).
|
|
|
|
This test will fail with:
|
|
argparse.ArgumentError: argument command: conflicting subparser: skills
|
|
|
|
if the duplicate 'skills' registration is reintroduced.
|
|
"""
|
|
# Force fresh import of the module where parser is constructed
|
|
# If there are duplicate 'skills' subparsers, this import will raise
|
|
# argparse.ArgumentError at module load time
|
|
import sys
|
|
|
|
# Remove cached module if present
|
|
if 'hermes_cli.main' in sys.modules:
|
|
del sys.modules['hermes_cli.main']
|
|
|
|
try:
|
|
import hermes_cli.main # noqa: F401
|
|
except argparse.ArgumentError as e:
|
|
if "conflicting subparser" in str(e):
|
|
raise AssertionError(
|
|
f"Duplicate subparser detected: {e}. "
|
|
"See issue #898 for details."
|
|
) from e
|
|
raise
|