annofabcli 1.99.0__py3-none-any.whl → 100.2__py3-none-any.whl
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.
- annofabcli/__version__.py +1 -1
- annofabcli/annotation/change_annotation_attributes.py +2 -2
- annofabcli/annotation_specs/add_attribute_restriction.py +158 -0
- annofabcli/annotation_specs/attribute_restriction.py +240 -0
- annofabcli/annotation_specs/list_annotation_specs_attribute.py +51 -33
- annofabcli/annotation_specs/list_annotation_specs_choice.py +42 -17
- annofabcli/annotation_specs/list_annotation_specs_label.py +26 -93
- annofabcli/annotation_specs/list_annotation_specs_label_attribute.py +220 -0
- annofabcli/annotation_specs/list_attribute_restriction.py +8 -209
- annofabcli/annotation_specs/subcommand_annotation_specs.py +4 -0
- annofabcli/common/annofab/annotation_specs.py +25 -0
- annofabcli/common/download.py +1 -1
- annofabcli/common/exceptions.py +2 -2
- annofabcli/common/facade.py +2 -2
- annofabcli/common/image.py +2 -2
- annofabcli/input_data/delete_input_data.py +6 -7
- annofabcli/job/delete_job.py +4 -4
- annofabcli/organization_member/list_organization_member.py +2 -3
- annofabcli/project_member/change_project_members.py +2 -3
- annofabcli/project_member/drop_project_members.py +8 -8
- annofabcli/project_member/invite_project_members.py +5 -6
- annofabcli/project_member/list_users.py +4 -4
- annofabcli/task/complete_tasks.py +2 -2
- annofabcli/task/reject_tasks.py +76 -100
- annofabcli/task/update_metadata_of_task.py +1 -1
- annofabcli/task_history/list_task_history.py +1 -1
- {annofabcli-1.99.0.dist-info → annofabcli-100.2.dist-info}/METADATA +1 -1
- {annofabcli-1.99.0.dist-info → annofabcli-100.2.dist-info}/RECORD +31 -27
- {annofabcli-1.99.0.dist-info → annofabcli-100.2.dist-info}/LICENSE +0 -0
- {annofabcli-1.99.0.dist-info → annofabcli-100.2.dist-info}/WHEEL +0 -0
- {annofabcli-1.99.0.dist-info → annofabcli-100.2.dist-info}/entry_points.txt +0 -0
annofabcli/task/reject_tasks.py
CHANGED
|
@@ -27,7 +27,6 @@ from annofabcli.common.cli import (
|
|
|
27
27
|
)
|
|
28
28
|
from annofabcli.common.enums import CustomProjectType
|
|
29
29
|
from annofabcli.common.facade import AnnofabApiFacade, TaskQuery, match_task_with_query
|
|
30
|
-
from annofabcli.common.utils import add_dryrun_prefix
|
|
31
30
|
|
|
32
31
|
logger = logging.getLogger(__name__)
|
|
33
32
|
|
|
@@ -39,12 +38,12 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
39
38
|
self.comment_data = comment_data
|
|
40
39
|
CommandLineWithConfirm.__init__(self, all_yes)
|
|
41
40
|
|
|
42
|
-
def add_inspection_comment(
|
|
41
|
+
def add_inspection_comment(
|
|
43
42
|
self,
|
|
44
43
|
project_id: str,
|
|
45
44
|
task: dict[str, Any],
|
|
46
45
|
inspection_comment: str,
|
|
47
|
-
):
|
|
46
|
+
) -> None:
|
|
48
47
|
"""
|
|
49
48
|
検査コメントを付与する。
|
|
50
49
|
|
|
@@ -53,9 +52,6 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
53
52
|
task:
|
|
54
53
|
inspection_comment:
|
|
55
54
|
|
|
56
|
-
Returns:
|
|
57
|
-
更新した検査コメントの一覧
|
|
58
|
-
|
|
59
55
|
"""
|
|
60
56
|
first_input_data_id = task["input_data_id_list"][0]
|
|
61
57
|
|
|
@@ -72,14 +68,14 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
72
68
|
}
|
|
73
69
|
]
|
|
74
70
|
|
|
75
|
-
|
|
71
|
+
self.service.api.batch_update_comments(project_id, task["task_id"], first_input_data_id, request_body=req_inspection)
|
|
76
72
|
|
|
77
73
|
def confirm_reject_task(self, task_id: str, assign_last_annotator: bool, assigned_annotator_user_id: Optional[str]) -> bool: # noqa: FBT001
|
|
78
|
-
confirm_message = f"task_id
|
|
74
|
+
confirm_message = f"task_id='{task_id}' のタスクを差し戻しますか?"
|
|
79
75
|
if assign_last_annotator:
|
|
80
|
-
confirm_message += "
|
|
76
|
+
confirm_message += "最後の教師付フェーズの担当者を割り当てます。"
|
|
81
77
|
elif assigned_annotator_user_id is not None:
|
|
82
|
-
confirm_message += f"
|
|
78
|
+
confirm_message += f"user_id='{assigned_annotator_user_id}'のユーザーを担当者に割り当てます。"
|
|
83
79
|
else:
|
|
84
80
|
confirm_message += "担当者は割り当てません。"
|
|
85
81
|
|
|
@@ -99,50 +95,53 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
99
95
|
|
|
100
96
|
task_id = task["task_id"]
|
|
101
97
|
last_updated_datetime = task["updated_datetime"]
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
logger.debug(f"{task_id}: 担当者を自分自身に変更しました。")
|
|
112
|
-
|
|
113
|
-
changed_task = self.service.wrapper.change_task_status_to_working(project_id, task_id, last_updated_datetime=last_updated_datetime)
|
|
114
|
-
return changed_task # noqa: TRY300
|
|
98
|
+
if task["account_id"] != self.service.api.account_id:
|
|
99
|
+
_task = self.service.wrapper.change_task_operator(
|
|
100
|
+
project_id,
|
|
101
|
+
task_id,
|
|
102
|
+
operator_account_id=self.service.api.account_id,
|
|
103
|
+
last_updated_datetime=last_updated_datetime,
|
|
104
|
+
)
|
|
105
|
+
last_updated_datetime = _task["updated_datetime"]
|
|
106
|
+
logger.debug(f"task_id='{task_id}'のタスクの担当者を自分自身に変更しました。")
|
|
115
107
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
108
|
+
changed_task = self.service.wrapper.change_task_status_to_working(project_id, task_id, last_updated_datetime=last_updated_datetime)
|
|
109
|
+
logger.debug(f"task_id='{task_id}'のタスクのステータスを作業中に変更しました。")
|
|
110
|
+
return changed_task
|
|
119
111
|
|
|
120
|
-
def _can_reject_task(
|
|
112
|
+
def _can_reject_task(
|
|
121
113
|
self,
|
|
122
114
|
task: dict[str, Any],
|
|
123
|
-
|
|
115
|
+
*,
|
|
116
|
+
assign_last_annotator: bool,
|
|
124
117
|
assigned_annotator_user_id: Optional[str],
|
|
125
|
-
cancel_acceptance: bool = False,
|
|
118
|
+
cancel_acceptance: bool = False,
|
|
126
119
|
task_query: Optional[TaskQuery] = None,
|
|
127
|
-
):
|
|
120
|
+
) -> bool:
|
|
121
|
+
"""
|
|
122
|
+
以下の状態を見て、差し戻し可能かどうかを判断します。
|
|
123
|
+
* タスクのフェーズやステータス
|
|
124
|
+
* `--task_query`の条件にマッチするかどうか
|
|
125
|
+
* 差し戻しの確認メッセージに対して、ユーザがOKしたかどうか
|
|
126
|
+
"""
|
|
128
127
|
task_id = task["task_id"]
|
|
129
128
|
if task["phase"] == TaskPhase.ANNOTATION.value:
|
|
130
|
-
logger.warning(f"task_id
|
|
129
|
+
logger.warning(f"task_id='{task_id}' :: 教師付フェーズのため、差し戻しできません。")
|
|
131
130
|
return False
|
|
132
131
|
|
|
133
132
|
if task["status"] == TaskStatus.WORKING.value:
|
|
134
|
-
logger.warning(f"task_id
|
|
133
|
+
logger.warning(f"task_id='{task_id}' :: タスクのstatusが'作業中'なので、差し戻しできません。")
|
|
135
134
|
return False
|
|
136
135
|
|
|
137
136
|
if task["status"] == TaskStatus.COMPLETE.value and not cancel_acceptance:
|
|
138
137
|
logger.warning(
|
|
139
|
-
f"task_id
|
|
138
|
+
f"task_id='{task_id}' :: タスクのstatusが'完了'なので、差し戻しできません。"
|
|
140
139
|
f"受入完了を取消す場合は、コマンドライン引数に'--cancel_acceptance'を追加してください。"
|
|
141
140
|
)
|
|
142
141
|
return False
|
|
143
142
|
|
|
144
143
|
if not match_task_with_query(Task.from_dict(task), task_query):
|
|
145
|
-
logger.debug(f"task_id
|
|
144
|
+
logger.debug(f"task_id='{task_id}' : `--task_query`の条件にマッチしないため、スキップします。 :: task_query='{task_query}'")
|
|
146
145
|
return False
|
|
147
146
|
|
|
148
147
|
if not self.confirm_reject_task(task_id, assign_last_annotator=assign_last_annotator, assigned_annotator_user_id=assigned_annotator_user_id): # noqa: SIM103
|
|
@@ -150,29 +149,20 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
150
149
|
|
|
151
150
|
return True
|
|
152
151
|
|
|
153
|
-
def _cancel_acceptance(self, task: dict[str, Any]) -> dict[str, Any]:
|
|
154
|
-
request_body = {
|
|
155
|
-
"status": "not_started",
|
|
156
|
-
"account_id": self.service.api.account_id,
|
|
157
|
-
"last_updated_datetime": task["updated_datetime"],
|
|
158
|
-
}
|
|
159
|
-
content, _ = self.service.api.operate_task(task["project_id"], task["task_id"], request_body=request_body)
|
|
160
|
-
return content
|
|
161
|
-
|
|
162
152
|
def reject_task_with_adding_comment(
|
|
163
153
|
self,
|
|
164
154
|
project_id: str,
|
|
165
155
|
task_id: str,
|
|
156
|
+
*,
|
|
166
157
|
inspection_comment: Optional[str] = None,
|
|
167
|
-
assign_last_annotator: bool = True,
|
|
158
|
+
assign_last_annotator: bool = True,
|
|
168
159
|
assigned_annotator_user_id: Optional[str] = None,
|
|
169
|
-
cancel_acceptance: bool = False,
|
|
160
|
+
cancel_acceptance: bool = False,
|
|
170
161
|
task_query: Optional[TaskQuery] = None,
|
|
171
162
|
task_index: Optional[int] = None,
|
|
172
|
-
dryrun: bool = False, # noqa: FBT001, FBT002
|
|
173
163
|
) -> bool:
|
|
174
164
|
"""
|
|
175
|
-
|
|
165
|
+
タスクを差し戻します。
|
|
176
166
|
|
|
177
167
|
Args:
|
|
178
168
|
project_id:
|
|
@@ -185,36 +175,14 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
185
175
|
タスクを差し戻したかどうか
|
|
186
176
|
"""
|
|
187
177
|
|
|
188
|
-
def _add_inspection_comment(task: dict[str, Any], inspection_comment: str) -> dict[str, Any]:
|
|
189
|
-
# 検査コメントを付与する
|
|
190
|
-
if not dryrun:
|
|
191
|
-
# 検査コメントを付与するには「作業中」状態にする必要があるので、担当者を自分自身に変更して作業中状態にする
|
|
192
|
-
task = self.change_to_working_status(project_id, task)
|
|
193
|
-
|
|
194
|
-
try:
|
|
195
|
-
self.add_inspection_comment(project_id, task, inspection_comment)
|
|
196
|
-
# 作業時間が増えすぎないようにするため、すぐに休憩中状態にする
|
|
197
|
-
task = self.service.wrapper.change_task_status_to_break(project_id, task_id, last_updated_datetime=task["updated_datetime"])
|
|
198
|
-
logger.debug(f"{logging_prefix} : task_id = {task_id}, 検査コメントを付与しました。")
|
|
199
|
-
return task # noqa: TRY300
|
|
200
|
-
except requests.exceptions.HTTPError:
|
|
201
|
-
logger.warning(f"{logging_prefix} : task_id = {task_id} 検査コメントの付与に失敗しました。", exc_info=True)
|
|
202
|
-
# 作業時間が増えすぎないようにするため、すぐに休憩中状態にする
|
|
203
|
-
self.service.wrapper.change_task_status_to_break(project_id, task_id, last_updated_datetime=task["updated_datetime"])
|
|
204
|
-
raise
|
|
205
|
-
else:
|
|
206
|
-
task, _ = self.service.api.get_task(project_id, task_id)
|
|
207
|
-
logger.debug(f"{logging_prefix} : task_id = {task_id}, 検査コメントを付与しました。")
|
|
208
|
-
return task
|
|
209
|
-
|
|
210
178
|
logging_prefix = f"{task_index + 1} 件目" if task_index is not None else ""
|
|
211
179
|
|
|
212
180
|
task = self.service.wrapper.get_task_or_none(project_id, task_id)
|
|
213
181
|
if task is None:
|
|
214
|
-
logger.warning(f"{logging_prefix}
|
|
182
|
+
logger.warning(f"{logging_prefix} :: task_id='{task_id}'のタスクをは存在しないので、スキップします。")
|
|
215
183
|
return False
|
|
216
184
|
|
|
217
|
-
logger.debug(f"{logging_prefix}
|
|
185
|
+
logger.debug(f"{logging_prefix} :: task_id='{task['task_id']}', status='{task['status']}', phase='{task['phase']}'")
|
|
218
186
|
|
|
219
187
|
if not self._can_reject_task(
|
|
220
188
|
task=task,
|
|
@@ -225,19 +193,27 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
225
193
|
):
|
|
226
194
|
return False
|
|
227
195
|
|
|
228
|
-
if task["status"] == TaskStatus.COMPLETE.value and cancel_acceptance
|
|
229
|
-
task = self.
|
|
196
|
+
if task["status"] == TaskStatus.COMPLETE.value and cancel_acceptance:
|
|
197
|
+
task = self.service.wrapper.cancel_completed_task(
|
|
198
|
+
project_id, task_id, operator_account_id=self.service.api.account_id, last_updated_datetime=task["updated_datetime"]
|
|
199
|
+
)
|
|
200
|
+
logger.debug(f"{logging_prefix} :: task_id='{task_id}'のタスクに対して受入取消を実施(完了状態から未着手状態に変更)しました。")
|
|
230
201
|
|
|
231
|
-
if inspection_comment is not None:
|
|
232
|
-
task = _add_inspection_comment(task, inspection_comment)
|
|
233
202
|
try:
|
|
234
|
-
if not
|
|
235
|
-
#
|
|
236
|
-
|
|
237
|
-
|
|
203
|
+
if inspection_comment is not None:
|
|
204
|
+
# タスクを作業中状態にして、検査コメントを付与できる状態にする
|
|
205
|
+
task = self.change_to_working_status(project_id, task)
|
|
206
|
+
# 検査コメントを付与する
|
|
207
|
+
self.add_inspection_comment(project_id, task, inspection_comment)
|
|
208
|
+
logger.debug(f"{logging_prefix} :: task_id='{task_id}'のタスクに検査コメントを付与しました。")
|
|
209
|
+
|
|
210
|
+
# `reject_task`の`force`引数について
|
|
211
|
+
# 検査コメントを付与しない場合は、強制差し戻しが必要なのでTrueを指定する
|
|
212
|
+
# 検査コメントを付与する場合は、 強制差し戻しは不要。チェッカーロールでも実行できるようにするため、Falseにする
|
|
213
|
+
self.service.wrapper.reject_task(project_id, task_id, force=(inspection_comment is None), last_updated_datetime=task["updated_datetime"])
|
|
238
214
|
|
|
239
215
|
if assign_last_annotator:
|
|
240
|
-
logger.
|
|
216
|
+
logger.debug(f"{logging_prefix} :: task_id='{task_id}' のタスクを差し戻しました。タスクの担当者は直前の教師付フェーズの担当者です。")
|
|
241
217
|
return True
|
|
242
218
|
|
|
243
219
|
else:
|
|
@@ -247,14 +223,21 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
247
223
|
else None
|
|
248
224
|
)
|
|
249
225
|
|
|
250
|
-
|
|
251
|
-
self.service.wrapper.change_task_operator(project_id, task_id, operator_account_id=assigned_annotator_account_id)
|
|
226
|
+
self.service.wrapper.change_task_operator(project_id, task_id, operator_account_id=assigned_annotator_account_id)
|
|
252
227
|
|
|
253
|
-
logger.
|
|
228
|
+
logger.debug(f"{logging_prefix} :: task_id='{task_id}' のタスクを差し戻しました。タスクの担当者: '{assigned_annotator_user_id}'")
|
|
254
229
|
return True
|
|
255
230
|
|
|
256
231
|
except requests.exceptions.HTTPError:
|
|
257
|
-
logger.warning(f"{logging_prefix} : task_id
|
|
232
|
+
logger.warning(f"{logging_prefix} : task_id='{task_id}'のタスクの差し戻しに失敗しました。", exc_info=True)
|
|
233
|
+
|
|
234
|
+
task, _ = self.service.api.get_task(project_id, task_id)
|
|
235
|
+
assert task is not None
|
|
236
|
+
# 作業中状態のまま放置すると、作業時間が超過してしまうため、休憩状態にする
|
|
237
|
+
if task["status"] == TaskStatus.WORKING.value:
|
|
238
|
+
self.service.wrapper.change_task_status_to_break(project_id, task_id, last_updated_datetime=task["updated_datetime"])
|
|
239
|
+
logger.debug(f"{logging_prefix} :: task_id='{task_id}' のタスクを休憩状態に戻しました。")
|
|
240
|
+
|
|
258
241
|
return False
|
|
259
242
|
|
|
260
243
|
def reject_task_for_task_wrapper(
|
|
@@ -266,7 +249,6 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
266
249
|
assigned_annotator_user_id: Optional[str] = None,
|
|
267
250
|
cancel_acceptance: bool = False, # noqa: FBT001, FBT002
|
|
268
251
|
task_query: Optional[TaskQuery] = None,
|
|
269
|
-
dryrun: bool = False, # noqa: FBT001, FBT002
|
|
270
252
|
) -> bool:
|
|
271
253
|
task_index, task_id = tpl
|
|
272
254
|
try:
|
|
@@ -279,7 +261,6 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
279
261
|
assigned_annotator_user_id=assigned_annotator_user_id,
|
|
280
262
|
cancel_acceptance=cancel_acceptance,
|
|
281
263
|
task_query=task_query,
|
|
282
|
-
dryrun=dryrun,
|
|
283
264
|
)
|
|
284
265
|
except Exception: # pylint: disable=broad-except
|
|
285
266
|
logger.warning(f"タスク'{task_id}'の差し戻しに失敗しました。", exc_info=True)
|
|
@@ -295,7 +276,6 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
295
276
|
cancel_acceptance: bool = False, # noqa: FBT001, FBT002
|
|
296
277
|
task_query: Optional[TaskQuery] = None,
|
|
297
278
|
parallelism: Optional[int] = None,
|
|
298
|
-
dryrun: bool = False, # noqa: FBT001, FBT002
|
|
299
279
|
) -> None:
|
|
300
280
|
if task_query is not None:
|
|
301
281
|
task_query = self.facade.set_account_id_of_task_query(project_id, task_query)
|
|
@@ -311,7 +291,6 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
311
291
|
assigned_annotator_user_id=assigned_annotator_user_id,
|
|
312
292
|
cancel_acceptance=cancel_acceptance,
|
|
313
293
|
task_query=task_query,
|
|
314
|
-
dryrun=dryrun,
|
|
315
294
|
)
|
|
316
295
|
with multiprocessing.Pool(parallelism) as pool:
|
|
317
296
|
result_bool_list = pool.map(partial_func, enumerate(task_id_list))
|
|
@@ -331,7 +310,6 @@ class RejectTasksMain(CommandLineWithConfirm):
|
|
|
331
310
|
assigned_annotator_user_id=assigned_annotator_user_id,
|
|
332
311
|
cancel_acceptance=cancel_acceptance,
|
|
333
312
|
task_query=task_query,
|
|
334
|
-
dryrun=dryrun,
|
|
335
313
|
)
|
|
336
314
|
if result:
|
|
337
315
|
success_count += 1
|
|
@@ -360,13 +338,14 @@ class RejectTasks(CommandLine):
|
|
|
360
338
|
if not self.validate(args):
|
|
361
339
|
sys.exit(COMMAND_LINE_ERROR_STATUS_CODE)
|
|
362
340
|
|
|
363
|
-
if args.dryrun:
|
|
364
|
-
add_dryrun_prefix(logger)
|
|
365
|
-
|
|
366
341
|
task_id_list = annofabcli.common.cli.get_list_from_args(args.task_id)
|
|
367
342
|
assign_last_annotator = not args.not_assign and args.assigned_annotator_user_id is None
|
|
368
343
|
|
|
369
|
-
|
|
344
|
+
if not args.cancel_acceptance and args.comment is not None:
|
|
345
|
+
# 受入取消を実施しない AND 検査コメントを付与する場合はチェッカーロールでも実行できる
|
|
346
|
+
super().validate_project(args.project_id, [ProjectMemberRole.OWNER, ProjectMemberRole.ACCEPTER])
|
|
347
|
+
else:
|
|
348
|
+
super().validate_project(args.project_id, [ProjectMemberRole.OWNER])
|
|
370
349
|
|
|
371
350
|
dict_task_query = annofabcli.common.cli.get_json_from_args(args.task_query)
|
|
372
351
|
task_query: Optional[TaskQuery] = TaskQuery.from_dict(dict_task_query) if dict_task_query is not None else None
|
|
@@ -405,7 +384,6 @@ class RejectTasks(CommandLine):
|
|
|
405
384
|
cancel_acceptance=args.cancel_acceptance,
|
|
406
385
|
task_query=task_query,
|
|
407
386
|
parallelism=args.parallelism,
|
|
408
|
-
dryrun=args.dryrun,
|
|
409
387
|
)
|
|
410
388
|
|
|
411
389
|
|
|
@@ -474,7 +452,6 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
|
|
|
474
452
|
choices=PARALLELISM_CHOICES,
|
|
475
453
|
help="使用するプロセス数(並列度)を指定してください。指定する場合は必ず ``--yes`` を指定してください。指定しない場合は、逐次的に処理します。", # noqa: E501
|
|
476
454
|
)
|
|
477
|
-
parser.add_argument("--dryrun", action="store_true", help="差し戻しが行われた時の結果を表示しますが、実際はタスクを差し戻しません。")
|
|
478
455
|
|
|
479
456
|
parser.set_defaults(subcommand_func=main)
|
|
480
457
|
|
|
@@ -482,12 +459,11 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
|
|
|
482
459
|
def add_parser(subparsers: Optional[argparse._SubParsersAction] = None) -> argparse.ArgumentParser:
|
|
483
460
|
subcommand_name = "reject"
|
|
484
461
|
subcommand_help = "タスクを差し戻します。"
|
|
485
|
-
description =
|
|
486
|
-
|
|
487
|
-
"
|
|
488
|
-
"
|
|
462
|
+
description = "タスクを差し戻します。差し戻す際、検査コメントを付与することもできます。作業中状態のタスクに対しては差し戻せません。"
|
|
463
|
+
epilog = (
|
|
464
|
+
"オーナロールを持つユーザで実行してください。"
|
|
465
|
+
"``--cancel_acceptance`` を指定していない AND ``--comment`` を指定している場合は、チェッカーロールを持つユーザーも実行できます。"
|
|
489
466
|
)
|
|
490
|
-
epilog = "オーナロールを持つユーザで実行してください。"
|
|
491
467
|
|
|
492
468
|
parser = annofabcli.common.cli.add_parser(subparsers, subcommand_name, subcommand_help, description, epilog=epilog)
|
|
493
469
|
parse_args(parser)
|
|
@@ -259,7 +259,7 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
|
|
|
259
259
|
parser.add_argument(
|
|
260
260
|
"--overwrite",
|
|
261
261
|
action="store_true",
|
|
262
|
-
help="指定した場合、メタデータを上書きして更新します(すでに設定されているメタデータは削除されます)。指定しない場合、 ``--metadata`` に指定されたキーのみ更新されます。", # noqa: E501
|
|
262
|
+
help="指定した場合、メタデータを上書きして更新します(すでに設定されているメタデータは削除されます)。指定しない場合、 ``--metadata`` に指定されたキーのみ更新されます。 ``--yes`` と一緒に指定すると、処理時間は大幅に短くなります。", # noqa: E501
|
|
263
263
|
)
|
|
264
264
|
|
|
265
265
|
parser.add_argument(
|
|
@@ -42,7 +42,7 @@ class ListTaskHistoryMain:
|
|
|
42
42
|
logger.info(f"{task_index + 1} 件のタスクの履歴情報を取得しました。")
|
|
43
43
|
if task_history_list is not None:
|
|
44
44
|
if len(task_history_list) == 0:
|
|
45
|
-
logger.debug(f"task_id='{task_id}
|
|
45
|
+
logger.debug(f"task_id='{task_id}'の履歴情報は0件でした。")
|
|
46
46
|
task_history_dict[task_id] = task_history_list
|
|
47
47
|
else:
|
|
48
48
|
logger.warning(f"task_id='{task_id}'のタスク履歴は見つかりませんでした。")
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
annofabcli/__init__.py,sha256=NMA7kFxmLlCiILQPHJa9mEuqXxtLALw_dwyXYsvz4VM,71
|
|
2
2
|
annofabcli/__main__.py,sha256=JzfycqVG9ENhWOCxTouZwpHwWTSrI-grLsaMudxjyBM,5283
|
|
3
|
-
annofabcli/__version__.py,sha256=
|
|
3
|
+
annofabcli/__version__.py,sha256=Zf6jptBnhNJPjSKOJvXlAM7MrEmW-Z5EtTA-wLPYOmo,131
|
|
4
4
|
annofabcli/annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
annofabcli/annotation/annotation_query.py,sha256=ke3W3RT1-WfFzwt-TXcQwGmghG34vcKJkM_jxgbNKjU,15922
|
|
6
|
-
annofabcli/annotation/change_annotation_attributes.py,sha256=
|
|
6
|
+
annofabcli/annotation/change_annotation_attributes.py,sha256=sNH2CDNATdPGyE5fELj-ddeyEWb55PmKG8qJD1gjocg,17177
|
|
7
7
|
annofabcli/annotation/change_annotation_properties.py,sha256=Q9uaVSokjtHT0JhEHn22kcKBBqleopPMVOrtbFPOrw0,18386
|
|
8
8
|
annofabcli/annotation/copy_annotation.py,sha256=j1COCdUj7-VyWZG8q8UrWMbzmWi6ofnW20EnT1GPx04,18201
|
|
9
9
|
annofabcli/annotation/delete_annotation.py,sha256=4hLpJdP4Ax-z_93ftRu2ua9r1YGXkOrs8ssr5qz6k7s,10513
|
|
@@ -17,18 +17,21 @@ annofabcli/annotation/remove_segmentation_overlap.py,sha256=gONYqaI0PMEGYJduB4Js
|
|
|
17
17
|
annofabcli/annotation/restore_annotation.py,sha256=naUEbt48ION9JSijCBR2aQdaoCrRu005tYq0vgUtyp0,14683
|
|
18
18
|
annofabcli/annotation/subcommand_annotation.py,sha256=ku9mzb7zZilHcjf1MFV1E7EJ8OvfSUDHpcunM38teto,2122
|
|
19
19
|
annofabcli/annotation_specs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
annofabcli/annotation_specs/add_attribute_restriction.py,sha256=kOFTZN3m_WNZZBeMqoMxN0wSu9x5gaDY1FkqEHiwLJI,6920
|
|
21
|
+
annofabcli/annotation_specs/attribute_restriction.py,sha256=t4ms0TASer0lMVmU1UNJkdck8nNa3IJ--kAix2Bbw0A,10231
|
|
20
22
|
annofabcli/annotation_specs/export_annotation_specs.py,sha256=eZF5fj2P5U22_5UKgbpsUhZEUvVPMPerMpN4miIcnSA,4821
|
|
21
23
|
annofabcli/annotation_specs/get_annotation_specs_with_attribute_id_replaced.py,sha256=L0H0M31Amnm3ZEg9JdQe2A1vprsCLPTpj0LUFnP6GDY,8330
|
|
22
24
|
annofabcli/annotation_specs/get_annotation_specs_with_choice_id_replaced.py,sha256=mISJAgRTBMvISPk5__0w0MmhTkyQCcGPDin8K97x5Eg,6943
|
|
23
25
|
annofabcli/annotation_specs/get_annotation_specs_with_label_id_replaced.py,sha256=5tlvSdUXAUn8uQ1BXNWxkR2MIKnV6AJoxveiwD21IAo,7114
|
|
24
|
-
annofabcli/annotation_specs/list_annotation_specs_attribute.py,sha256=
|
|
25
|
-
annofabcli/annotation_specs/list_annotation_specs_choice.py,sha256
|
|
26
|
+
annofabcli/annotation_specs/list_annotation_specs_attribute.py,sha256=3acxTzsxVvL2rYwQ9jzpJrwjr_KHVkTzSS4bRRTXBaM,10780
|
|
27
|
+
annofabcli/annotation_specs/list_annotation_specs_choice.py,sha256=hhkK-i6r4x0fEa-75mZY72YjdoXtfK6epMjzIsyZ0I8,9142
|
|
26
28
|
annofabcli/annotation_specs/list_annotation_specs_history.py,sha256=DtF8X8hA3N54TLPZjHwc9LKFSMs2xem1QiI_BzPPt5s,2520
|
|
27
|
-
annofabcli/annotation_specs/list_annotation_specs_label.py,sha256=
|
|
28
|
-
annofabcli/annotation_specs/
|
|
29
|
+
annofabcli/annotation_specs/list_annotation_specs_label.py,sha256=YI0vsE4VOfqq5p0mHUiMIQZgUu2tZZ2ZzIWhfnoiJOo,8869
|
|
30
|
+
annofabcli/annotation_specs/list_annotation_specs_label_attribute.py,sha256=inMEDMo4TxhRMkwNKeHZrurK06yydEaywqHjUzSxnQg,9348
|
|
31
|
+
annofabcli/annotation_specs/list_attribute_restriction.py,sha256=NpCnT2jpTzqtkzksGUqDjhpqJ4-kL_EnfjBTLF9o3Uw,6506
|
|
29
32
|
annofabcli/annotation_specs/list_label_color.py,sha256=huHBAb-LVLe-tj5ZALiBkFgZlZSTvi2ZDsPYgJPDZ2Q,2356
|
|
30
33
|
annofabcli/annotation_specs/put_label_color.py,sha256=HJTczQiE7uwdnpHh0Lyz_WuvtyXOxYt8RThBXpvjKgA,6057
|
|
31
|
-
annofabcli/annotation_specs/subcommand_annotation_specs.py,sha256=
|
|
34
|
+
annofabcli/annotation_specs/subcommand_annotation_specs.py,sha256=yqSjV1S3CSB0sFqelLBNkPy9RrVyGNRnSWCnaLTjUsc,2692
|
|
32
35
|
annofabcli/comment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
36
|
annofabcli/comment/delete_comment.py,sha256=EsQtUCq-HZtYmHQiXq4KbkgjqS4NPlC44MJQKgUzhnY,11458
|
|
34
37
|
annofabcli/comment/download_comment_json.py,sha256=YfqUnMgvLgVFV7FJPIXwirREkQ2E63fXeCaF4hfwk8c,2338
|
|
@@ -44,15 +47,16 @@ annofabcli/comment/subcommand_comment.py,sha256=gd8w8ArXM1Tq9VUduDgn8m4G6HwevRWJ
|
|
|
44
47
|
annofabcli/comment/utils.py,sha256=aUj7U6MtGh64F3Ko83y4NKPKyWAqcg-c1XLqjkmIpSk,350
|
|
45
48
|
annofabcli/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
49
|
annofabcli/common/annofab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
+
annofabcli/common/annofab/annotation_specs.py,sha256=h-YSnuK0riCLoJMmV-KDP3JS-_JMqx0feSvPAB3xCSI,765
|
|
47
51
|
annofabcli/common/annofab/project.py,sha256=BK96o9OO961yfUvcjuHG1DeJ2bMMEYTS5ujtJCvD_4I,891
|
|
48
52
|
annofabcli/common/bokeh.py,sha256=x5-Siok3cIhq-biTOb3JG91_q--ob1m48TDgB72P1Hc,1071
|
|
49
53
|
annofabcli/common/cli.py,sha256=Z19cO7zaoRrIoJYjsjeJ5mQkYs1pHgpY13y1XyGSJaY,24936
|
|
50
54
|
annofabcli/common/dataclasses.py,sha256=FRDihsB-H5P5ioVE3kfJtorsS5EbSMySlHrp8BJ3ktg,385
|
|
51
|
-
annofabcli/common/download.py,sha256=
|
|
55
|
+
annofabcli/common/download.py,sha256=KKfWM546cEClTTKfSmQzupZ1dq34sKEcBvOnkuFo144,14512
|
|
52
56
|
annofabcli/common/enums.py,sha256=pnMZEk8ADK2qO2Hmujx6NxeCwvSAEDNhmgK4ajPSC9Q,1233
|
|
53
|
-
annofabcli/common/exceptions.py,sha256=
|
|
54
|
-
annofabcli/common/facade.py,sha256=
|
|
55
|
-
annofabcli/common/image.py,sha256=
|
|
57
|
+
annofabcli/common/exceptions.py,sha256=trgC5eqvy7jgqOQ41pbAOC__uxy19GgrM9NAgkH_lBw,2051
|
|
58
|
+
annofabcli/common/facade.py,sha256=1d5DxC4O5yHr0gisqaqgkacY5Omn1X-L1syPnYPyiwQ,19401
|
|
59
|
+
annofabcli/common/image.py,sha256=3uNv5n4NT9W6H_9OyiLBkXJ4lEoTcYCwDFO-HtZ7Wr4,16730
|
|
56
60
|
annofabcli/common/pandas.py,sha256=IW9xqHkdRF1I6YZc7CP_9tkGxJuu1MKEXFILjhaNUU0,449
|
|
57
61
|
annofabcli/common/type_util.py,sha256=i3r5pFtRYQwJrYkl1-lVQi8XOePQxTUX_cAHgBTsagM,224
|
|
58
62
|
annofabcli/common/typing.py,sha256=_AcEogoaMbib0esfN2RvHshAZH0oyRb2Ro9-rbn7NJ8,330
|
|
@@ -71,7 +75,7 @@ annofabcli/filesystem/subcommand_filesystem.py,sha256=ZM2td5iZYIQ3TCI-9xAue8LugF
|
|
|
71
75
|
annofabcli/input_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
76
|
annofabcli/input_data/change_input_data_name.py,sha256=cQWoGTZKwr2_fU1WGALmRyJY39ruf9t4eMxpI06eT9g,9943
|
|
73
77
|
annofabcli/input_data/copy_input_data.py,sha256=Lbyq2aW5lmJCPB8-WHdOI93a2ND5E0qOWrhBHRluQyw,14656
|
|
74
|
-
annofabcli/input_data/delete_input_data.py,sha256=
|
|
78
|
+
annofabcli/input_data/delete_input_data.py,sha256=NS05kUDCYxCI8M0nZwOZ-OTa3qLLgM0zrplj6W11Mxc,8858
|
|
75
79
|
annofabcli/input_data/delete_metadata_key_of_input_data.py,sha256=PVv9HXQVFLKQh-4RSHas_ckFxDxtqAzWnXnWYFFYy08,8464
|
|
76
80
|
annofabcli/input_data/download_input_data_json.py,sha256=vxGoeM3ZEggQbWiWsrDK0_GxQrC_UzSHAtWMYK-k_6I,2794
|
|
77
81
|
annofabcli/input_data/list_all_input_data.py,sha256=Kq261WCkma5UNKfMDT7O6Z-dzzqp-KP1wL0DvHe5fH8,9879
|
|
@@ -89,7 +93,7 @@ annofabcli/instruction/list_instruction_history.py,sha256=xaA98kFqYV6I_JKyeE6Ef4
|
|
|
89
93
|
annofabcli/instruction/subcommand_instruction.py,sha256=hSj7iYX-ad23X3wi5iMb9AZJCd1bUxFvynLJ6r3ZFGE,1169
|
|
90
94
|
annofabcli/instruction/upload_instruction.py,sha256=YVWed68a5AAD0ctojZxkNt-FVMCVuseCOCdYqA-EUNU,6116
|
|
91
95
|
annofabcli/job/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
92
|
-
annofabcli/job/delete_job.py,sha256=
|
|
96
|
+
annofabcli/job/delete_job.py,sha256=vWC81MgwzAG5SYMZE9fcr1XOiAoS_AryGFuFnABRbcc,3402
|
|
93
97
|
annofabcli/job/list_job.py,sha256=rePqPfXoDi8w04p6ewNiXEjiLlKv-ML6akTqFURpRVA,3245
|
|
94
98
|
annofabcli/job/list_last_job.py,sha256=gjFCyfE7l37sGBps3J0h7iKjys7u1OdrRV8LxuZml64,6820
|
|
95
99
|
annofabcli/job/subcommand_job.py,sha256=kzKAT067Q_zODm6H2bbwOGHMDg8q6juqWzutGQpp2As,1008
|
|
@@ -104,7 +108,7 @@ annofabcli/organization_member/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
104
108
|
annofabcli/organization_member/change_organization_member.py,sha256=DrRnVHTXRp5kE8ezgkXofuL0tgpvEPxwF8MowCDv27Q,4918
|
|
105
109
|
annofabcli/organization_member/delete_organization_member.py,sha256=n_TI5oLUwWi3UzaffrtmwoVvsQhqh_KocxCPxAc3JXM,4304
|
|
106
110
|
annofabcli/organization_member/invite_organization_member.py,sha256=LndGMPOSTn5nlnu_Gg8XUcXe4oG6-31jbPjv7Gz9h0k,4249
|
|
107
|
-
annofabcli/organization_member/list_organization_member.py,sha256
|
|
111
|
+
annofabcli/organization_member/list_organization_member.py,sha256=-pvYSFng4AGqYkKgN0QP6gTEDRO9jLGhL7OFjVsukC8,3721
|
|
108
112
|
annofabcli/organization_member/subcommand_organization_member.py,sha256=iK-Y4PxG5J8fu0Bnf8NBixv81BRXvr3BiVUyUb3ET7A,1289
|
|
109
113
|
annofabcli/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
114
|
annofabcli/project/change_project_status.py,sha256=ISStxBhScMobh7VvwM7Sua5uPn8WoiuZo4NrMiBWRFY,8659
|
|
@@ -114,11 +118,11 @@ annofabcli/project/list_project.py,sha256=IMmI_AZTSFx5unl5tDPaGEzVOSmtTMVM6Nai7c
|
|
|
114
118
|
annofabcli/project/put_project.py,sha256=4Nd7hDcUtfCDr0vdyk0eT0vPDXZvDFe79fT95dsL8ak,6084
|
|
115
119
|
annofabcli/project/subcommand_project.py,sha256=1vf_oeIH-RyNYHjXfIFfuAWJDLfkgpGk2MxtAWHFXoU,1199
|
|
116
120
|
annofabcli/project_member/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
117
|
-
annofabcli/project_member/change_project_members.py,sha256=
|
|
121
|
+
annofabcli/project_member/change_project_members.py,sha256=T4ijjd0upIgtsAPqgo4pG2Szq3jtkd_74As0r5Er3Ks,9351
|
|
118
122
|
annofabcli/project_member/copy_project_members.py,sha256=-ybJ6ftcbRq0Pl092aag5kuSu2fb05Jf0HaRSA3AKok,8941
|
|
119
|
-
annofabcli/project_member/drop_project_members.py,sha256=
|
|
120
|
-
annofabcli/project_member/invite_project_members.py,sha256=
|
|
121
|
-
annofabcli/project_member/list_users.py,sha256=
|
|
123
|
+
annofabcli/project_member/drop_project_members.py,sha256=e2xdSviYQMZc88y96JbiH5FXUyvKAdSnNfHLgazh0IQ,5891
|
|
124
|
+
annofabcli/project_member/invite_project_members.py,sha256=SE0yGZK4UFA_NpJtuKBR98nvNE183kKMW9h6UPmsRSk,6337
|
|
125
|
+
annofabcli/project_member/list_users.py,sha256=4pqvraKWMmtKIasQuowLKmz2j2h-tW_-TUzvGEKdF2I,4843
|
|
122
126
|
annofabcli/project_member/put_project_members.py,sha256=-2T-XlZw-I6Am4HDf9dsNDEmaflMDvmJvMzStiya_Fc,9183
|
|
123
127
|
annofabcli/project_member/subcommand_project_member.py,sha256=6cOoMiZJ82j94rSSp1GzmYggGSm1egk3S9e_YYgzhe8,1466
|
|
124
128
|
annofabcli/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -179,7 +183,7 @@ annofabcli/task/cancel_acceptance.py,sha256=rHKmAzQE1a25szVWb7dexokeW32V12bkyDIY
|
|
|
179
183
|
annofabcli/task/change_operator.py,sha256=VWsVRnG6SKhvwrzJzl8ILoLbBfOv5Mi9fbpyXkjAQY4,10592
|
|
180
184
|
annofabcli/task/change_status_to_break.py,sha256=ahsviMvvzPo-wGY7NW6azU-PyPA3dVoV8x6OiEK1Clw,8635
|
|
181
185
|
annofabcli/task/change_status_to_on_hold.py,sha256=lAr5vW_8s9Kmu0cUQjAlti93-fwZ6n4gZ4A-oDbCkJg,13189
|
|
182
|
-
annofabcli/task/complete_tasks.py,sha256=
|
|
186
|
+
annofabcli/task/complete_tasks.py,sha256=eSW3sYCZA8fZjkHnmsO-QJ8hSw_TRrfk4psJXpCiPNA,25205
|
|
183
187
|
annofabcli/task/copy_tasks.py,sha256=sjjauJjsufgMciZYTASm97Uxx2afMgVIwW6CGrc00sg,8692
|
|
184
188
|
annofabcli/task/delete_metadata_key_of_task.py,sha256=1UnU_hFnakzFOYw8soz2_A8lPr9OdEnnGlydNRYjStM,8073
|
|
185
189
|
annofabcli/task/delete_tasks.py,sha256=8C2kuq_WdwcPmUhta_yoSRvhWiD_ZfYyGoIGwF_pt3Y,13388
|
|
@@ -190,21 +194,21 @@ annofabcli/task/list_tasks.py,sha256=O4jjp_zdmurcGNWXFp9JXHJsH4nhlR5e3ok96YnD1SI
|
|
|
190
194
|
annofabcli/task/list_tasks_added_task_history.py,sha256=Yjvv5fJjSjJ-v9bhwl4PDyU8aeT94LLMBcPhmUWlFUI,21639
|
|
191
195
|
annofabcli/task/put_tasks.py,sha256=c_Vw5qnDlfpa21S-aMVxmXy8pF-z_YEUi6a0c3IV9gc,13770
|
|
192
196
|
annofabcli/task/put_tasks_by_count.py,sha256=MUHfWhqtSAXnB3O36p3bMSSgQ_3Zek9GT5qRvHGx8Lo,6041
|
|
193
|
-
annofabcli/task/reject_tasks.py,sha256=
|
|
197
|
+
annofabcli/task/reject_tasks.py,sha256=aW3vl3blmdI-IAuGsTpbr6z8FlJJpJPT4-fr4TV8M_g,22256
|
|
194
198
|
annofabcli/task/subcommand_task.py,sha256=L_5Dwe58eblrtOrUYxjJAvkSmu6savRUxIqGjsFq-R4,2436
|
|
195
|
-
annofabcli/task/update_metadata_of_task.py,sha256=
|
|
199
|
+
annofabcli/task/update_metadata_of_task.py,sha256=o-kRyYu-XROgTKnPK8HyKhmKJ5dlTHiJAox-2qyuAAs,12896
|
|
196
200
|
annofabcli/task_history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
197
201
|
annofabcli/task_history/download_task_history_json.py,sha256=xZnGNKkPYT6RXIUd_wUqZfPiVpGdW5MTBUSpNKbOAC4,2370
|
|
198
202
|
annofabcli/task_history/list_all_task_history.py,sha256=VY99AEHTSG71O2HQXS81oPX6AAusbT1scika9QoUZEU,6780
|
|
199
|
-
annofabcli/task_history/list_task_history.py,sha256=
|
|
203
|
+
annofabcli/task_history/list_task_history.py,sha256=oUtJHUQ7H4nWxbAgmEdC1e_3yawbfwHPQEwIIpWMCBY,6172
|
|
200
204
|
annofabcli/task_history/subcommand_task_history.py,sha256=_CvM1ts60GT15iXmsb4CHOyL170ier-q-p9edVuNLvc,1066
|
|
201
205
|
annofabcli/task_history_event/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
202
206
|
annofabcli/task_history_event/download_task_history_event_json.py,sha256=hQLVbQ0HjdiRpXC9tEt_Py3W_b0mo3eVIa-zp0z3fgU,2434
|
|
203
207
|
annofabcli/task_history_event/list_all_task_history_event.py,sha256=JQEgwOIXbbTIfeX23AVaoySHViOR9UGm9uoXuhVEBqo,6446
|
|
204
208
|
annofabcli/task_history_event/list_worktime.py,sha256=9jsRYa2C9bva8E1Aqxv9CCKDuCP0MvbiaIyQFTDpjqY,13150
|
|
205
209
|
annofabcli/task_history_event/subcommand_task_history_event.py,sha256=mJVJoT4RXk4HWnY7-Nrsl4If-gtaIIEXd2z7eFZwM2I,1260
|
|
206
|
-
annofabcli-
|
|
207
|
-
annofabcli-
|
|
208
|
-
annofabcli-
|
|
209
|
-
annofabcli-
|
|
210
|
-
annofabcli-
|
|
210
|
+
annofabcli-100.2.dist-info/LICENSE,sha256=pcqWYfxFtxBzhvKp3x9MXNM4xciGb2eFewaRhXUNHlo,1081
|
|
211
|
+
annofabcli-100.2.dist-info/METADATA,sha256=-lB1-fYDD0b_WmOcmwcF7jauX0zpqaadto7Qnkya4KE,5629
|
|
212
|
+
annofabcli-100.2.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
213
|
+
annofabcli-100.2.dist-info/entry_points.txt,sha256=A8vlN9fiMhbYRcdBfSpl7piYzAwvkMhRXIPQUAvQFUo,55
|
|
214
|
+
annofabcli-100.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|