def test_prio_context_over_ignore(): s = Settings() s.update(project="pizza", _source=s.Source.ENTITY, _override=True) assert s.project == "pizza" with s._as_source(s.Source.PROJECT, override=True) as s2: s2.project = "pizza2" assert s.project == "pizza"
def test_prio_context_ok(): s = Settings() s.update(project="pizza", _source=s.Source.ENTITY) assert s.project == "pizza" with s._as_source(s.Source.PROJECT) as s2: s2.project = "pizza2" assert s.project == "pizza2"
def test_copy(): s = Settings() s.update(base_url="changed") s2 = copy.copy(s) assert s2.base_url == "changed" s.update(base_url="notchanged") assert s.base_url == "notchanged" assert s2.base_url == "changed"
def test_invalid_both(): s = Settings() with pytest.raises(KeyError): s.update(dict(project="ok"), invalid="new") assert s.project != "ok" with pytest.raises(KeyError): s.update(dict(wrong="bad", entity="nope"), project="okbutnotset") assert s.entity != "nope" assert s.project != "okbutnotset"
def test_validate_base_url(): s = Settings() with pytest.raises(TypeError): s.update(base_url="https://wandb.ai") with pytest.raises(TypeError): s.update(base_url="https://app.wandb.ai") with pytest.raises(TypeError): s.update(base_url="http://api.wandb.ai") s.update(base_url="https://api.wandb.ai") assert s.base_url == "https://api.wandb.ai" s.update(base_url="https://wandb.ai.other.crazy.domain.com") assert s.base_url == "https://wandb.ai.other.crazy.domain.com"
def test_freeze(): s = Settings() s.project = "goodprojo" assert s.project == "goodprojo" s.freeze() with pytest.raises(TypeError): s.project = "badprojo" assert s.project == "goodprojo" with pytest.raises(TypeError): s.update(project="badprojo2") assert s.project == "goodprojo" c = copy.copy(s) assert c.project == "goodprojo" c.project = "changed" assert c.project == "changed"
def test_preprocess_base_url(): s = Settings() s.update(base_url="http://host.com") assert s.base_url == "http://host.com" s.update(base_url="http://host.com/") assert s.base_url == "http://host.com" s.update(base_url="http://host.com///") assert s.base_url == "http://host.com" s.update(base_url="//http://host.com//") assert s.base_url == "//http://host.com"
def test_invalid_kwargs(): s = Settings() with pytest.raises(KeyError): s.update(invalid="new")
def test_update_both(): s = Settings() s.update(dict(base_url="somethingb"), project="nothing") assert s.base_url == "somethingb" assert s.project == "nothing"
def test_update_kwargs(): s = Settings() s.update(base_url="something") assert s.base_url == "something"
def test_update_dict(): s = Settings() s.update(dict(base_url="something2")) assert s.base_url == "something2"
def test_bad_choice(): s = Settings() with pytest.raises(TypeError): s.mode = "goodprojo" with pytest.raises(TypeError): s.update(mode="badpro")
def test_prio_update_over_ignore(): s = Settings() s.update(project="pizza", _source=s.Source.ENTITY, _override=True) assert s.project == "pizza" s.update(project="pizza2", _source=s.Source.PROJECT, _override=True) assert s.project == "pizza"
def test_prio_update_ignore(): s = Settings() s.update(project="pizza", _source=s.Source.PROJECT) assert s.project == "pizza" s.update(project="pizza2", _source=s.Source.ENTITY) assert s.project == "pizza"