Skip to content

Commit 8d56fc8

Browse files
committed
[Recording orcale] Fix get_task_quality_report
1 parent b0603dc commit 8d56fc8

File tree

1 file changed

+30
-5
lines changed
  • packages/examples/cvat/recording-oracle/src/cvat

1 file changed

+30
-5
lines changed

packages/examples/cvat/recording-oracle/src/cvat/api_calls.py

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,19 +76,38 @@ def compute_task_quality_report(
7676
raise Exception(f"Task({task_id}) quality report has not been created in time")
7777

7878

79+
def get_task(task_id: int) -> models.TaskRead:
80+
logger = logging.getLogger("app")
81+
with get_api_client() as api_client:
82+
try:
83+
task, _ = api_client.tasks_api.retrieve(task_id)
84+
return task
85+
86+
except exceptions.ApiException as ex:
87+
logger.exception(f"Exception when calling TaskApi.retrieve: {ex}\n")
88+
raise
89+
90+
7991
def get_task_quality_report(
8092
task_id: int,
8193
*,
8294
max_waiting_time: int = 10 * 60,
8395
sleep_interval: float = 0.5,
8496
) -> models.QualityReport:
8597
logger = logging.getLogger("app")
98+
8699
report = get_last_task_quality_report(task_id)
87-
if report and report.created_date > report.target_last_updated:
100+
101+
if (
102+
report
103+
# retrieving the task details to check if the latest quality report is actual
104+
# or not should be more effective than recreating quality report each time
105+
and get_task(task_id).updated_date <= report.target_last_updated
106+
):
88107
if logger.isEnabledFor(logging.DEBUG):
89108
logger.debug(
90109
f"The latest task({task_id}) quality report({report.id}) is actual. "
91-
"Do not recreate it."
110+
"Do not re-create it."
92111
)
93112
return report
94113

@@ -144,7 +163,7 @@ def update_task_validation_layout(
144163
task_id: int,
145164
*,
146165
disabled_frames: list[int],
147-
honeypot_real_frames: list[int],
166+
honeypot_real_frames: list[int] | None,
148167
) -> None:
149168
logger = logging.getLogger("app")
150169

@@ -154,8 +173,14 @@ def update_task_validation_layout(
154173
task_id,
155174
patched_task_validation_layout_write_request=models.PatchedTaskValidationLayoutWriteRequest(
156175
disabled_frames=disabled_frames,
157-
honeypot_real_frames=honeypot_real_frames,
158-
frame_selection_method=models.FrameSelectionMethod("manual"),
176+
**(
177+
{
178+
"honeypot_real_frames": honeypot_real_frames,
179+
"frame_selection_method": models.FrameSelectionMethod("manual"),
180+
}
181+
if honeypot_real_frames
182+
else {}
183+
),
159184
),
160185
)
161186
except exceptions.ApiException as ex:

0 commit comments

Comments
 (0)