Declare this machine's GPUs from serve, and refuse a bad limit as a flag
GPU count is not detected, so FLOW_GPUS was 0 on a fresh install and a node asking for one was silently clamped to zero and ran concurrently with every other. Setting the variable serialised them, but it was an environment variable only — `serve` had --max-runs and --max-workers and no --gpus. The clamp warning now names the flag when nothing here declares a card. The same flags are written into the environment before the settings are built, so a value they refused died in a pydantic import naming no flag. They are checked where they are typed instead. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Hra4ndWMCLU5F3KjUuVAc
This commit is contained in:
@@ -520,6 +520,24 @@ def test_two_files_of_one_name_are_refused(tmp_path) -> None:
|
||||
_import(*_module_of(second), second)
|
||||
|
||||
|
||||
def test_a_serve_limit_is_refused_as_a_flag_not_as_a_traceback(capsys) -> None:
|
||||
"""These are written into the environment before the settings are built."""
|
||||
import pytest
|
||||
|
||||
from fluksio.cli import _parser
|
||||
|
||||
parser = _parser()
|
||||
assert parser.parse_args(["serve", "--max-workers", "2"]).max_workers == 2
|
||||
# A machine may genuinely have no card, so zero is a number here.
|
||||
assert parser.parse_args(["serve", "--gpus", "0"]).gpus == 0
|
||||
assert parser.parse_args(["serve"]).gpus is None
|
||||
|
||||
for flag, value in (("--max-workers", "0"), ("--gpus", "-1")):
|
||||
with pytest.raises(SystemExit):
|
||||
parser.parse_args(["serve", flag, value])
|
||||
assert "at least" in capsys.readouterr().err
|
||||
|
||||
|
||||
def test_run_and_sweep_take_what_to_sync() -> None:
|
||||
from fluksio.cli import _parser
|
||||
|
||||
|
||||
Reference in New Issue
Block a user