From 30ce3041d797ede1564e8533615f41637a14f74a Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Wed, 18 Mar 2020 13:19:45 +0900 Subject: [PATCH 1/4] update swagger --- generate/swagger/swagger.v2.yaml | 2 +- generate/swagger/swagger.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/generate/swagger/swagger.v2.yaml b/generate/swagger/swagger.v2.yaml index b3c9c74f..9e36f8a5 100644 --- a/generate/swagger/swagger.v2.yaml +++ b/generate/swagger/swagger.v2.yaml @@ -76,7 +76,7 @@ info: WebhookID | プロジェクト内で一意 入力データセットID | 組織内で一意 - version: 0.78.0 + version: 0.78.2 title: AnnoFab Web API x-logo: url: "https://annofab.com/images/logo_landscape.png" diff --git a/generate/swagger/swagger.yaml b/generate/swagger/swagger.yaml index a0aff31a..4aa48595 100644 --- a/generate/swagger/swagger.yaml +++ b/generate/swagger/swagger.yaml @@ -76,7 +76,7 @@ info: WebhookID | プロジェクト内で一意 入力データセットID | 組織内で一意 - version: 0.78.0 + version: 0.78.2 title: AnnoFab Web API x-logo: url: "https://annofab.com/images/logo_landscape.png" From 276ff537d7365b4fca5537b93a13710816a23a95 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Wed, 18 Mar 2020 13:50:15 +0900 Subject: [PATCH 2/4] =?UTF-8?q?`can=5Fput=5Fannotation`=20=E3=83=A1?= =?UTF-8?q?=E3=82=BD=E3=83=83=E3=83=89=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- annofabapi/utils.py | 26 +++++++++++--------------- annofabapi/wrapper.py | 14 +++++++++----- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/annofabapi/utils.py b/annofabapi/utils.py index f36f9e35..d67a62fd 100644 --- a/annofabapi/utils.py +++ b/annofabapi/utils.py @@ -15,7 +15,7 @@ import requests from requests.structures import CaseInsensitiveDict -from annofabapi.models import TaskHistory, TaskPhase +from annofabapi.models import Task, TaskHistory, TaskPhase def raise_for_status(response: requests.Response): @@ -222,21 +222,17 @@ def get_task_history_index_skipped_inspection(task_history_list: List[TaskHistor return index_list -def first_true(iterable, default=None, pred=None): +def can_put_annotation(task: Task, my_account_id: str) -> bool: """ - Returns the first true value in the iterable. + 対象タスクが、`put_annotation` APIで、アノテーションを更新できる状態かどうか。 + 過去に担当者が割り当たっている場合、または現在の担当者自分自身の場合は、アノテーションを更新できる。 - If no true value is found, returns *default* - - If *pred* is not None, returns the first item for which - ``pred(item) == True`` . - - >>> first_true(range(10)) - 1 - >>> first_true(range(10), pred=lambda x: x > 5) - 6 - >>> first_true(range(10), default='missing', pred=lambda x: x > 9) - 'missing' + Args: + task: 対象タスク + my_account_id: 自分(ログインしているユーザ)のアカウントID + Returns: + Trueならば、タスクの状態を変更せずに`put_annotation` APIを実行できる。 """ - return next(filter(pred, iterable), default) + # ログインユーザはプロジェクトオーナであること前提 + return len(task["histories_by_phase"]) == 0 or task["account_id"] == my_account_id diff --git a/annofabapi/wrapper.py b/annofabapi/wrapper.py index 24ed8ac1..77a808bf 100644 --- a/annofabapi/wrapper.py +++ b/annofabapi/wrapper.py @@ -16,7 +16,7 @@ from annofabapi.models import (AnnotationDataHoldingType, AnnotationSpecsV1, InputData, Inspection, InspectionStatus, Instruction, JobInfo, JobStatus, JobType, MyOrganization, Organization, OrganizationMember, Project, ProjectMember, SupplementaryData, Task) -from annofabapi.utils import allow_404_error, first_true +from annofabapi.utils import allow_404_error logger = logging.getLogger(__name__) @@ -41,6 +41,10 @@ class AnnotationSpecsRelation: choice_id: Dict[ChoiceKey, ChoiceKey] +def __first_true(iterable, default=None, pred=None): + return next(filter(pred, iterable), default) + + class Wrapper: """ AnnofabApiのラッパー. @@ -389,7 +393,7 @@ def get_annotation_specs_relation(self, src_project_id: str, dest_project_id: st dict_label_id: Dict[str, str] = {} for src_label in src_annotation_specs["labels"]: src_label_name_en = self.__get_label_name_en(src_label) - dest_label = first_true(dest_labels, pred=lambda e, f=src_label_name_en: self.__get_label_name_en(e) == f) + dest_label = __first_true(dest_labels, pred=lambda e, f=src_label_name_en: self.__get_label_name_en(e) == f) if dest_label is not None: dict_label_id[src_label["label_id"]] = dest_label["label_id"] @@ -397,7 +401,7 @@ def get_annotation_specs_relation(self, src_project_id: str, dest_project_id: st dict_choice_id: Dict[ChoiceKey, ChoiceKey] = {} for src_additional in src_annotation_specs["additionals"]: src_additional_name_en = self.__get_additional_data_definition_name_en(src_additional) - dest_additional = first_true( + dest_additional = __first_true( dest_additionals, pred=lambda e, f=src_additional_name_en: self.__get_additional_data_definition_name_en(e) == f) if dest_additional is None: @@ -409,8 +413,8 @@ def get_annotation_specs_relation(self, src_project_id: str, dest_project_id: st dest_choices = dest_additional["choices"] for src_choice in src_additional["choices"]: src_choice_name_en = self.__get_choice_name_en(src_choice) - dest_choice = first_true(dest_choices, - pred=lambda e, f=src_choice_name_en: self.__get_choice_name_en(e) == f) + dest_choice = __first_true(dest_choices, + pred=lambda e, f=src_choice_name_en: self.__get_choice_name_en(e) == f) if dest_choice is not None: dict_choice_id[ChoiceKey(src_additional["additional_data_definition_id"], src_choice["choice_id"])] = ChoiceKey( From a822b093c95fe8b25ed8452ae3ebb61c0ca48c8b Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Wed, 18 Mar 2020 13:50:36 +0900 Subject: [PATCH 3/4] update README --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a95adf1b..7ce12652 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,15 @@ * 現在、APIは開発途上版です。予告なく互換性のない変更がある可能性をご了承ください。 * put, post, delete系のメソッドを間違えて実行してしまわないよう、注意してください。特に「プロジェクト削除」や「アノテーション仕様更新」のAPIには十分注意してください。 -## 廃止予定 +# 廃止予定 + +## 2020-05-01以降 utilsのいくつかのメソッドを非公開 +以下のメソッドを非公開にします。以下のメソッドは本来非公開用でして、外部で利用することを想定していなかったためです。 +* utils.raise_for_status +* utils.log_error_response +* utils.download + + # Features cURLやPostmanなどよりも簡単にAnnoFab Web APIにアクセスできます。 From ed19dcd17a66a341537bfd686ba4d7cb190bff02 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Wed, 18 Mar 2020 13:51:43 +0900 Subject: [PATCH 4/4] version up --- annofabapi/__version__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/annofabapi/__version__.py b/annofabapi/__version__.py index bcf7f7e0..18660569 100644 --- a/annofabapi/__version__.py +++ b/annofabapi/__version__.py @@ -1 +1 @@ -__version__ = '0.29.2' +__version__ = '0.29.3'