Skip to content

--latestで複数ファイルの更新待ちを並列化する - #1940

Merged
yuji38kwmt merged 2 commits into
mainfrom
codex/parallel-latest-downloads
Nov 1, 2026
Merged

yuji38kwmt merged 2 commits into
mainfrom
codex/parallel-latest-downloads

Conversation

@yuji38kwmt

@yuji38kwmt yuji38kwmt commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

input_data list_all_merged_task --latestなどで、ファイルごとに更新完了を待ってから次の更新を要求していたため、複数ファイルの生成待ち時間が積み重なっていました。

project update_download_filesの処理をDownloadingFileへ共通化し、必要な更新要求をすべて送信してから完了を待つようにしました。入力データ一覧、アノテーション一覧・集計、動画長、統計可視化、プロジェクト間比較と、対応する非推奨コマンドに適用しています。ローカルファイル指定や取得元に応じて更新対象を選び、完了後のダウンロードでは二重更新しません。

task list_all_with_statisticsでは、対象タスクが0件の場合に集計用ファイルを更新しない動作を維持し、タスク一覧の取得後に動画用のアノテーションZIPと入力データJSONを並列更新します。CLIの引数・出力形式は変更せず、ドキュメントの変更はありません。

検証:

  • 差分全体を自己レビューし、機密情報・非公開情報・個人情報の混入がないことを確認
  • make format / make lint成功
  • uv run pytest -n 2 -m 'not access_webapi': 2021 passed, 3 skipped
  • 待機前の全更新要求、更新回数、失敗時の中断、重複排除、ローカル指定時の対象除外、空タスク時の更新省略を確認

Copilot AI balanced review requested due to automatic review settings November 1, 2026 06:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

承認を妨げる未解決のレビュー指摘がないためです。

No open issues 🎉

What changed in this PR

--latest使用時に必要なファイルの更新要求を先にすべて送信し、Annofab側での生成を並列化する変更です。更新処理をDownloadingFileへ共通化し、各コマンドの待ち時間を短縮します。

変更内容:

  • 更新要求・完了待機・失敗集約を共通化し、更新済みファイルの二重更新を防止。
  • 入力データ一覧、アノテーション一覧・集計、動画長、統計可視化、プロジェクト間比較へ適用。ローカル指定や空タスク時の更新省略を維持。
  • 更新要求と待機の順序、重複排除、失敗時のダウンロード抑止、更新対象の選択を検証するテストを追加・拡充。
File Description
tests/​task/​test_list_all_with_statistics.py 入力種別・取得元別の更新対象と空タスク時の省略を検証。
tests/​statistics/​test_visualization_source_files.py 可視化用ファイルの更新順序と回数を検証。
tests/​input_data/​test_list_all_input_data_merged_task.py 一括更新の順序と失敗時のダウンロード抑止を検証。
tests/​common/​test_update_download_files.py 重複排除、待機設定、空の指定の拒否を検証。
tests/​annotation_zip/​test_sum_annotation_duration.py ローカル指定と--latestの組み合わせを検証。
tests/​annotation_zip/​test_diff_annotation.py 比較対象の一括更新と二重更新防止を検証。
annofabcli/​task/​list_all_with_statistics.py 動画用のアノテーションと入力データを並列更新。
annofabcli/​statistics/​visualize_video_duration.py 動画長可視化の入力データとタスクを並列更新。
annofabcli/​statistics/​visualization/​visualization_source_files.py 可視化に必要なファイルを指定の待機設定で一括更新。
annofabcli/​statistics/​list_video_duration.py 動画長一覧の入力データとタスクを並列更新。
annofabcli/​statistics/​list_annotation_duration.py アノテーションと入力データを並列更新。
annofabcli/​statistics/​list_annotation_count.py 入力データ単位の集計で必要なファイルを並列更新。
annofabcli/​project/​update_download_files.py プロジェクト数の検証を残し、更新処理を共通実装へ委譲。
annofabcli/​input_data/​list_all_input_data.py 親タスクIDを含める場合に入力データとタスクを並列更新。
annofabcli/​input_data/​list_all_input_data_merged_task.py 結合に使う入力データとタスクを並列更新。
annofabcli/​common/​video_duration.py 動画長コマンド共通の取得処理に並列更新を適用。
annofabcli/​common/​download.py 更新対象の型と一括更新・完了待機処理を共通化。
annofabcli/​annotation_zip/​sum_annotation_duration.py 区間長集計に必要なファイルを選択して一括更新。
annofabcli/​annotation_zip/​list_single_point_annotation.py 点一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_segmentation_annotation.py セグメンテーション一覧のメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_range_annotation.py 区間一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_polyline_annotation.py 折れ線一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_polygon_annotation.py ポリゴン一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_classification_annotation.py 分類一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_annotation_bounding_box_2d.py 2D矩形一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_annotation_attribute.py 属性一覧でローカル指定を考慮して並列更新。
annofabcli/​annotation_zip/​list_annotation_3d_segment.py 3D線分一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​list_annotation_3d_bounding_box.py 3D矩形一覧のタスクメタデータ取得時に並列更新。
annofabcli/​annotation_zip/​diff_annotation.py 比較対象プロジェクトのアノテーションを並列更新。
annofabcli/​annotation_zip/​count_annotation.py 集計条件に応じてタスクとアノテーションを並列更新。
annofabcli/​annotation_zip/​count_annotation_attribute_filled.py 属性入力状況の集計に必要なファイルを並列更新。

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 1, 2026 06:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

未解決のレビュー指摘が残っていないためです。

No open issues 🎉

Review effort: Balanced

@yuji38kwmt
yuji38kwmt merged commit 7c25696 into main Nov 1, 2026
8 checks passed
@yuji38kwmt
yuji38kwmt deleted the codex/parallel-latest-downloads branch November 1, 2026 06:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants