chore: tighten upkeep boundaries and static checks
prd-number-check / require-numbered-prds (pull_request) Successful in 8s
test / integration-docker (pull_request) Successful in 12s
test / unit (pull_request) Successful in 49s
test / coverage (pull_request) Successful in 15s
tracker-policy-pr / check-pr (pull_request) Successful in 5s
test / integration-docker (push) Successful in 13s
test / unit (push) Successful in 48s
lint / lint (push) Successful in 56s
Update Quality Badges / update-badges (push) Successful in 50s
test / coverage (push) Successful in 13s

This commit was merged in pull request #491.
This commit is contained in:
2026-07-26 06:42:03 +00:00
parent 22dde95561
commit 7488110e71
7 changed files with 32 additions and 14 deletions
+6 -1
View File
@@ -11,7 +11,12 @@ import subprocess
from typing import Iterator
from ...log import die, info
from ...util import slugify
from ...util import slugify as _slugify
def slugify(name: str) -> str:
"""Compatibility wrapper; new generic callers import ``bot_bottle.util``."""
return _slugify(name)
def run_docker(
+8 -3
View File
@@ -67,11 +67,14 @@ class BottlePreparationPlanner:
def prepare(self, spec: BottleSpec) -> PreparedBottle:
backend = self._backend
manifest = backend._validate(spec)
# These are deliberately protected backend hooks: only this shared
# planner orchestrates them, while concrete backends provide the
# implementation.
manifest = backend._validate(spec) # pylint: disable=protected-access
if not backend.supports_nested_containers:
reject_nested_containers(backend.name, manifest)
backend._preflight()
backend._preflight() # pylint: disable=protected-access
manifest = GitGate().preflight_host_keys(
manifest,
headless=spec.headless,
@@ -98,7 +101,9 @@ class BottlePreparationPlanner:
state_dir=agent_dir,
instance_name=f"bot-bottle-{slug}",
prompt_file=prompt_file,
guest_env=backend._build_guest_env(resolved_env),
guest_env=backend._build_guest_env( # pylint: disable=protected-access
resolved_env
),
forward_host_credentials=provider_config.forward_host_credentials,
auth_token=provider_config.auth_token,
host_env=dict(os.environ),
+4 -1
View File
@@ -508,7 +508,10 @@ def _detail_view(
return "reject aborted (empty reason)"
def _modify(stdscr: "curses._CursesWindow", qp: QueuedProposal) -> str | None: # type: ignore # pragma: no cover
def _modify(
stdscr: "curses._CursesWindow", # type: ignore
qp: QueuedProposal,
) -> str | None: # pragma: no cover
"""Suspend curses, open $EDITOR on the proposed file, return edited content."""
suffix = _suffix_for_tool(qp.proposal.tool)
curses.endwin()
+5 -1
View File
@@ -16,7 +16,11 @@ def _path_matches(pm: PathMatch, request_path: str) -> bool:
if not pm.value.endswith("/"):
return request_path.startswith(pm.value + "/")
return request_path.startswith(pm.value)
return pm.type == "regex" and pm.compiled is not None and pm.compiled.search(request_path) is not None
return (
pm.type == "regex"
and pm.compiled is not None
and pm.compiled.search(request_path) is not None
)
def _entry_matches(
-2
View File
@@ -347,5 +347,3 @@ def load_config(text: str) -> "Config":
except YamlSubsetError as e:
raise ValueError(f"routes payload: invalid YAML: {e}") from e
return parse_config(payload)