Skip to content

Commit cad76dc

Browse files
Codex AgentBenWestgate
authored andcommitted
correction: Drop unused search plan fields
Every correction plan returned its target set, that same set as primary, an empty reduced set, and a true timed flag. Only the targets and primary set were consumed. Derive primary from targets at the call site and remove the other fields. The search engine also accepted reduced without reading it, so remove that argument and update its test and benchmark callers. Search order and capture accounting remain unchanged. Refs #46.
1 parent 115f2c2 commit cad76dc

5 files changed

Lines changed: 12 additions & 29 deletions

File tree

‎src/codex32/_cli_input.py‎

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -410,36 +410,24 @@ def _correction_plan(
410410
byte_length: int | Literal["?"] | None,
411411
count: int,
412412
target: int | None,
413-
) -> tuple[tuple[int, ...], frozenset[int], frozenset[int], bool]:
413+
) -> tuple[int, ...]:
414414
if target is not None:
415-
return (
416-
(target,),
417-
frozenset((target,)),
418-
frozenset(),
419-
True,
420-
)
415+
return (target,)
421416
normalized_hrp = hrp.value if isinstance(hrp, Profile) else hrp.lower()
422417
if normalized_hrp == Profile.CL.value:
423-
return (74,), frozenset((74,)), frozenset(), True
418+
return (74,)
424419
if isinstance(byte_length, int):
425-
return (
426-
((length := _text_length(byte_length)),),
427-
frozenset((length,)),
428-
frozenset(),
429-
True,
430-
)
420+
return (_text_length(byte_length),)
431421
if byte_length == "?":
432-
return TEXT_LENGTHS, frozenset(TEXT_LENGTHS), frozenset(), True
422+
return TEXT_LENGTHS
433423
if normalized_hrp == Profile.MS.value:
434424
nearest = min(_PRIMARY_MS, key=lambda length: abs(count - length))
435425
targets = (nearest, *(length for length in TEXT_LENGTHS if length != nearest))
436-
return targets, frozenset(targets), frozenset(), True
426+
return targets
437427
rules = _optional_profile_rules(normalized_hrp)
438428
if rules is not None and hasattr(rules, "text_length"):
439-
targets = (rules.text_length,)
440-
return targets, frozenset(targets), frozenset(), True
441-
targets = tuple(sorted({count + delta for delta in (*range(-4, 5), -8, 8)}))
442-
return targets, frozenset(targets), frozenset(), True
429+
return (rules.text_length,)
430+
return tuple(sorted({count + delta for delta in (*range(-4, 5), -8, 8)}))
443431

444432

445433
def _correction_candidates(
@@ -459,16 +447,15 @@ def _correction_candidates(
459447
optional_only: bool = False,
460448
) -> tuple[tuple[CorrectionCandidate, ...], bool, float]:
461449
count = len(value.replace(" ", ""))
462-
targets, primary, reduced, _timed = _correction_plan(profile, byte_length, count, target)
450+
targets = _correction_plan(profile, byte_length, count, target)
463451
deadline = monotonic() + 10 if deadline is None else deadline
464452
contexts = tuple(CorrectionContext(profile, length, immutable, excluded) for length in targets)
465453
from codex32.indel import _search_many
466454

467455
candidates, complete = _search_many(
468456
contexts,
469457
value,
470-
primary=primary,
471-
reduced=reduced,
458+
primary=frozenset(targets),
472459
deadline=deadline,
473460
competitors=True,
474461
allowed=allowed,

‎src/codex32/indel.py‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,6 @@ def _search_many(
552552
damaged_text: str,
553553
*,
554554
primary: frozenset[int],
555-
reduced: frozenset[int] = frozenset(),
556555
deadline: float | None = None,
557556
max_character_depth: int = 4,
558557
competitors: bool = False,

‎tests/test_cli.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1835,14 +1835,13 @@ def test_correction_options_control_lengths_deadline_and_search_envelope(
18351835
assert observed == damaged
18361836
assert tuple(context.expected_length for context in contexts) == lengths
18371837
assert (search.call_args.kwargs["deadline"] is not None) is bounded
1838-
assert search.call_args.kwargs["reduced"] == frozenset()
18391838

18401839

18411840
def test_automatic_target_selection_covers_midpoints_and_supported_lengths() -> None:
18421841
from codex32._cli_input import _correction_plan
18431842

18441843
for observed in range(40, 136):
1845-
targets = _correction_plan(Profile.MS, None, observed, None)[0]
1844+
targets = _correction_plan(Profile.MS, None, observed, None)
18461845
expected = 48 if observed <= 61 else 74 if observed <= 100 else 127
18471846

18481847
assert targets[0] == expected

‎tests/test_correction_indel.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def test_automatic_secondary_search_recovers_two_group_indels(
158158
damaged = _group_damage(source, inserted, omitted)
159159
contexts = tuple(
160160
CorrectionContext(Profile.MS, target, "ms1")
161-
for target in _correction_plan(Profile.MS, None, len(damaged), None)[0]
161+
for target in _correction_plan(Profile.MS, None, len(damaged), None)
162162
)
163163

164164
candidates, complete = _search_many(
@@ -507,7 +507,6 @@ def search(state, _frontier, results, _deadline): # type: ignore[no-untyped-def
507507
contexts,
508508
damaged,
509509
primary=frozenset((48, 74, 127)),
510-
reduced=frozenset((54, 61, 67)),
511510
)
512511
return calls
513512

‎tools/correction_benchmark.py‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ def benchmark_cross_length(observed_length: int, *, unknown: bool = False) -> di
108108
contexts,
109109
damaged,
110110
primary=frozenset((48, 74, 127)),
111-
reduced=frozenset() if unknown else frozenset((54, 61, 67)),
112111
)
113112
seconds = perf_counter() - started
114113
if not complete or candidates:

0 commit comments

Comments
 (0)