mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-07 08:02:23 +00:00
fix: re-export pruned names for tests that mock.patch or from-import them
The mechanical ruff prune in the previous commit removed several names that
`appear` unused inside their defining module but are external test/runtime
anchors:
run_agent
OpenAI, _SafeWriter
get_tool_definitions, handle_function_call, check_toolset_requirements
estimate_request_tokens_rough
DEFAULT_AGENT_IDENTITY, build_context_files_prompt,
build_environment_hints, build_nous_subscription_prompt
_is_destructive_command, _extract_parallel_scope_path, _paths_overlap,
_append_subdir_hint_to_multimodal, _trajectory_normalize_msg
tools/web_tools
Firecrawl, _get_firecrawl_client
These get accessed via four channels that are invisible to ruff's
in-module usage analysis:
1. `mock.patch('module.name', ...)` in tests — resolves the attribute
lazily, so `pytest --collect-only` passes even when the name is
gone, but every test using the patch fails at runtime with
AttributeError.
2. `from run_agent import X` in production siblings (agent/transports
/codex.py, etc.).
3. The `_ra().X` indirection pattern in agent/system_prompt.py et al.
— explicitly documented ("Many tests patch('run_agent.load_soul_md')")
to preserve the patch contract.
4. `from tools.web_tools import _get_firecrawl_client` in tests.
Each re-added import carries an explicit `# noqa: F401` with a comment
naming the channel, so future cleanup passes won't strip them again.
This commit is contained in:
parent
66827f8947
commit
e371bf5d68
2 changed files with 21 additions and 1 deletions
20
run_agent.py
20
run_agent.py
|
|
@ -66,6 +66,8 @@ from hermes_constants import get_hermes_home
|
||||||
# OpenAI lazy proxy + safe stdio + proxy URL helpers — see agent/process_bootstrap.py.
|
# OpenAI lazy proxy + safe stdio + proxy URL helpers — see agent/process_bootstrap.py.
|
||||||
# `OpenAI` is re-exported here so `patch("run_agent.OpenAI", ...)` in tests works.
|
# `OpenAI` is re-exported here so `patch("run_agent.OpenAI", ...)` in tests works.
|
||||||
from agent.process_bootstrap import (
|
from agent.process_bootstrap import (
|
||||||
|
OpenAI, # noqa: F401 # re-exported for tests that mock.patch("run_agent.OpenAI")
|
||||||
|
_SafeWriter, # noqa: F401 # re-exported for tests that `from run_agent import _SafeWriter`
|
||||||
_get_proxy_for_base_url,
|
_get_proxy_for_base_url,
|
||||||
)
|
)
|
||||||
from agent.iteration_budget import IterationBudget
|
from agent.iteration_budget import IterationBudget
|
||||||
|
|
@ -89,7 +91,10 @@ else:
|
||||||
|
|
||||||
# Import our tool system
|
# Import our tool system
|
||||||
from model_tools import (
|
from model_tools import (
|
||||||
|
get_tool_definitions, # noqa: F401 # re-exported for tests that mock.patch("run_agent.get_tool_definitions")
|
||||||
get_toolset_for_tool,
|
get_toolset_for_tool,
|
||||||
|
handle_function_call, # noqa: F401 # re-exported for tests that mock.patch("run_agent.handle_function_call")
|
||||||
|
check_toolset_requirements, # noqa: F401 # re-exported for tests that mock.patch("run_agent.check_toolset_requirements")
|
||||||
)
|
)
|
||||||
from tools.terminal_tool import cleanup_vm
|
from tools.terminal_tool import cleanup_vm
|
||||||
from tools.interrupt import set_interrupt as _set_interrupt
|
from tools.interrupt import set_interrupt as _set_interrupt
|
||||||
|
|
@ -101,13 +106,21 @@ from agent.memory_manager import sanitize_context
|
||||||
from agent.error_classifier import FailoverReason
|
from agent.error_classifier import FailoverReason
|
||||||
from agent.redact import redact_sensitive_text
|
from agent.redact import redact_sensitive_text
|
||||||
from agent.model_metadata import (
|
from agent.model_metadata import (
|
||||||
|
estimate_request_tokens_rough, # noqa: F401 # re-exported for tests that mock.patch("run_agent.estimate_request_tokens_rough")
|
||||||
is_local_endpoint,
|
is_local_endpoint,
|
||||||
)
|
)
|
||||||
from agent.usage_pricing import normalize_usage
|
from agent.usage_pricing import normalize_usage
|
||||||
# Re-exported for tests that monkeypatch these symbols on run_agent.
|
# Re-exported for tests that monkeypatch these symbols on run_agent.
|
||||||
from agent.context_compressor import ContextCompressor # noqa: F401
|
from agent.context_compressor import ContextCompressor # noqa: F401
|
||||||
from agent.retry_utils import jittered_backoff # noqa: F401
|
from agent.retry_utils import jittered_backoff # noqa: F401
|
||||||
from agent.prompt_builder import build_skills_system_prompt, load_soul_md # noqa: F401
|
from agent.prompt_builder import ( # noqa: F401 # re-exported via _ra() / mock.patch("run_agent.<name>") / from run_agent import <name>
|
||||||
|
DEFAULT_AGENT_IDENTITY,
|
||||||
|
build_skills_system_prompt,
|
||||||
|
build_context_files_prompt,
|
||||||
|
build_environment_hints,
|
||||||
|
build_nous_subscription_prompt,
|
||||||
|
load_soul_md,
|
||||||
|
)
|
||||||
from agent.process_bootstrap import _get_proxy_from_env # noqa: F401
|
from agent.process_bootstrap import _get_proxy_from_env # noqa: F401
|
||||||
from agent.message_sanitization import ( # noqa: F401
|
from agent.message_sanitization import ( # noqa: F401
|
||||||
_SURROGATE_RE,
|
_SURROGATE_RE,
|
||||||
|
|
@ -143,10 +156,15 @@ from agent.trajectory import (
|
||||||
)
|
)
|
||||||
from agent.tool_dispatch_helpers import (
|
from agent.tool_dispatch_helpers import (
|
||||||
_should_parallelize_tool_batch,
|
_should_parallelize_tool_batch,
|
||||||
|
_is_destructive_command, # noqa: F401 # re-exported for tests that access `run_agent._is_destructive_command`
|
||||||
|
_extract_parallel_scope_path, # noqa: F401 # re-exported for tests that `from run_agent import _extract_parallel_scope_path`
|
||||||
|
_paths_overlap, # noqa: F401 # re-exported for tests that `from run_agent import _paths_overlap`
|
||||||
_is_multimodal_tool_result,
|
_is_multimodal_tool_result,
|
||||||
_multimodal_text_summary,
|
_multimodal_text_summary,
|
||||||
|
_append_subdir_hint_to_multimodal, # noqa: F401 # re-exported for tests that `from run_agent import _append_subdir_hint_to_multimodal`
|
||||||
_extract_file_mutation_targets,
|
_extract_file_mutation_targets,
|
||||||
_extract_error_preview,
|
_extract_error_preview,
|
||||||
|
_trajectory_normalize_msg, # noqa: F401 # re-exported for tests that `from run_agent import _trajectory_normalize_msg`
|
||||||
)
|
)
|
||||||
from utils import atomic_json_write, base_url_host_matches, base_url_hostname
|
from utils import atomic_json_write, base_url_host_matches, base_url_hostname
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,9 @@ import httpx # noqa: F401 — kept at module top so tests can patch tools.web_t
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from firecrawl import Firecrawl # noqa: F401 — type hints only
|
from firecrawl import Firecrawl # noqa: F401 — type hints only
|
||||||
from plugins.web.firecrawl.provider import (
|
from plugins.web.firecrawl.provider import (
|
||||||
|
Firecrawl, # noqa: F401 # re-exported for tests that mock.patch("tools.web_tools.Firecrawl")
|
||||||
_firecrawl_backend_help_suffix,
|
_firecrawl_backend_help_suffix,
|
||||||
|
_get_firecrawl_client, # noqa: F401 # re-exported for tests that `from tools.web_tools import _get_firecrawl_client`
|
||||||
_get_firecrawl_gateway_url,
|
_get_firecrawl_gateway_url,
|
||||||
_is_tool_gateway_ready,
|
_is_tool_gateway_ready,
|
||||||
check_firecrawl_api_key,
|
check_firecrawl_api_key,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue