OpenBayes sets SWANLAB_PROJECT as a string; swanlab>=0.9 parses that as ProjectSettings and raises QuoteAwareEnvSettingsSource. Drop it, keep SWANLAB_PROJ_NAME, and share run-id extraction with train_k3.
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import os
|
|
|
|
from kda.training.swanlab_env import prepare_swanlab_env, swanlab_run_id
|
|
|
|
|
|
def test_prepare_drops_string_project(monkeypatch):
|
|
monkeypatch.setenv("SWANLAB_PROJECT", "kda")
|
|
monkeypatch.delenv("SWANLAB_PROJ_NAME", raising=False)
|
|
assert prepare_swanlab_env() == "kda"
|
|
assert "SWANLAB_PROJECT" not in os.environ
|
|
assert os.environ["SWANLAB_PROJ_NAME"] == "kda"
|
|
|
|
|
|
def test_prepare_strips_quotes(monkeypatch):
|
|
monkeypatch.setenv("SWANLAB_PROJECT", '"kda"')
|
|
monkeypatch.delenv("SWANLAB_PROJ_NAME", raising=False)
|
|
assert prepare_swanlab_env() == "kda"
|
|
assert "SWANLAB_PROJECT" not in os.environ
|
|
|
|
|
|
def test_prepare_prefers_proj_name(monkeypatch):
|
|
monkeypatch.setenv("SWANLAB_PROJECT", "ignored")
|
|
monkeypatch.setenv("SWANLAB_PROJ_NAME", "mine")
|
|
assert prepare_swanlab_env() == "mine"
|
|
assert os.environ["SWANLAB_PROJ_NAME"] == "mine"
|
|
|
|
|
|
def test_prepare_rejects_json_blob(monkeypatch):
|
|
monkeypatch.setenv("SWANLAB_PROJECT", '{"name": "x"}')
|
|
monkeypatch.delenv("SWANLAB_PROJ_NAME", raising=False)
|
|
assert prepare_swanlab_env() == "kda"
|
|
|
|
|
|
def test_swanlab_run_id():
|
|
class _Run:
|
|
id = "ilgne5ro"
|
|
|
|
assert swanlab_run_id(_Run()) == "ilgne5ro"
|
|
assert swanlab_run_id(object()) is None
|