Fix UnboundLocalError on the report-reuse path
The progress-reporter setup lived inside the generation branch; reuse skipped it but the success path still advanced the overall bar -> 'cannot access local variable progress_reporter'. Setup now runs for every path (reuse included). Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
7eb7b26786
commit
6f19719df2
@ -755,35 +755,39 @@ def _cmd_eval_run(args) -> int:
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass # unreadable/stale report: score normally
|
pass # unreadable/stale report: score normally
|
||||||
|
|
||||||
|
# progress reporter setup runs for EVERY path (report reuse
|
||||||
|
# included): the success path advances the overall bar even when
|
||||||
|
# nothing was generated -- previously this block lived inside the
|
||||||
|
# generation branch and reuse blew up with UnboundLocalError
|
||||||
|
progress_reporter = None
|
||||||
|
if args.progress and model_spec:
|
||||||
|
from evalharness.progress import PROGRESS_REGISTRY
|
||||||
|
|
||||||
|
_pname = getattr(args, 'progress_plugin', 'rich') \
|
||||||
|
if args.progress is True else args.progress
|
||||||
|
try:
|
||||||
|
_P = PROGRESS_REGISTRY.get(_pname)
|
||||||
|
except KeyError:
|
||||||
|
raise SystemExit(f'unknown progress plugin {_pname!r}; '
|
||||||
|
f'available: {", ".join(PROGRESS_REGISTRY.names())}')
|
||||||
|
if _P is not None:
|
||||||
|
# share ONE console: phase lines printed by another
|
||||||
|
# writer during the live bar interleave incorrectly.
|
||||||
|
# One reporter for the WHOLE run: overall bar (which
|
||||||
|
# benchmark) + sample bar (which sample), reused per
|
||||||
|
# benchmark via reset_samples().
|
||||||
|
if _shared_reporter is None and (
|
||||||
|
_pname == 'plain' or console.is_terminal):
|
||||||
|
# live bars only on a real terminal: through pipes
|
||||||
|
# (| grep, > log) rich's refresh thread misbehaves
|
||||||
|
# and stalls the run -- plain phases instead
|
||||||
|
_shared_reporter = _P(console=console)
|
||||||
|
_shared_reporter.owned_externally = True
|
||||||
|
progress_reporter = _shared_reporter
|
||||||
|
|
||||||
if report is None and model_spec: # generate + score in one go
|
if report is None and model_spec: # generate + score in one go
|
||||||
from evalharness.model import run_eval
|
from evalharness.model import run_eval
|
||||||
|
|
||||||
progress_reporter = None
|
|
||||||
if args.progress:
|
|
||||||
from evalharness.progress import PROGRESS_REGISTRY
|
|
||||||
|
|
||||||
_pname = getattr(args, 'progress_plugin', 'rich') \
|
|
||||||
if args.progress is True else args.progress
|
|
||||||
try:
|
|
||||||
_P = PROGRESS_REGISTRY.get(_pname)
|
|
||||||
except KeyError:
|
|
||||||
raise SystemExit(f'unknown progress plugin {_pname!r}; '
|
|
||||||
f'available: {", ".join(PROGRESS_REGISTRY.names())}')
|
|
||||||
if _P is not None:
|
|
||||||
# share ONE console: phase lines printed by another
|
|
||||||
# writer during the live bar interleave incorrectly.
|
|
||||||
# One reporter for the WHOLE run: overall bar (which
|
|
||||||
# benchmark) + sample bar (which sample), reused per
|
|
||||||
# benchmark via reset_samples().
|
|
||||||
if _shared_reporter is None and (
|
|
||||||
_pname == 'plain' or console.is_terminal):
|
|
||||||
# live bars only on a real terminal: through pipes
|
|
||||||
# (| grep, > log) rich's refresh thread misbehaves
|
|
||||||
# and stalls the run -- plain phases instead
|
|
||||||
_shared_reporter = _P(console=console)
|
|
||||||
_shared_reporter.owned_externally = True
|
|
||||||
progress_reporter = _shared_reporter
|
|
||||||
|
|
||||||
|
|
||||||
def status_callback(msg, _idx=i + 1, _name=name,
|
def status_callback(msg, _idx=i + 1, _name=name,
|
||||||
_reporter=progress_reporter,
|
_reporter=progress_reporter,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user