annofabcli 1.108.0__py3-none-any.whl → 1.110.0__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.
Files changed (25) hide show
  1. annofabcli/annotation_zip/list_annotation_bounding_box_2d.py +49 -37
  2. annofabcli/annotation_zip/list_range_annotation.py +308 -0
  3. annofabcli/annotation_zip/subcommand_annotation_zip.py +4 -0
  4. annofabcli/annotation_zip/validate_annotation.py +393 -0
  5. annofabcli/common/download.py +97 -0
  6. annofabcli/project/create_project.py +151 -0
  7. annofabcli/project/put_project.py +14 -129
  8. annofabcli/project/subcommand_project.py +4 -0
  9. annofabcli/project/update_project.py +298 -0
  10. annofabcli/statistics/list_annotation_area.py +2 -3
  11. annofabcli/statistics/list_annotation_attribute_filled_count.py +35 -10
  12. annofabcli/statistics/list_annotation_count.py +39 -14
  13. annofabcli/statistics/list_annotation_duration.py +4 -6
  14. annofabcli/statistics/summarize_task_count.py +53 -33
  15. annofabcli/statistics/summarize_task_count_by_task_id_group.py +30 -13
  16. annofabcli/statistics/summarize_task_count_by_user.py +32 -15
  17. annofabcli/statistics/visualization/dataframe/annotation_count.py +31 -3
  18. annofabcli/statistics/visualization/dataframe/annotation_duration.py +121 -0
  19. annofabcli/statistics/visualize_statistics.py +83 -5
  20. annofabcli/task/complete_tasks.py +2 -2
  21. {annofabcli-1.108.0.dist-info → annofabcli-1.110.0.dist-info}/METADATA +1 -1
  22. {annofabcli-1.108.0.dist-info → annofabcli-1.110.0.dist-info}/RECORD +25 -20
  23. {annofabcli-1.108.0.dist-info → annofabcli-1.110.0.dist-info}/WHEEL +0 -0
  24. {annofabcli-1.108.0.dist-info → annofabcli-1.110.0.dist-info}/entry_points.txt +0 -0
  25. {annofabcli-1.108.0.dist-info → annofabcli-1.110.0.dist-info}/licenses/LICENSE +0 -0
@@ -12,7 +12,7 @@ from typing import Any, Callable, Optional
12
12
 
13
13
  import annofabapi
14
14
  import pandas
15
- from annofabapi.models import ProjectMemberRole, TaskPhase
15
+ from annofabapi.models import InputDataType, ProjectMemberRole, TaskPhase
16
16
 
17
17
  import annofabcli
18
18
  from annofabcli.common.cli import (
@@ -26,6 +26,7 @@ from annofabcli.common.cli import (
26
26
  from annofabcli.common.facade import AnnofabApiFacade, TaskQuery
27
27
  from annofabcli.statistics.visualization.dataframe.actual_worktime import ActualWorktime
28
28
  from annofabcli.statistics.visualization.dataframe.annotation_count import AnnotationCount
29
+ from annofabcli.statistics.visualization.dataframe.annotation_duration import AnnotationDuration
29
30
  from annofabcli.statistics.visualization.dataframe.cumulative_productivity import (
30
31
  AcceptorCumulativeProductivity,
31
32
  AnnotatorCumulativeProductivity,
@@ -78,6 +79,9 @@ class WriteCsvGraph:
78
79
  custom_production_volume: Optional[CustomProductionVolume] = None,
79
80
  minimal_output: bool = False,
80
81
  output_only_text: bool = False,
82
+ production_volume_include_labels: Optional[list[str]] = None,
83
+ production_volume_exclude_labels: Optional[list[str]] = None,
84
+ include_annotation_duration_seconds: bool = False,
81
85
  ) -> None:
82
86
  self.service = service
83
87
  self.project_id = project_id
@@ -91,6 +95,9 @@ class WriteCsvGraph:
91
95
  self.annotation_count = annotation_count
92
96
  self.input_data_count = input_data_count
93
97
  self.custom_production_volume = custom_production_volume
98
+ self.production_volume_include_labels = production_volume_include_labels
99
+ self.production_volume_exclude_labels = production_volume_exclude_labels
100
+ self.include_annotation_duration_seconds = include_annotation_duration_seconds
94
101
 
95
102
  self.task: Optional[Task] = None
96
103
  self.worktime_per_date: Optional[WorktimePerDate] = None
@@ -114,7 +121,12 @@ class WriteCsvGraph:
114
121
  if self.task is None:
115
122
  if self.annotation_count is None:
116
123
  # アノテーションZIPからアノテーション数を取得
117
- annotation_count = AnnotationCount.from_annotation_zip(self.visualize_source_files.annotation_zip_path, project_id=self.project_id)
124
+ annotation_count = AnnotationCount.from_annotation_zip(
125
+ self.visualize_source_files.annotation_zip_path,
126
+ project_id=self.project_id,
127
+ include_labels=self.production_volume_include_labels,
128
+ exclude_labels=self.production_volume_exclude_labels,
129
+ )
118
130
  else:
119
131
  annotation_count = self.annotation_count
120
132
 
@@ -125,6 +137,36 @@ class WriteCsvGraph:
125
137
  new_tasks = filter_tasks(tasks, self.task_completion_criteria, self.filtering_query, task_histories=task_histories)
126
138
  logger.debug(f"project_id='{self.project_id}' :: 集計対象タスクは {len(new_tasks)} / {len(tasks)} 件です。")
127
139
 
140
+ # annotation_duration_secondsを生産量に含める場合、アノテーション時間を計算
141
+ custom_production_volume = self.custom_production_volume
142
+ if self.include_annotation_duration_seconds:
143
+ logger.debug(f"project_id='{self.project_id}' :: 区間アノテーションの長さ('annotation_duration_second')を計算します。")
144
+ annotation_duration_obj = AnnotationDuration.from_annotation_zip(
145
+ self.visualize_source_files.annotation_zip_path,
146
+ project_id=self.project_id,
147
+ include_labels=self.production_volume_include_labels,
148
+ exclude_labels=self.production_volume_exclude_labels,
149
+ )
150
+
151
+ if custom_production_volume is not None:
152
+ # 既存のCustomProductionVolumeのデータと結合
153
+ if not custom_production_volume.is_empty():
154
+ annotation_duration_df = pandas.merge(custom_production_volume.df, annotation_duration_obj.df, on=["project_id", "task_id"], how="outer")
155
+ else:
156
+ annotation_duration_df = annotation_duration_obj.df
157
+
158
+ # annotation_duration_secondを含む新しいProductionVolumeColumnリストを作成
159
+ annotation_duration_column = ProductionVolumeColumn(value="annotation_duration_second", name="区間アノテーションの長さ(秒)")
160
+ new_production_volume_list = list(custom_production_volume.custom_production_volume_list)
161
+ if annotation_duration_column not in new_production_volume_list:
162
+ new_production_volume_list.append(annotation_duration_column)
163
+
164
+ custom_production_volume = CustomProductionVolume(annotation_duration_df, custom_production_volume_list=new_production_volume_list)
165
+ else:
166
+ # CustomProductionVolumeが存在しない場合、新規作成
167
+ annotation_duration_column = ProductionVolumeColumn(value="annotation_duration_second", name="区間アノテーションの長さ(秒)")
168
+ custom_production_volume = CustomProductionVolume(annotation_duration_obj.df, custom_production_volume_list=[annotation_duration_column])
169
+
128
170
  self.task = Task.from_api_content(
129
171
  tasks=new_tasks,
130
172
  task_histories=task_histories,
@@ -133,7 +175,7 @@ class WriteCsvGraph:
133
175
  input_data_count=self.input_data_count,
134
176
  project_id=self.project_id,
135
177
  annofab_service=self.service,
136
- custom_production_volume=self.custom_production_volume,
178
+ custom_production_volume=custom_production_volume,
137
179
  )
138
180
 
139
181
  return self.task
@@ -276,6 +318,8 @@ class VisualizingStatisticsMain:
276
318
  custom_production_volume: Optional[CustomProductionVolume] = None,
277
319
  user_ids: Optional[list[str]] = None,
278
320
  not_download_visualization_source_files: bool = False,
321
+ production_volume_include_labels: Optional[list[str]] = None,
322
+ production_volume_exclude_labels: Optional[list[str]] = None,
279
323
  ) -> None:
280
324
  self.service = service
281
325
  self.facade = AnnofabApiFacade(service)
@@ -292,6 +336,8 @@ class VisualizingStatisticsMain:
292
336
  self.custom_production_volume = custom_production_volume
293
337
  self.user_ids = user_ids
294
338
  self.not_download_visualization_source_files = not_download_visualization_source_files
339
+ self.production_volume_include_labels = production_volume_include_labels
340
+ self.production_volume_exclude_labels = production_volume_exclude_labels
295
341
 
296
342
  def get_project_info(self, project_id: str) -> ProjectInfo:
297
343
  project_info = self.service.api.get_project(project_id)[0]
@@ -321,7 +367,15 @@ class VisualizingStatisticsMain:
321
367
  project_info = self.get_project_info(project_id)
322
368
  logger.info(f"project_title='{project_info.project_title}'")
323
369
 
324
- project_dir = ProjectDir(output_project_dir, self.task_completion_criteria, metadata=project_info.to_dict(encode_json=True))
370
+ # 動画プロジェクトの場合、annotation_duration_secondを生産量に含める
371
+ custom_production_volume = self.custom_production_volume
372
+
373
+ project_dir = ProjectDir(
374
+ output_project_dir,
375
+ self.task_completion_criteria,
376
+ metadata=project_info.to_dict(encode_json=True),
377
+ custom_production_volume_list=custom_production_volume.custom_production_volume_list if custom_production_volume is not None else None,
378
+ )
325
379
  project_dir.write_project_info(project_info)
326
380
 
327
381
  if self.actual_worktime is not None:
@@ -370,9 +424,12 @@ class VisualizingStatisticsMain:
370
424
  actual_worktime=ActualWorktime(df_actual_worktime),
371
425
  annotation_count=annotation_count,
372
426
  input_data_count=self.input_data_count,
373
- custom_production_volume=self.custom_production_volume,
427
+ custom_production_volume=custom_production_volume,
374
428
  minimal_output=self.minimal_output,
375
429
  output_only_text=self.output_only_text,
430
+ production_volume_include_labels=self.production_volume_include_labels,
431
+ production_volume_exclude_labels=self.production_volume_exclude_labels,
432
+ include_annotation_duration_seconds=(project_info.input_data_type == InputDataType.MOVIE.value),
376
433
  )
377
434
 
378
435
  write_obj._catch_exception(write_obj.write_user_performance)() # noqa: SLF001
@@ -483,6 +540,8 @@ class VisualizeStatistics(CommandLine):
483
540
  project_id_list: list[str],
484
541
  root_output_dir: Path,
485
542
  parallelism: Optional[int],
543
+ production_volume_include_labels: Optional[list[str]] = None,
544
+ production_volume_exclude_labels: Optional[list[str]] = None,
486
545
  ) -> None:
487
546
  main_obj = VisualizingStatisticsMain(
488
547
  service=self.service,
@@ -499,6 +558,8 @@ class VisualizeStatistics(CommandLine):
499
558
  minimal_output=minimal_output,
500
559
  output_only_text=output_only_text,
501
560
  not_download_visualization_source_files=not_download_visualization_source_files,
561
+ production_volume_include_labels=production_volume_include_labels,
562
+ production_volume_exclude_labels=production_volume_exclude_labels,
502
563
  )
503
564
 
504
565
  if len(project_id_list) == 1:
@@ -598,6 +659,8 @@ class VisualizeStatistics(CommandLine):
598
659
  parallelism=args.parallelism,
599
660
  # `tempfile.TemporaryDirectory`で作成したディレクトリを利用する場合は、必ずダウンロードが必要なの`False`を指定する
600
661
  not_download_visualization_source_files=False,
662
+ production_volume_include_labels=get_list_from_args(args.production_volume_include_label) if args.production_volume_include_label is not None else None,
663
+ production_volume_exclude_labels=get_list_from_args(args.production_volume_exclude_label) if args.production_volume_exclude_label is not None else None,
601
664
  )
602
665
  else:
603
666
  self.visualize_statistics(
@@ -617,6 +680,8 @@ class VisualizeStatistics(CommandLine):
617
680
  root_output_dir=root_output_dir,
618
681
  parallelism=args.parallelism,
619
682
  not_download_visualization_source_files=args.not_download,
683
+ production_volume_include_labels=get_list_from_args(args.production_volume_include_label) if args.production_volume_include_label is not None else None,
684
+ production_volume_exclude_labels=get_list_from_args(args.production_volume_exclude_label) if args.production_volume_exclude_label is not None else None,
620
685
  )
621
686
 
622
687
 
@@ -769,6 +834,19 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
769
834
  help="並列度。 ``--project_id`` に複数のproject_idを指定したときのみ有効なオプションです。指定しない場合は、逐次的に処理します。",
770
835
  )
771
836
 
837
+ production_volume_label_group = parser.add_mutually_exclusive_group()
838
+ production_volume_label_group.add_argument(
839
+ "--production_volume_include_label",
840
+ nargs="+",
841
+ help="生産量('annotation_count'など)の集計対象に含めるラベル名(英語)を指定します。複数指定可能です。",
842
+ )
843
+
844
+ production_volume_label_group.add_argument(
845
+ "--production_volume_exclude_label",
846
+ nargs="+",
847
+ help="生産量('annotation_count'など)の集計対象から除外するラベル名(英語)を指定します。複数指定可能です。",
848
+ )
849
+
772
850
  parser.set_defaults(subcommand_func=main)
773
851
 
774
852
 
@@ -146,13 +146,13 @@ class CompleteTasksMain(CommandLineWithConfirm):
146
146
  if task.account_id != my_account_id:
147
147
  _task = self.service.wrapper.change_task_operator(task.project_id, task.task_id, my_account_id, last_updated_datetime=task.updated_datetime)
148
148
  last_updated_datetime = _task["updated_datetime"]
149
- logger.debug(f"{task.task_id}: 担当者を自分自身に変更しました。")
149
+ logger.debug(f"task_id='{task.task_id}' :: 担当者を自分自身に変更しました。")
150
150
 
151
151
  dict_task = self.service.wrapper.change_task_status_to_working(project_id=task.project_id, task_id=task.task_id, last_updated_datetime=last_updated_datetime)
152
152
  return Task.from_dict(dict_task)
153
153
 
154
154
  except requests.HTTPError:
155
- logger.warning(f"{task.task_id}: 担当者の変更、または作業中状態への変更に失敗しました。", exc_info=True)
155
+ logger.warning(f"task_id='{task.task_id}' :: 担当者の変更、または作業中状態への変更に失敗しました。", exc_info=True)
156
156
  raise
157
157
 
158
158
  def get_unanswered_comment_list(self, task: Task, input_data_id: str) -> list[Inspection]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annofabcli
3
- Version: 1.108.0
3
+ Version: 1.110.0
4
4
  Summary: Utility Command Line Interface for AnnoFab
5
5
  Author: Kurusugawa Computer Inc.
6
6
  License: MIT
@@ -35,8 +35,10 @@ annofabcli/annotation_specs/list_label_color.py,sha256=huHBAb-LVLe-tj5ZALiBkFgZl
35
35
  annofabcli/annotation_specs/put_label_color.py,sha256=L6kX6bqy80IQp8iZg4QqnRqzE8KPApgTyydPy_VG0dk,5990
36
36
  annofabcli/annotation_specs/subcommand_annotation_specs.py,sha256=yqSjV1S3CSB0sFqelLBNkPy9RrVyGNRnSWCnaLTjUsc,2692
37
37
  annofabcli/annotation_zip/__init__.py,sha256=wAeKgkUYvgzdGFS3iJ3h0WogWbg9i-0c4xSg-mzbBpY,64
38
- annofabcli/annotation_zip/list_annotation_bounding_box_2d.py,sha256=fPpc1Ekk-9f3_yKSn0PD7l6JPlheOExFtbCY3_n89iY,12520
39
- annofabcli/annotation_zip/subcommand_annotation_zip.py,sha256=Cx07h2hJW6o9arkAsOnTsNmaY3G20PTkGlB6jzldx6Q,1146
38
+ annofabcli/annotation_zip/list_annotation_bounding_box_2d.py,sha256=306qSxOXzXSU1AaaveWSToyBCCt3hGbTuWqBaS5wn44,13363
39
+ annofabcli/annotation_zip/list_range_annotation.py,sha256=70U3vvb-M5jxQlUlbqX-DSenp8oxXja3tj1gzq-7_DU,12282
40
+ annofabcli/annotation_zip/subcommand_annotation_zip.py,sha256=SBpdjNhp4s-u4DBjpl5_OR91GbW5hUAi3kt5dhNbyA4,1397
41
+ annofabcli/annotation_zip/validate_annotation.py,sha256=Kf1p312CINbZZTbniVAphQrcrMmr5WGQZja30kc7ewc,16645
40
42
  annofabcli/comment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
43
  annofabcli/comment/delete_comment.py,sha256=HZG1BOEKEbi3ISqM-2KZS5iq6aI16jDFBRLFpT-30e4,11385
42
44
  annofabcli/comment/download_comment_json.py,sha256=YfqUnMgvLgVFV7FJPIXwirREkQ2E63fXeCaF4hfwk8c,2338
@@ -54,7 +56,7 @@ annofabcli/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
54
56
  annofabcli/common/bokeh.py,sha256=x5-Siok3cIhq-biTOb3JG91_q--ob1m48TDgB72P1Hc,1071
55
57
  annofabcli/common/cli.py,sha256=pmbieBx1-Eb-mlVqJAG0dJnalggczdbBly_u-qzHX84,21666
56
58
  annofabcli/common/dataclasses.py,sha256=FRDihsB-H5P5ioVE3kfJtorsS5EbSMySlHrp8BJ3ktg,385
57
- annofabcli/common/download.py,sha256=b3e5tVn1dmM1BMti67WwGzDCRH7hYJQEgk0xxkkuMIw,14003
59
+ annofabcli/common/download.py,sha256=4qc96boRbyo0A8DRIGohIZOpfLBMJc_fKIQlq0k_9T0,17124
58
60
  annofabcli/common/enums.py,sha256=pnMZEk8ADK2qO2Hmujx6NxeCwvSAEDNhmgK4ajPSC9Q,1233
59
61
  annofabcli/common/exceptions.py,sha256=trgC5eqvy7jgqOQ41pbAOC__uxy19GgrM9NAgkH_lBw,2051
60
62
  annofabcli/common/facade.py,sha256=1d5DxC4O5yHr0gisqaqgkacY5Omn1X-L1syPnYPyiwQ,19401
@@ -120,11 +122,13 @@ annofabcli/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
120
122
  annofabcli/project/change_organization_of_project.py,sha256=yeR8Xu4nmvrA4jGfsPDmFxf-qJxvEVQAvluierJRMxc,11300
121
123
  annofabcli/project/change_project_status.py,sha256=AQQFFYjUnwrFshuYS_xSGyLAp2lJ-7SSIuaigPTLBYk,8657
122
124
  annofabcli/project/copy_project.py,sha256=O1TooJ0VVbRP84d4Y-8e6Z7pKMwhBEwPu3EBv15hPlY,7131
125
+ annofabcli/project/create_project.py,sha256=WK1mh6c_2sh-98Q_ZxYIGOZPKe22KnmJS8q_l2gNUdA,6051
123
126
  annofabcli/project/diff_projects.py,sha256=OsR0otV6MOCbUgGEDsYganu5cuHYZbpHbBAqujwBAw8,16531
124
127
  annofabcli/project/list_project.py,sha256=OWnbCyShI4ceugxML8kSAD2nkyld5MlpXfbvQu2__4Y,10367
125
- annofabcli/project/put_project.py,sha256=dsRJfx2ga4mmYci40q91UzXeQN6m_3fMU9mrcFRpY9Q,6033
126
- annofabcli/project/subcommand_project.py,sha256=i2EBEBUp-h--yzwFeg1V5T0iMB_oFp4X_M-zQdZoMRE,1447
128
+ annofabcli/project/put_project.py,sha256=b_ZaMhYTgqC-W5q2FpT-BycnPm9QmduHRvG0cVpAK_A,1567
129
+ annofabcli/project/subcommand_project.py,sha256=ZfaBWUP3r7QW1avj_FBI8kyz5CtHt39v1MOii1Ju8TQ,1651
127
130
  annofabcli/project/update_configuration.py,sha256=Gnymx6SwnLARY8oSgVLbG9q7y6WRt06i5RQpv6LTcFI,6491
131
+ annofabcli/project/update_project.py,sha256=OqEieEQyIoVjtJxeaaZfeKjrCl7_YXzQBzC8lCVwqN4,12089
128
132
  annofabcli/project_member/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
133
  annofabcli/project_member/change_project_members.py,sha256=T7l7--T2Mb8zLKKfGq3qB-wiAie6rkt2V-iq9e2LDp4,9337
130
134
  annofabcli/project_member/copy_project_members.py,sha256=Rm98Ks0PE4zdoXqpu_itNLvBkh1d5x_J7CKjdTkhKLk,8839
@@ -143,21 +147,21 @@ annofabcli/stat_visualization/write_performance_rating_csv.py,sha256=-eC_Nv9ohrL
143
147
  annofabcli/statistics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
148
  annofabcli/statistics/histogram.py,sha256=CvzDxT2cKLSnBGSqkZE6p92PayGxYYja1YyB24M4ALU,3245
145
149
  annofabcli/statistics/linegraph.py,sha256=0kr7jVBNMiM2ECYhv3Ry5RitElKerSl9ZKxbKzfiplI,12494
146
- annofabcli/statistics/list_annotation_area.py,sha256=ChBWz-LcGkdNV7J_qg4JeE7b7WdKyNgyfRjoW3IJfvw,12390
150
+ annofabcli/statistics/list_annotation_area.py,sha256=GkzIGC7f_LLeQsSL0EkYwhpXc_v58Nc0IYnQJ2Sh1OQ,12321
147
151
  annofabcli/statistics/list_annotation_attribute.py,sha256=lmvT3b1mVX4PRGWrBUfZafCn3c_hb_hx3WKXnHGcyyk,12754
148
- annofabcli/statistics/list_annotation_attribute_filled_count.py,sha256=UF8wB-kfUnHCIPykb2Z2slyEcp9aHrzcbFbOs_3Z8-A,29341
149
- annofabcli/statistics/list_annotation_count.py,sha256=4uTRR63Db-WDGRQt3AC8mPaRfFgbG5d27A036GNG3D0,53151
150
- annofabcli/statistics/list_annotation_duration.py,sha256=WxHfzF4tYkveIdkaWoJZ6x7ddBMWkfz1YM_vxMub3jY,32165
152
+ annofabcli/statistics/list_annotation_attribute_filled_count.py,sha256=HCr-CfoJTVz-w6ZYi63Y0dnvQszOwgwV0z45SB75CPg,30451
153
+ annofabcli/statistics/list_annotation_count.py,sha256=i99GxGeGTbHz73TDCzN3m1wO3frwg8aLkts_BDHVYmQ,54204
154
+ annofabcli/statistics/list_annotation_duration.py,sha256=nDV5Fw3PMYou6MspIDWIhkbFqJH3sx6PjV_8WdtyFww,32025
151
155
  annofabcli/statistics/list_video_duration.py,sha256=11DvuWgbJoxq7hXN7HRCWFjEAK_VG9C33QTSh7bJb0Y,9195
152
156
  annofabcli/statistics/list_worktime.py,sha256=nr--GtFY-oyFuu8M0EsUqcVxX26gjeP09LYUcdeptyk,6456
153
157
  annofabcli/statistics/scatter.py,sha256=C3hTlm_QfGBiY4KjZ-8D_u_Rk53a9f4jszx4iNZgp9w,10945
154
158
  annofabcli/statistics/subcommand_statistics.py,sha256=Pvd7s0vvDU9tSpAphPrv94IDhhR1p8iFH2tjdt7I7ZU,2536
155
- annofabcli/statistics/summarize_task_count.py,sha256=fMVNxUDs1KdgRXsg0yaEKw5iJzn3_U39rUN6BbkP720,9557
156
- annofabcli/statistics/summarize_task_count_by_task_id_group.py,sha256=eRPl89Oh7_ViDW5FA1nt56TdcCMWMjrd9LhE6lLSbeA,8533
157
- annofabcli/statistics/summarize_task_count_by_user.py,sha256=rwhQwO6g2No9AqLEAbAfnlg_6CkgB3CRkZiaNnXCL0I,6857
159
+ annofabcli/statistics/summarize_task_count.py,sha256=Beog-VKZNFQnVDcSmJYURHYGcllRFcX4xrz4cCRHGD0,10411
160
+ annofabcli/statistics/summarize_task_count_by_task_id_group.py,sha256=K4FFED1pza_d-s7hUB_ZyIeOTbyRWTx8J21qt4b9ki4,9085
161
+ annofabcli/statistics/summarize_task_count_by_user.py,sha256=KUGVUwn_KO4RSA2twAz60nX1OQE1pd5TL5gBmL1bgMA,7421
158
162
  annofabcli/statistics/visualize_annotation_count.py,sha256=7OATuGa2okq80unuTe-X30CBVkrlMLDN5Y-Q_5mB6eI,22138
159
163
  annofabcli/statistics/visualize_annotation_duration.py,sha256=9JH9MirhOyCmjcChFJMtfnFIV2k4sucP9PAwNKMcbtE,21022
160
- annofabcli/statistics/visualize_statistics.py,sha256=YiT-KCCFQNF-v56hA8WjX37b_CGjMk2Ei-NbW7aHG-k,38384
164
+ annofabcli/statistics/visualize_statistics.py,sha256=iwGhrYylBTsK-DT_MU-eYkFgZI0ITt9r59BbiaSbfQE,44041
161
165
  annofabcli/statistics/visualize_video_duration.py,sha256=yY18H0-boNy4-MQWUM_xBTMzxDUQ51TrVtz8mbsB_dI,16623
162
166
  annofabcli/statistics/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
167
  annofabcli/statistics/visualization/filtering_query.py,sha256=kqGOa1YdQ62kTLlkiIHFiYNju4Pg9rXpsC4Cph-QjLo,4355
@@ -166,7 +170,8 @@ annofabcli/statistics/visualization/project_dir.py,sha256=-60n29ySvgsfRTbFgTOYr6
166
170
  annofabcli/statistics/visualization/visualization_source_files.py,sha256=SFY7WXUtjECB8l7zP-exawocrTiZ0UI7Z5sjgq4J_g4,8641
167
171
  annofabcli/statistics/visualization/dataframe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
172
  annofabcli/statistics/visualization/dataframe/actual_worktime.py,sha256=7nsHlvN5cDzXIw-u_MSAZf4nlSSY56IlunSmnODXTbY,1916
169
- annofabcli/statistics/visualization/dataframe/annotation_count.py,sha256=gv9iFpSLu_cB63G3Z9dGImT9jr_Q6U_mrmG8VXsxJnk,3940
173
+ annofabcli/statistics/visualization/dataframe/annotation_count.py,sha256=4b5B-RTtrETdU1lR6R0yQaMFAVxDZvxom9iBEcEDNHc,5265
174
+ annofabcli/statistics/visualization/dataframe/annotation_duration.py,sha256=vKxlBsDY04Q0MEUSR3Iav1GKMx1MM6BEdnFlWq2Et68,4378
170
175
  annofabcli/statistics/visualization/dataframe/cumulative_productivity.py,sha256=Z9gxGCfgQra0M0LAq3bUhGxXnwRqZ8Gt-zIo2DPs6Nc,15800
171
176
  annofabcli/statistics/visualization/dataframe/custom_production_volume.py,sha256=5ELLiQJ5sNKdVKmYYVeZW4nedDg1CVGxMDdF5TUUX5c,2142
172
177
  annofabcli/statistics/visualization/dataframe/input_data_count.py,sha256=wDRFtoIWw_Gy2bPZ7LBx3eMO3LdUdjbQKS9mncXav6I,1654
@@ -191,7 +196,7 @@ annofabcli/task/cancel_acceptance.py,sha256=QG9GhGNfBXntqYTKdYjLUczjD4p_ATkPc_xY
191
196
  annofabcli/task/change_operator.py,sha256=q6pMd1SdsTRgMHS0705dnosTSHprTpYgXtNd0rli2Zg,11793
192
197
  annofabcli/task/change_status_to_break.py,sha256=hwdFTFW-zV0VxuinoBB5n6mvHJ7g9ChjrSOXZcNk88w,8621
193
198
  annofabcli/task/change_status_to_on_hold.py,sha256=vWRyk6IK3HcgTWDIbbhXzsrtuoa7OlXCf8CvUpFp_Uw,12981
194
- annofabcli/task/complete_tasks.py,sha256=ouTxqw5_MxLhwCkp_EcBThqA7MhHIZKQsfXxhRJut28,25145
199
+ annofabcli/task/complete_tasks.py,sha256=la7aoVhwiqvYZqe9igVzgUZAIVsXL28xdGlrUnuXk1o,25169
195
200
  annofabcli/task/copy_tasks.py,sha256=EcaCaSzqddlSKSUYqDOD53-r1GFpIl38KL3FriSfMeI,8735
196
201
  annofabcli/task/delete_metadata_key_of_task.py,sha256=Cjqe3fWKeRzVxxlrGyt3TS-x1riD55LnNXLIS9JPoTw,8029
197
202
  annofabcli/task/delete_tasks.py,sha256=7T5eNCMW06ABekNGLwhTitDK5qn0tiPKrEXyJXyQNvs,13098
@@ -215,8 +220,8 @@ annofabcli/task_history_event/download_task_history_event_json.py,sha256=hQLVbQ0
215
220
  annofabcli/task_history_event/list_all_task_history_event.py,sha256=EeKMyPUxGwYCFtWQHHW954ZserGm8lUqrwNnV1iX9X4,6830
216
221
  annofabcli/task_history_event/list_worktime.py,sha256=Y7Pu5DP7scPf7HPt6CTiTvB1_5_Nfi1bStUIaCpkhII,15507
217
222
  annofabcli/task_history_event/subcommand_task_history_event.py,sha256=mJVJoT4RXk4HWnY7-Nrsl4If-gtaIIEXd2z7eFZwM2I,1260
218
- annofabcli-1.108.0.dist-info/METADATA,sha256=_6wdJATOZ_8Osteclk0AhLdICK7BAy6dVq_C90XA9f8,5134
219
- annofabcli-1.108.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
220
- annofabcli-1.108.0.dist-info/entry_points.txt,sha256=C2uSUc-kkLJpoK_mDL5FEMAdorLEMPfwSf8VBMYnIFM,56
221
- annofabcli-1.108.0.dist-info/licenses/LICENSE,sha256=pcqWYfxFtxBzhvKp3x9MXNM4xciGb2eFewaRhXUNHlo,1081
222
- annofabcli-1.108.0.dist-info/RECORD,,
223
+ annofabcli-1.110.0.dist-info/METADATA,sha256=IkiHLkw9nFBKWbtVvoy_aedwGZ7Xl0d-gFTF4xDNnSE,5134
224
+ annofabcli-1.110.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
225
+ annofabcli-1.110.0.dist-info/entry_points.txt,sha256=C2uSUc-kkLJpoK_mDL5FEMAdorLEMPfwSf8VBMYnIFM,56
226
+ annofabcli-1.110.0.dist-info/licenses/LICENSE,sha256=pcqWYfxFtxBzhvKp3x9MXNM4xciGb2eFewaRhXUNHlo,1081
227
+ annofabcli-1.110.0.dist-info/RECORD,,