bitfab 0.64.7 → 0.64.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bitfab/labels.rb +36 -7
- data/lib/bitfab/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6999d067c0ee15b7098bd4a432de082c0993b403178de77fd3a71c00ec6d1558
|
|
4
|
+
data.tar.gz: 5fe41dfe83313ca0413369680a25aaf09244a25dd40944b7bb0bc035267e7cfd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 691bf9d5734641198986549b3888d0b488374a21fc58daf80d6afe2e19a803b6f8e76ccc7974cd4abe6969993ff6655a515384f73aeaa4e26a4044af6bc93f7d
|
|
7
|
+
data.tar.gz: bd9a1aa20a2fcf7937daacb44022e1f6b4211bda69f145e075c5ad16c408417e5571f948016901118be5cb211d094c11d7c349f4dca6ecf82ba7d011a6aeca26
|
data/lib/bitfab/labels.rb
CHANGED
|
@@ -14,8 +14,8 @@ module Bitfab
|
|
|
14
14
|
@http_client = http_client
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
def save(label:, annotation:, trace_id: nil, original_trace_id: nil, attempt: nil,
|
|
18
|
-
confidence: nil, experiment_id: nil,
|
|
17
|
+
def save(label:, annotation:, assertion_id:, trace_id: nil, original_trace_id: nil, attempt: nil,
|
|
18
|
+
confidence: nil, experiment_id: nil, evidence: EVIDENCE_UNSET, test_run_id: nil)
|
|
19
19
|
experiment_id = Bitfab.resolve_experiment_id(experiment_id, test_run_id)
|
|
20
20
|
update = label_target(trace_id:, original_trace_id:, attempt:, assertion_id:)
|
|
21
21
|
update["label"] = label
|
|
@@ -27,6 +27,7 @@ module Bitfab
|
|
|
27
27
|
|
|
28
28
|
def save_all(labels, experiment_id: nil, test_run_id: nil)
|
|
29
29
|
experiment_id = Bitfab.resolve_experiment_id(experiment_id, test_run_id)
|
|
30
|
+
require_assertion_ids(labels)
|
|
30
31
|
payload = {"labels" => labels}
|
|
31
32
|
unless experiment_id.nil?
|
|
32
33
|
payload["experimentId"] = experiment_id
|
|
@@ -35,7 +36,7 @@ module Bitfab
|
|
|
35
36
|
@http_client.request(LABELS_PATH, payload)["labels"]
|
|
36
37
|
end
|
|
37
38
|
|
|
38
|
-
def skip(trace_id: nil, original_trace_id: nil, attempt: nil, experiment_id: nil,
|
|
39
|
+
def skip(assertion_id:, trace_id: nil, original_trace_id: nil, attempt: nil, experiment_id: nil,
|
|
39
40
|
test_run_id: nil, annotation: nil)
|
|
40
41
|
experiment_id = Bitfab.resolve_experiment_id(experiment_id, test_run_id)
|
|
41
42
|
update = label_target(trace_id:, original_trace_id:, attempt:, assertion_id:).merge("skip" => true)
|
|
@@ -49,16 +50,15 @@ module Bitfab
|
|
|
49
50
|
save_all([update.merge("archive" => true)], experiment_id:).first
|
|
50
51
|
end
|
|
51
52
|
|
|
52
|
-
def save_human(label:, annotation:, trace_id:, confidence: nil,
|
|
53
|
-
|
|
54
|
-
update = {"traceId" => trace_id, "label" => label, "annotation" => annotation}
|
|
55
|
-
update["assertionId"] = assertion_id unless assertion_id.nil?
|
|
53
|
+
def save_human(label:, annotation:, trace_id:, assertion_id:, confidence: nil, evidence: EVIDENCE_UNSET)
|
|
54
|
+
update = {"traceId" => trace_id, "assertionId" => assertion_id, "label" => label, "annotation" => annotation}
|
|
56
55
|
update["confidence"] = confidence unless confidence.nil?
|
|
57
56
|
update["evidence"] = evidence unless evidence.equal?(EVIDENCE_UNSET)
|
|
58
57
|
save_human_all([update]).first
|
|
59
58
|
end
|
|
60
59
|
|
|
61
60
|
def save_human_all(labels)
|
|
61
|
+
require_human_assertion_ids(labels)
|
|
62
62
|
@http_client.request(HUMAN_LABELS_PATH, {"labels" => labels})["labels"]
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -83,6 +83,35 @@ module Bitfab
|
|
|
83
83
|
|
|
84
84
|
private
|
|
85
85
|
|
|
86
|
+
def require_assertion_ids(labels)
|
|
87
|
+
unscoped = labels.reject do |entry|
|
|
88
|
+
entry_value(entry, "archive") == true || !blank?(entry_value(entry, "assertionId"))
|
|
89
|
+
end
|
|
90
|
+
return if unscoped.empty?
|
|
91
|
+
|
|
92
|
+
targets = unscoped.map { |entry| entry_value(entry, "traceId") || entry_value(entry, "originalTraceId") }
|
|
93
|
+
raise ArgumentError, "Agent verdicts must name an assertion: #{targets.join(", ")}. " \
|
|
94
|
+
"Pass the assertion_id of the assertion each verdict scores to labels.save, save_all, and skip. " \
|
|
95
|
+
"Only archive may omit it, to clear an old whole-trace verdict."
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def require_human_assertion_ids(labels)
|
|
99
|
+
unscoped = labels.select { |entry| blank?(entry_value(entry, "assertionId")) }
|
|
100
|
+
return if unscoped.empty?
|
|
101
|
+
|
|
102
|
+
targets = unscoped.map { |entry| entry_value(entry, "traceId") }
|
|
103
|
+
raise ArgumentError, "Human verdicts must name an assertion: #{targets.join(", ")}. " \
|
|
104
|
+
"Pass the assertion_id of the assertion each verdict scores to labels.save_human and save_human_all."
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def entry_value(entry, key)
|
|
108
|
+
entry.key?(key) ? entry[key] : entry[key.to_sym]
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def blank?(value)
|
|
112
|
+
value.nil? || value.to_s.empty?
|
|
113
|
+
end
|
|
114
|
+
|
|
86
115
|
def label_target(trace_id:, original_trace_id:, attempt:, assertion_id:)
|
|
87
116
|
if trace_id.nil? == original_trace_id.nil?
|
|
88
117
|
raise ArgumentError, "Pass exactly one of trace_id or original_trace_id. " \
|
data/lib/bitfab/version.rb
CHANGED