Skip to content

Commit 20eed33

Browse files
committed
Add settag
1 parent c0d7723 commit 20eed33

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

src/MLFlowClient.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ export
7979
logparam,
8080
logmetric,
8181
logartifact,
82-
listartifacts
82+
listartifacts,
83+
settag
8384

8485
include("deprecated.jl")
8586

src/loggers.jl

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,36 @@
1+
"""
2+
settag(mlf::MLFlow, run, key, value)
3+
settag(mlf::MLFlow, run, kv)
4+
5+
Associates a tag (a key and a value) to the particular run.
6+
7+
Refer to [the official MLflow REST API
8+
docs](https://mlflow.org/docs/latest/rest-api.html#set-tag) for restrictions on
9+
`key` and `value`.
10+
11+
# Arguments
12+
- `mlf`: [`MLFlow`](@ref) configuration.
13+
- `run`: one of [`MLFlowRun`](@ref), [`MLFlowRunInfo`](@ref), or `String`.
14+
- `key`: tag key (name). Automatically converted to string before sending to MLFlow because this is the only type that MLFlow supports.
15+
- `value`: parameter value. Automatically converted to string before sending to MLFlow because this is the only type that MLFlow supports.
16+
17+
One could also specify `kv::Dict` instead of separate `key` and `value` arguments.
18+
"""
19+
function settag(mlf::MLFlow, run_id::String, key, value)
20+
endpoint ="runs/set-tag"
21+
mlfpost(mlf, endpoint; run_id=run_id, key=string(key), value=string(value))
22+
end
23+
settag(mlf::MLFlow, run_info::MLFlowRunInfo, key, value) =
24+
settag(mlf, run_info.run_id, key, value)
25+
settag(mlf::MLFlow, run::MLFlowRun, key, value) =
26+
settag(mlf, run.info, key, value)
27+
function settag(mlf::MLFlow, run::Union{String,MLFlowRun,MLFlowRunInfo}, kv)
28+
for (k, v) in kv
29+
logparam(mlf, run, k, v)
30+
end
31+
end
32+
33+
134
"""
235
logparam(mlf::MLFlow, run, key, value)
336
logparam(mlf::MLFlow, run, kv)

test/test_loggers.jl

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,41 @@
1+
@testset verbose = true "settag" begin
2+
@ensuremlf
3+
expname = "settag-$(UUIDs.uuid4())"
4+
e = getorcreateexperiment(mlf, expname)
5+
runname = "run-$(UUIDs.uuid4())"
6+
r = createrun(mlf, e.experiment_id)
7+
8+
@testset "settag_by_run_id_and_key_value" begin
9+
settag(mlf, r.info.run_id, "run_id_key_value", "test")
10+
retrieved_run = searchruns(mlf, e; filter="tags.run_id_key_value = 'test'")
11+
@test length(retrieved_run) == 1
12+
@test retrieved_run[1].info.run_id == r.info.run_id
13+
end
14+
15+
@testset "settag_by_run_info_and_key_value" begin
16+
settag(mlf, r.info, "run_id_key_value", "test")
17+
retrieved_run = searchruns(mlf, e; filter="tags.run_id_key_value = 'test'")
18+
@test length(retrieved_run) == 1
19+
@test retrieved_run[1].info.run_id == r.info.run_id
20+
end
21+
22+
@testset "settag_by_run_and_key_value" begin
23+
settag(mlf, r, "run_id_key_value", "test")
24+
retrieved_run = searchruns(mlf, e; filter="tags.run_id_key_value = 'test'")
25+
@test length(retrieved_run) == 1
26+
@test retrieved_run[1].info.run_id == r.info.run_id
27+
end
28+
29+
@testset "settag_by_union_and_dict_key_value" begin
30+
settag(mlf, r, Dict("run_id_key_value" => "test"))
31+
retrieved_run = searchruns(mlf, e; filter="tags.run_id_key_value = 'test'")
32+
@test length(retrieved_run) == 1
33+
@test retrieved_run[1].info.run_id == r.info.run_id
34+
end
35+
36+
deleteexperiment(mlf, e)
37+
end
38+
139
@testset verbose = true "logparam" begin
240
@ensuremlf
341
expname = "logparam-$(UUIDs.uuid4())"

0 commit comments

Comments
 (0)