annofabcli 1.96.1__tar.gz → 1.97.0__tar.gz

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 (206) hide show
  1. {annofabcli-1.96.1 → annofabcli-1.97.0}/PKG-INFO +2 -2
  2. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/__version__.py +1 -1
  3. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/change_input_data_name.py +5 -7
  4. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/update_metadata_of_input_data.py +2 -1
  5. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/put_project_members.py +32 -44
  6. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/list_annotation_count.py +2 -2
  7. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/list_annotation_duration.py +2 -2
  8. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/productivity_per_date.py +5 -5
  9. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/user_performance.py +3 -3
  10. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/whole_performance.py +2 -2
  11. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/whole_productivity_per_date.py +2 -2
  12. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/worktime_per_date.py +1 -1
  13. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/supplementary/delete_supplementary_data.py +11 -18
  14. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/supplementary/put_supplementary_data.py +58 -81
  15. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/update_metadata_of_task.py +2 -1
  16. {annofabcli-1.96.1 → annofabcli-1.97.0}/pyproject.toml +4 -3
  17. {annofabcli-1.96.1 → annofabcli-1.97.0}/LICENSE +0 -0
  18. {annofabcli-1.96.1 → annofabcli-1.97.0}/README.md +0 -0
  19. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/__init__.py +0 -0
  20. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/__main__.py +0 -0
  21. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/__init__.py +0 -0
  22. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/annotation_query.py +0 -0
  23. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/change_annotation_attributes.py +0 -0
  24. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/change_annotation_properties.py +0 -0
  25. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/copy_annotation.py +0 -0
  26. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/delete_annotation.py +0 -0
  27. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/download_annotation_zip.py +0 -0
  28. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/dump_annotation.py +0 -0
  29. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/import_annotation.py +0 -0
  30. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/list_annotation.py +0 -0
  31. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/list_annotation_count.py +0 -0
  32. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/restore_annotation.py +0 -0
  33. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation/subcommand_annotation.py +0 -0
  34. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/__init__.py +0 -0
  35. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/export_annotation_specs.py +0 -0
  36. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/get_annotation_specs_with_attribute_id_replaced.py +0 -0
  37. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/get_annotation_specs_with_choice_id_replaced.py +0 -0
  38. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/get_annotation_specs_with_label_id_replaced.py +0 -0
  39. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/list_annotation_specs_attribute.py +0 -0
  40. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/list_annotation_specs_choice.py +0 -0
  41. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/list_annotation_specs_history.py +0 -0
  42. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/list_annotation_specs_label.py +0 -0
  43. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/list_attribute_restriction.py +0 -0
  44. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/list_label_color.py +0 -0
  45. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/put_label_color.py +0 -0
  46. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/annotation_specs/subcommand_annotation_specs.py +0 -0
  47. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/__init__.py +0 -0
  48. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/delete_comment.py +0 -0
  49. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/download_comment_json.py +0 -0
  50. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/list_all_comment.py +0 -0
  51. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/list_comment.py +0 -0
  52. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/put_comment.py +0 -0
  53. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/put_comment_simply.py +0 -0
  54. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/put_inspection_comment.py +0 -0
  55. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/put_inspection_comment_simply.py +0 -0
  56. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/put_onhold_comment.py +0 -0
  57. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/put_onhold_comment_simply.py +0 -0
  58. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/subcommand_comment.py +0 -0
  59. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/comment/utils.py +0 -0
  60. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/__init__.py +0 -0
  61. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/annofab/__init__.py +0 -0
  62. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/annofab/project.py +0 -0
  63. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/bokeh.py +0 -0
  64. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/cli.py +0 -0
  65. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/dataclasses.py +0 -0
  66. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/download.py +0 -0
  67. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/enums.py +0 -0
  68. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/exceptions.py +0 -0
  69. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/facade.py +0 -0
  70. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/image.py +0 -0
  71. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/pandas.py +0 -0
  72. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/type_util.py +0 -0
  73. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/typing.py +0 -0
  74. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/utils.py +0 -0
  75. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/common/visualize.py +0 -0
  76. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/data/logging.yaml +0 -0
  77. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/experimental/__init__.py +0 -0
  78. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/experimental/list_out_of_range_annotation_for_movie.py +0 -0
  79. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/experimental/subcommand_experimental.py +0 -0
  80. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/filesystem/__init__.py +0 -0
  81. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/filesystem/draw_annotation.py +0 -0
  82. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/filesystem/filter_annotation.py +0 -0
  83. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/filesystem/mask_user_info.py +0 -0
  84. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/filesystem/merge_annotation.py +0 -0
  85. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/filesystem/subcommand_filesystem.py +0 -0
  86. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/__init__.py +0 -0
  87. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/copy_input_data.py +0 -0
  88. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/delete_input_data.py +0 -0
  89. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/delete_metadata_key_of_input_data.py +0 -0
  90. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/download_input_data_json.py +0 -0
  91. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/list_all_input_data.py +0 -0
  92. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/list_all_input_data_merged_task.py +0 -0
  93. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/list_input_data.py +0 -0
  94. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/put_input_data.py +0 -0
  95. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/put_input_data_with_zip.py +0 -0
  96. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/subcommand_input_data.py +0 -0
  97. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/input_data/utils.py +0 -0
  98. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/instruction/__init__.py +0 -0
  99. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/instruction/copy_instruction.py +0 -0
  100. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/instruction/download_instruction.py +0 -0
  101. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/instruction/list_instruction_history.py +0 -0
  102. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/instruction/subcommand_instruction.py +0 -0
  103. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/instruction/upload_instruction.py +0 -0
  104. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/job/__init__.py +0 -0
  105. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/job/delete_job.py +0 -0
  106. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/job/list_job.py +0 -0
  107. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/job/list_last_job.py +0 -0
  108. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/job/subcommand_job.py +0 -0
  109. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/job/wait_job.py +0 -0
  110. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/my_account/__init__.py +0 -0
  111. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/my_account/get_my_account.py +0 -0
  112. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/my_account/subcommand_my_account.py +0 -0
  113. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization/__init__.py +0 -0
  114. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization/list_organization.py +0 -0
  115. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization/subcommand_organization.py +0 -0
  116. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization_member/__init__.py +0 -0
  117. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization_member/change_organization_member.py +0 -0
  118. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization_member/delete_organization_member.py +0 -0
  119. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization_member/invite_organization_member.py +0 -0
  120. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization_member/list_organization_member.py +0 -0
  121. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/organization_member/subcommand_organization_member.py +0 -0
  122. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project/__init__.py +0 -0
  123. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project/change_project_status.py +0 -0
  124. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project/copy_project.py +0 -0
  125. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project/diff_projects.py +0 -0
  126. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project/list_project.py +0 -0
  127. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project/put_project.py +0 -0
  128. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project/subcommand_project.py +0 -0
  129. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/__init__.py +0 -0
  130. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/change_project_members.py +0 -0
  131. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/copy_project_members.py +0 -0
  132. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/drop_project_members.py +0 -0
  133. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/invite_project_members.py +0 -0
  134. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/list_users.py +0 -0
  135. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/project_member/subcommand_project_member.py +0 -0
  136. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/py.typed +0 -0
  137. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/stat_visualization/__init__.py +0 -0
  138. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/stat_visualization/mask_visualization_dir.py +0 -0
  139. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/stat_visualization/merge_visualization_dir.py +0 -0
  140. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/stat_visualization/subcommand_stat_visualization.py +0 -0
  141. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/stat_visualization/summarize_whole_performance_csv.py +0 -0
  142. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/stat_visualization/write_graph.py +0 -0
  143. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/stat_visualization/write_performance_rating_csv.py +0 -0
  144. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/__init__.py +0 -0
  145. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/histogram.py +0 -0
  146. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/linegraph.py +0 -0
  147. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/list_annotation_attribute.py +0 -0
  148. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/list_video_duration.py +0 -0
  149. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/list_worktime.py +0 -0
  150. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/scatter.py +0 -0
  151. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/subcommand_statistics.py +0 -0
  152. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/summarize_task_count.py +0 -0
  153. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/summarize_task_count_by_task_id_group.py +0 -0
  154. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/summarize_task_count_by_user.py +0 -0
  155. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/__init__.py +0 -0
  156. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/__init__.py +0 -0
  157. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/actual_worktime.py +0 -0
  158. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/annotation_count.py +0 -0
  159. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/cumulative_productivity.py +0 -0
  160. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/custom_production_volume.py +0 -0
  161. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/input_data_count.py +0 -0
  162. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/inspection_comment_count.py +0 -0
  163. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/project_performance.py +0 -0
  164. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/task.py +0 -0
  165. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/task_history.py +0 -0
  166. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/task_worktime_by_phase_user.py +0 -0
  167. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/dataframe/user.py +0 -0
  168. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/filtering_query.py +0 -0
  169. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/model.py +0 -0
  170. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/project_dir.py +0 -0
  171. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualization/visualization_source_files.py +0 -0
  172. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualize_annotation_count.py +0 -0
  173. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualize_annotation_duration.py +0 -0
  174. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualize_statistics.py +0 -0
  175. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/statistics/visualize_video_duration.py +0 -0
  176. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/supplementary/__init__.py +0 -0
  177. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/supplementary/list_supplementary_data.py +0 -0
  178. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/supplementary/subcommand_supplementary.py +0 -0
  179. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/__init__.py +0 -0
  180. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/cancel_acceptance.py +0 -0
  181. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/change_operator.py +0 -0
  182. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/change_status_to_break.py +0 -0
  183. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/change_status_to_on_hold.py +0 -0
  184. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/complete_tasks.py +0 -0
  185. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/copy_tasks.py +0 -0
  186. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/delete_metadata_key_of_task.py +0 -0
  187. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/delete_tasks.py +0 -0
  188. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/download_task_json.py +0 -0
  189. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/list_all_tasks.py +0 -0
  190. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/list_all_tasks_added_task_history.py +0 -0
  191. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/list_tasks.py +0 -0
  192. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/list_tasks_added_task_history.py +0 -0
  193. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/put_tasks.py +0 -0
  194. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/put_tasks_by_count.py +0 -0
  195. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/reject_tasks.py +0 -0
  196. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task/subcommand_task.py +0 -0
  197. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history/__init__.py +0 -0
  198. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history/download_task_history_json.py +0 -0
  199. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history/list_all_task_history.py +0 -0
  200. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history/list_task_history.py +0 -0
  201. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history/subcommand_task_history.py +0 -0
  202. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history_event/__init__.py +0 -0
  203. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history_event/download_task_history_event_json.py +0 -0
  204. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history_event/list_all_task_history_event.py +0 -0
  205. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history_event/list_worktime.py +0 -0
  206. {annofabcli-1.96.1 → annofabcli-1.97.0}/annofabcli/task_history_event/subcommand_task_history_event.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: annofabcli
3
- Version: 1.96.1
3
+ Version: 1.97.0
4
4
  Summary: Utility Command Line Interface for AnnoFab
5
5
  Home-page: https://github.com/kurusugawa-computer/annofab-cli
6
6
  License: MIT
@@ -20,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Topic :: Utilities
21
21
  Requires-Dist: Pillow
22
22
  Requires-Dist: annofabapi (>=1.1,<2.0)
23
- Requires-Dist: bokeh (>=3.3,<4.0)
23
+ Requires-Dist: bokeh (>=3.3,<3.7)
24
24
  Requires-Dist: dictdiffer
25
25
  Requires-Dist: isodate
26
26
  Requires-Dist: jmespath
@@ -1 +1 @@
1
- __version__ = "1.96.1" # `poetry-dynamic-versioning`を使ってGitHubのバージョンタグを取得している。変更不要
1
+ __version__ = "1.97.0" # `poetry-dynamic-versioning`を使ってGitHubのバージョンタグを取得している。変更不要
@@ -143,11 +143,9 @@ def create_changed_input_data_list_from_csv(csv_file: Path) -> list[ChangedInput
143
143
  変更対象の入力データのlist
144
144
  """
145
145
  df_input_data = pandas.read_csv(
146
- str(csv_file),
147
- header=None,
148
- names=("input_data_id", "input_data_name"),
146
+ csv_file,
149
147
  # 文字列として読み込むようにする
150
- dtype={"input_data_id": str, "input_data_name": str},
148
+ dtype={"input_data_id": "string", "input_data_name": "string"},
151
149
  )
152
150
 
153
151
  input_data_dict_list = df_input_data.to_dict("records")
@@ -211,9 +209,9 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
211
209
  "変更対象の入力データが記載されたCSVファイルのパスを指定してください。\n"
212
210
  "CSVのフォーマットは以下の通りです。"
213
211
  "\n"
214
- " * ヘッダ行なし, カンマ区切り\n"
215
- " * 1列目: input_data_id (required)\n"
216
- " * 2列目: input_data_name (required)\n"
212
+ " * ヘッダ行あり, カンマ区切り\n"
213
+ " * input_data_id (required)\n"
214
+ " * input_data_name (required)\n"
217
215
  ),
218
216
  )
219
217
 
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import argparse
4
+ import copy
4
5
  import json
5
6
  import logging
6
7
  import multiprocessing
@@ -182,7 +183,7 @@ class UpdateMetadata(CommandLine):
182
183
  sys.exit(COMMAND_LINE_ERROR_STATUS_CODE)
183
184
 
184
185
  assert input_data_id_list is not None, "'--metadata'を指定したときは'--input_data_id'は必須です。"
185
- metadata_by_input_data_id = {input_data_id: metadata for input_data_id in input_data_id_list}
186
+ metadata_by_input_data_id = {input_data_id: copy.deepcopy(metadata) for input_data_id in input_data_id_list}
186
187
 
187
188
  elif args.metadata_by_input_data_id is not None:
188
189
  metadata_by_input_data_id = annofabcli.common.cli.get_json_from_args(args.metadata_by_input_data_id)
@@ -5,7 +5,6 @@ from pathlib import Path
5
5
  from typing import Any, Optional
6
6
 
7
7
  import more_itertools
8
- import numpy
9
8
  import pandas
10
9
  import requests
11
10
  from annofabapi.models import ProjectMemberRole, ProjectMemberStatus
@@ -26,8 +25,8 @@ class Member(DataClassJsonMixin):
26
25
 
27
26
  user_id: str
28
27
  member_role: ProjectMemberRole
29
- sampling_inspection_rate: Optional[int]
30
- sampling_acceptance_rate: Optional[int]
28
+ sampling_inspection_rate: Optional[int] = None
29
+ sampling_acceptance_rate: Optional[int] = None
31
30
 
32
31
 
33
32
  class PutProjectMembers(CommandLine):
@@ -44,7 +43,7 @@ class PutProjectMembers(CommandLine):
44
43
  def member_exists(members: list[dict[str, Any]], user_id: str) -> bool:
45
44
  return PutProjectMembers.find_member(members, user_id) is not None
46
45
 
47
- def invite_project_member(self, project_id: str, member: Member, old_project_members: list[dict[str, Any]]): # noqa: ANN201
46
+ def invite_project_member(self, project_id: str, member: Member, old_project_members: list[dict[str, Any]]) -> dict[str, Any]:
48
47
  old_member = self.find_member(old_project_members, member.user_id)
49
48
  last_updated_datetime = old_member["updated_datetime"] if old_member is not None else None
50
49
 
@@ -58,7 +57,7 @@ class PutProjectMembers(CommandLine):
58
57
  updated_project_member = self.service.api.put_project_member(project_id, member.user_id, request_body=request_body)[0]
59
58
  return updated_project_member
60
59
 
61
- def delete_project_member(self, project_id: str, deleted_member: dict[str, Any]): # noqa: ANN201
60
+ def delete_project_member(self, project_id: str, deleted_member: dict[str, Any]) -> dict[str, Any]:
62
61
  request_body = {
63
62
  "member_status": ProjectMemberStatus.INACTIVE.value,
64
63
  "member_role": deleted_member["member_role"],
@@ -67,7 +66,7 @@ class PutProjectMembers(CommandLine):
67
66
  updated_project_member = self.service.api.put_project_member(project_id, deleted_member["user_id"], request_body=request_body)[0]
68
67
  return updated_project_member
69
68
 
70
- def put_project_members(self, project_id: str, members: list[Member], delete: bool = False): # noqa: ANN201, FBT001, FBT002
69
+ def put_project_members(self, project_id: str, members: list[Member], *, delete: bool = False) -> None:
71
70
  """
72
71
  プロジェクトメンバを一括で登録する。
73
72
 
@@ -88,7 +87,7 @@ class PutProjectMembers(CommandLine):
88
87
 
89
88
  count_invite_members = 0
90
89
  # プロジェクトメンバを登録
91
- logger.info(f"{project_title} に、{len(members)} 件のプロジェクトメンバを登録します。")
90
+ logger.info(f"プロジェクト '{project_title}' に、{len(members)} 件のプロジェクトメンバを登録します。")
92
91
  for member in members:
93
92
  if member.user_id == self.service.api.login_user_id:
94
93
  logger.debug(f"ユーザ '{member.user_id}'は自分自身なので、登録しません。")
@@ -99,7 +98,7 @@ class PutProjectMembers(CommandLine):
99
98
  continue
100
99
 
101
100
  message_for_confirm = (
102
- f"ユーザ '{member.user_id}'を、{project_title} プロジェクトのメンバに登録しますか?member_role={member.member_role.value}"
101
+ f"ユーザ '{member.user_id}'を、プロジェクト'{project_title}'のメンバーに登録しますか? member_role='{member.member_role.value}'"
103
102
  )
104
103
  if not self.confirm_processing(message_for_confirm):
105
104
  continue
@@ -107,14 +106,15 @@ class PutProjectMembers(CommandLine):
107
106
  # メンバを登録
108
107
  try:
109
108
  self.invite_project_member(project_id, member, old_project_members)
110
- logger.debug(f"user_id = {member.user_id}, member_role = {member.member_role.value} のユーザをプロジェクトメンバに登録しました。")
109
+ logger.debug(f"user_id = '{member.user_id}', member_role = '{member.member_role.value}' のユーザをプロジェクトメンバに登録しました。")
111
110
  count_invite_members += 1
112
111
 
113
- except requests.exceptions.HTTPError as e:
114
- logger.warning(e)
115
- logger.warning(f"プロジェクトメンバの登録に失敗しました。user_id = {member.user_id}, member_role = {member.member_role.value}")
112
+ except requests.exceptions.HTTPError:
113
+ logger.warning(
114
+ f"プロジェクトメンバの登録に失敗しました。user_id = '{member.user_id}', member_role = '{member.member_role.value}'", exc_info=True
115
+ )
116
116
 
117
- logger.info(f"{project_title} に、{count_invite_members} / {len(members)} 件のプロジェクトメンバを登録しました。")
117
+ logger.info(f"プロジェクト'{project_title}' に、{count_invite_members} / {len(members)} 件のプロジェクトメンバを登録しました。")
118
118
 
119
119
  # プロジェクトメンバを削除
120
120
  if delete:
@@ -125,7 +125,7 @@ class PutProjectMembers(CommandLine):
125
125
  ]
126
126
 
127
127
  count_delete_members = 0
128
- logger.info(f"{project_title} から、{len(deleted_members)} 件のプロジェクトメンバを削除します。")
128
+ logger.info(f"プロジェクト '{project_title}' から、{len(deleted_members)} 件のプロジェクトメンバを削除します。")
129
129
  for deleted_member in deleted_members:
130
130
  message_for_confirm = f"ユーザ '{deleted_member['user_id']}'を、{project_title} のプロジェクトメンバから削除しますか?"
131
131
  if not self.confirm_processing(message_for_confirm):
@@ -135,31 +135,18 @@ class PutProjectMembers(CommandLine):
135
135
  self.delete_project_member(project_id, deleted_member)
136
136
  logger.debug(f"ユーザ '{deleted_member['user_id']}' をプロジェクトメンバから削除しました。")
137
137
  count_delete_members += 1
138
- except requests.exceptions.HTTPError as e:
139
- logger.warning(e)
140
- logger.warning(f"プロジェクトメンバの削除に失敗しました。user_id = '{deleted_member['user_id']}' ")
138
+ except requests.exceptions.HTTPError:
139
+ logger.warning(f"プロジェクトメンバの削除に失敗しました。user_id = '{deleted_member['user_id']}' ", exc_info=True)
141
140
 
142
- logger.info(f"{project_title} から {count_delete_members} / {len(deleted_members)} 件のプロジェクトメンバを削除しました。")
141
+ logger.info(f"プロジェクト '{project_title}' から {count_delete_members} / {len(deleted_members)} 件のプロジェクトメンバを削除しました。")
143
142
 
144
143
  @staticmethod
145
144
  def get_members_from_csv(csv_path: Path) -> list[Member]:
146
- def create_member(e): # noqa: ANN001, ANN202
147
- return Member(
148
- user_id=e.user_id,
149
- member_role=ProjectMemberRole(e.member_role),
150
- sampling_inspection_rate=e.sampling_inspection_rate,
151
- sampling_acceptance_rate=e.sampling_acceptance_rate,
152
- )
153
-
154
145
  df = pandas.read_csv(
155
- str(csv_path),
156
- sep=",",
157
- header=None,
158
- names=("user_id", "member_role", "sampling_inspection_rate", "sampling_acceptance_rate"),
159
- # IDは必ず文字列として読み込むようにする
160
- dtype={"user_id": str},
161
- ).replace({numpy.nan: None})
162
- members = [create_member(e) for e in df.itertuples()]
146
+ csv_path,
147
+ dtype={"user_id": "string", "member_role": "string", "sampling_inspection_rate": "Int64", "sampling_acceptance_rate": "Int64"},
148
+ )
149
+ members = [Member.from_dict(e) for e in df.to_dict("records")]
163
150
  return members
164
151
 
165
152
  def main(self) -> None:
@@ -184,12 +171,14 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
184
171
  type=str,
185
172
  required=True,
186
173
  help=(
187
- "プロジェクトメンバが記載されたCVファイルのパスを指定してください。"
188
- "CSVのフォーマットは、「1列目:user_id(required), 2列目:member_role(required), "
189
- "3列目:sampling_inspection_rate, 4列目:sampling_acceptance_rate, ヘッダ行なし, カンマ区切り」です。"
190
- "member_roleは ``owner``, ``worker``, ``accepter``, ``training_data_user`` のいずれかです。"
191
- "sampling_inspection_rate, sampling_acceptance_rate を省略した場合は未設定になります。"
192
- "ただし自分自身は登録しません。"
174
+ "プロジェクトメンバが記載されたCSVファイルのパスを指定してください。"
175
+ "CSVのフォーマットは、ヘッダあり、カンマ区切りです。\n"
176
+ " * user_id (required)\n"
177
+ " * member_role (required)\n"
178
+ " * sampling_inspection_rate\n"
179
+ " * sampling_acceptance_rate\n"
180
+ "member_roleには ``owner``, ``worker``, ``accepter``, ``training_data_user`` のいずれかを指定します。\n"
181
+ "自分自身は登録できません。"
193
182
  ),
194
183
  )
195
184
 
@@ -202,10 +191,9 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
202
191
 
203
192
  def add_parser(subparsers: Optional[argparse._SubParsersAction] = None) -> argparse.ArgumentParser:
204
193
  subcommand_name = "put"
205
- subcommand_help = "プロジェクトメンバを登録する。"
206
- description = "プロジェクトメンバを登録する。"
207
- epilog = "オーナロールを持つユーザで実行してください。"
194
+ subcommand_help = "プロジェクトメンバを登録します。"
195
+ epilog = "オーナーロールを持つユーザで実行してください。"
208
196
 
209
- parser = annofabcli.common.cli.add_parser(subparsers, subcommand_name, subcommand_help, description, epilog=epilog)
197
+ parser = annofabcli.common.cli.add_parser(subparsers, subcommand_name, subcommand_help, epilog=epilog)
210
198
  parse_args(parser)
211
199
  return parser
@@ -552,7 +552,7 @@ class AttributeCountCsv:
552
552
 
553
553
  # アノテーション数の列のNaNを0に変換する
554
554
  value_columns = self._value_columns(counter_list, prior_attribute_columns)
555
- df = df.fillna({column: 0 for column in value_columns})
555
+ df = df.fillna(dict.fromkeys(value_columns, 0))
556
556
 
557
557
  print_csv(df, output=str(output_file), to_csv_kwargs=self.csv_format)
558
558
 
@@ -655,7 +655,7 @@ class LabelCountCsv:
655
655
 
656
656
  # アノテーション数列のNaNを0に変換する
657
657
  value_columns = self._value_columns(counter_list, prior_label_columns)
658
- df = df.fillna({column: 0 for column in value_columns})
658
+ df = df.fillna(dict.fromkeys(value_columns, 0))
659
659
 
660
660
  print_csv(df, output=str(output_file), to_csv_kwargs=self.csv_format)
661
661
 
@@ -411,7 +411,7 @@ class AnnotationDurationCsvByAttribute:
411
411
 
412
412
  # アノテーション数の列のNaNを0に変換する
413
413
  value_columns = self._value_columns(annotation_duration_list, prior_attribute_columns)
414
- df = df.fillna({column: 0 for column in value_columns})
414
+ df = df.fillna(dict.fromkeys(value_columns, 0))
415
415
  return df
416
416
 
417
417
 
@@ -473,7 +473,7 @@ class AnnotationDurationCsvByLabel:
473
473
 
474
474
  # アノテーション数列のNaNを0に変換する
475
475
  value_columns = self._value_columns(annotation_duration_list, prior_label_columns)
476
- df = df.fillna({column: 0 for column in value_columns})
476
+ df = df.fillna(dict.fromkeys(value_columns, 0))
477
477
 
478
478
  return df
479
479
 
@@ -181,17 +181,17 @@ class AbstractPhaseProductivityPerDate(abc.ABC):
181
181
 
182
182
  # その他の欠損値(作業時間や生産量)を0で埋める
183
183
  df2 = df2.fillna(
184
- {
185
- col: 0
186
- for col in [
184
+ dict.fromkeys(
185
+ [
187
186
  "annotation_worktime_hour",
188
187
  "inspection_worktime_hour",
189
188
  "acceptance_worktime_hour",
190
189
  "task_count",
191
190
  "inspection_comment_count",
192
191
  *self.production_volume_columns,
193
- ]
194
- }
192
+ ],
193
+ 0,
194
+ )
195
195
  )
196
196
 
197
197
  return df2
@@ -571,7 +571,7 @@ class UserPerformance:
571
571
  level0_columns = ["monitored_worktime_hour", *task_worktime_by_phase_user.quantity_columns]
572
572
  columns = [(c0, c1) for c0, c1 in df.columns if c0 in level0_columns]
573
573
 
574
- return df.fillna({col: 0 for col in columns})
574
+ return df.fillna(dict.fromkeys(columns, 0))
575
575
 
576
576
  if task_completion_criteria == TaskCompletionCriteria.ACCEPTANCE_REACHED:
577
577
  # 受入フェーズに到達したらタスクの作業が完了したとみなす場合、
@@ -634,8 +634,8 @@ class UserPerformance:
634
634
  ]
635
635
 
636
636
  value_columns = columns - set(basic_columns)
637
- dtypes = {col: "string" for col in basic_columns}
638
- dtypes.update({col: "float64" for col in value_columns})
637
+ dtypes = dict.fromkeys(basic_columns, "string")
638
+ dtypes.update(dict.fromkeys(value_columns, "float64"))
639
639
  return df.astype(dtypes)
640
640
 
641
641
  def _validate_df_for_output(self, output_file: Path) -> bool:
@@ -197,8 +197,8 @@ class WholePerformance:
197
197
  ("working_days", ""),
198
198
  ]
199
199
 
200
- data: dict[tuple[str, str], float] = {key: 0 for key in worktime_columns + count_columns}
201
- data.update({key: numpy.nan for key in ratio_columns + stdev_columns + date_columns})
200
+ data: dict[tuple[str, str], float] = dict.fromkeys(worktime_columns + count_columns, 0)
201
+ data.update(dict.fromkeys(ratio_columns + stdev_columns + date_columns, numpy.nan))
202
202
 
203
203
  return cls(pandas.Series(data), task_completion_criteria, custom_production_volume_list=custom_production_volume_list)
204
204
 
@@ -187,7 +187,7 @@ class WholeProductivityPerCompletedDate:
187
187
  df_agg_sub_task["task_count"] = df_sub_task.pivot_table(values=["task_id"], index=date_column, aggfunc="count").fillna(0)
188
188
  else:
189
189
  # 列だけ作る
190
- df_agg_sub_task = df_agg_sub_task.assign(**{key: 0 for key in production_volume_columns}, task_count=0)
190
+ df_agg_sub_task = df_agg_sub_task.assign(**dict.fromkeys(production_volume_columns, 0), task_count=0)
191
191
 
192
192
  df_worktime = worktime_per_date.df
193
193
  if len(df_worktime) > 0:
@@ -929,7 +929,7 @@ class WholeProductivityPerFirstAnnotationStartedDate:
929
929
  ).fillna(0)
930
930
  else:
931
931
  # 列だけ作る
932
- df_agg_sub_task = df_agg_sub_task.assign(**{key: 0 for key in value_columns}, task_count=0)
932
+ df_agg_sub_task = df_agg_sub_task.assign(**dict.fromkeys(value_columns, 0), task_count=0)
933
933
 
934
934
  # 日付の一覧を生成
935
935
  if len(df_agg_sub_task) > 0:
@@ -200,7 +200,7 @@ class WorktimePerDate:
200
200
  "monitored_inspection_worktime_hour",
201
201
  "monitored_acceptance_worktime_hour",
202
202
  ]
203
- df.fillna({c: 0 for c in value_columns}, inplace=True)
203
+ df.fillna(dict.fromkeys(value_columns, 0), inplace=True)
204
204
 
205
205
  df = df.merge(df_member, how="left", on="account_id")
206
206
  return df[
@@ -31,18 +31,11 @@ key: input_data_id, value: supplementary_data_idのList
31
31
 
32
32
 
33
33
  def get_input_data_supplementary_data_dict_from_csv(csv_path: Path) -> InputDataSupplementaryDataDict:
34
- df = pandas.read_csv(
35
- str(csv_path),
36
- sep=",",
37
- header=None,
38
- names=[
39
- "input_data_id",
40
- "supplementary_data_id",
41
- ],
42
- # IDは必ず文字列として読み込むようにする
43
- dtype={"input_data_id": str, "supplementary_data_id": str},
34
+ df: pandas.DataFrame = pandas.read_csv(
35
+ csv_path,
36
+ dtype={"input_data_id": "string", "supplementary_data_id": "string"},
44
37
  )
45
- input_data_dict = defaultdict(list)
38
+ input_data_dict: InputDataSupplementaryDataDict = defaultdict(list)
46
39
  for input_data_id, supplementary_data_id in zip(df["input_data_id"], df["supplementary_data_id"]):
47
40
  input_data_dict[input_data_id].append(supplementary_data_id)
48
41
  return input_data_dict
@@ -58,7 +51,7 @@ def get_input_data_supplementary_data_dict_from_list(supplementary_data_list: li
58
51
 
59
52
 
60
53
  class DeleteSupplementaryDataMain(CommandLineWithConfirm):
61
- def __init__(self, service: annofabapi.Resource, all_yes: bool = False) -> None: # noqa: FBT001, FBT002
54
+ def __init__(self, service: annofabapi.Resource, *, all_yes: bool = False) -> None:
62
55
  self.service = service
63
56
  self.facade = AnnofabApiFacade(service)
64
57
  CommandLineWithConfirm.__init__(self, all_yes)
@@ -82,7 +75,7 @@ class DeleteSupplementaryDataMain(CommandLineWithConfirm):
82
75
 
83
76
  input_data = self.service.wrapper.get_input_data_or_none(project_id, input_data_id)
84
77
  if input_data is None:
85
- logger.warning(f"input_data_id={input_data_id} の入力データは存在しないのでスキップします。")
78
+ logger.warning(f"input_data_id='{input_data_id}' の入力データは存在しないのでスキップします。")
86
79
  return 0
87
80
 
88
81
  supplementary_data_list, _ = self.service.api.get_supplementary_data_list(project_id, input_data_id)
@@ -122,7 +115,7 @@ class DeleteSupplementaryDataMain(CommandLineWithConfirm):
122
115
  continue
123
116
  return deleted_count
124
117
 
125
- def delete_supplementary_data_list(self, project_id: str, input_data_dict: InputDataSupplementaryDataDict): # noqa: ANN201
118
+ def delete_supplementary_data_list(self, project_id: str, input_data_dict: InputDataSupplementaryDataDict) -> None:
126
119
  deleted_count = 0
127
120
  total_count = sum(len(e) for e in input_data_dict.values())
128
121
  for input_data_id, supplementary_data_id_list in input_data_dict.items():
@@ -168,7 +161,7 @@ class DeleteSupplementaryDataMain(CommandLineWithConfirm):
168
161
 
169
162
  return deleted_count
170
163
 
171
- def delete_supplementary_data_list_by_input_data_id(self, project_id: str, input_data_id_list: list[str]): # noqa: ANN201
164
+ def delete_supplementary_data_list_by_input_data_id(self, project_id: str, input_data_id_list: list[str]) -> None:
172
165
  dict_deleted_count: dict[str, int] = {}
173
166
  for input_data_id in input_data_id_list:
174
167
  input_data = self.service.wrapper.get_input_data_or_none(project_id, input_data_id)
@@ -261,9 +254,9 @@ def parse_args(parser: argparse.ArgumentParser) -> None:
261
254
  "削除する補助情報が記載されたCSVファイルのパスを指定してください。\n"
262
255
  "CSVのフォーマットは以下の通りです。"
263
256
  "詳細は https://annofab-cli.readthedocs.io/ja/latest/command_reference/supplementary/delete.html を参照してください。\n"
264
- " * ヘッダ行なし, カンマ区切り\n"
265
- " * 1列目: input_data_id (required)\n"
266
- " * 2列目: supplementary_data_id (required)\n"
257
+ " * ヘッダ行あり, カンマ区切り\n"
258
+ " * input_data_id (required)\n"
259
+ " * supplementary_data_id (required)\n"
267
260
  ),
268
261
  )
269
262