From 5dab16a7e171cb2f9bf96edb0fba90ff7c192064 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Sun, 15 May 2022 15:19:04 +0900 Subject: [PATCH 1/5] update --- annofabapi/__version__.py | 2 +- annofabapi/utils.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/annofabapi/__version__.py b/annofabapi/__version__.py index 5684ec75..f79b00f5 100644 --- a/annofabapi/__version__.py +++ b/annofabapi/__version__.py @@ -1 +1 @@ -__version__ = "0.60.0" +__version__ = "0.60.1" diff --git a/annofabapi/utils.py b/annofabapi/utils.py index 855d35b2..4dfdf3ea 100644 --- a/annofabapi/utils.py +++ b/annofabapi/utils.py @@ -162,7 +162,7 @@ def can_put_annotation(task: Task, my_account_id: str) -> bool: return len(task["histories_by_phase"]) == 0 or task["account_id"] == my_account_id -def get_message(internationalization_message: Dict[str, Any], lang: str = "en-US") -> Optional[str]: +def get_message_for_i18n(internationalization_message: Dict[str, Any], lang: str = "en-US") -> Optional[str]: """ アノテーション仕様で使われている`InternalizationMessage`クラスの値から、指定された言語のメッセージを取得する。 diff --git a/pyproject.toml b/pyproject.toml index 98d582f6..90a67ac3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "annofabapi" -version = "0.60.0" +version = "0.60.1" description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)" authors = ["yuji38kwmt"] license = "MIT" From 661f7ed90de114b45fcf318fc700a557e8190845 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Sun, 15 May 2022 15:34:42 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=E4=B8=8D=E5=85=B7=E5=90=88=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- annofabapi/__version__.py | 2 +- annofabapi/utils.py | 14 ++++++++++---- pyproject.toml | 2 +- tests/test_local_utils.py | 20 ++++++++++++++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/annofabapi/__version__.py b/annofabapi/__version__.py index f79b00f5..1569b5e1 100644 --- a/annofabapi/__version__.py +++ b/annofabapi/__version__.py @@ -1 +1 @@ -__version__ = "0.60.1" +__version__ = "0.60.2" diff --git a/annofabapi/utils.py b/annofabapi/utils.py index 4dfdf3ea..c80c36b9 100644 --- a/annofabapi/utils.py +++ b/annofabapi/utils.py @@ -168,11 +168,17 @@ def get_message_for_i18n(internationalization_message: Dict[str, Any], lang: str Args: internationalization_message: 多言語化されたメッセージ - lang: 取得したいメッセージに対応する言語 + lang: 取得したいメッセージに対応する言語コード。`en-US`または`ja-JP`のみサポートしています。 Returns: 指定した言語に対応するメッセージ。見つからない場合はNoneを返します。 - """ - messages = internationalization_message["messages"] - return more_itertools.first_true(messages, pred=lambda e: e["lang"] == lang) + Raises: + ValueError: 引数langに対応するメッセージが見つからない場合 + """ + messages: List[str] = internationalization_message["messages"] + result = more_itertools.first_true(messages, pred=lambda e: e["lang"] == lang) + if result is not None: + return result["message"] + else: + raise ValueError(f"lang='{lang}'であるメッセージは見つかりませんでした。") diff --git a/pyproject.toml b/pyproject.toml index 90a67ac3..a6794702 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "annofabapi" -version = "0.60.1" +version = "0.60.2" description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)" authors = ["yuji38kwmt"] license = "MIT" diff --git a/tests/test_local_utils.py b/tests/test_local_utils.py index 36478764..2557ef2d 100644 --- a/tests/test_local_utils.py +++ b/tests/test_local_utils.py @@ -1,5 +1,8 @@ +import pytest + from annofabapi.models import TaskPhase from annofabapi.utils import ( + get_message_for_i18n, get_number_of_rejections, get_task_history_index_skipped_acceptance, get_task_history_index_skipped_inspection, @@ -612,3 +615,20 @@ def test_get_task_history_index_skipped_inspection_検査1回_教師付で提出 actual = get_task_history_index_skipped_inspection(task_history_list) expected = [] assert all([a == b for a, b in zip(actual, expected)]) + + +def test_get_message_for_i18n(): + i18n_message = { + "messages": [{"lang": "ja-JP", "message": "自動車"}, {"lang": "en-US", "message": "car"}], + "default_lang": "ja-JP", + } + assert get_message_for_i18n(i18n_message) == "car" + assert get_message_for_i18n(i18n_message, lang="ja-JP") == "自動車" + + i18n_message2 = { + "messages": [{"lang": "ja-JP", "message": "自動車"}], + "default_lang": "ja-JP", + } + + with pytest.raises(ValueError): + get_message_for_i18n(i18n_message2, lang="en-US") From 7e1d00ecbdd9b3c13f7a59deef47ea392b58ac87 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Sun, 15 May 2022 15:36:00 +0900 Subject: [PATCH 3/5] =?UTF-8?q?mypy=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- annofabapi/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/annofabapi/utils.py b/annofabapi/utils.py index c80c36b9..01e544a7 100644 --- a/annofabapi/utils.py +++ b/annofabapi/utils.py @@ -176,7 +176,7 @@ def get_message_for_i18n(internationalization_message: Dict[str, Any], lang: str Raises: ValueError: 引数langに対応するメッセージが見つからない場合 """ - messages: List[str] = internationalization_message["messages"] + messages: List[Dict[str, str]] = internationalization_message["messages"] result = more_itertools.first_true(messages, pred=lambda e: e["lang"] == lang) if result is not None: return result["message"] From 57c2ca3ca9f89ba4f783dc06a7ce908861b8eeb0 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Mon, 16 May 2022 12:05:17 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=E5=9E=8B=E3=83=92=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- annofabapi/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/annofabapi/utils.py b/annofabapi/utils.py index 01e544a7..050bea54 100644 --- a/annofabapi/utils.py +++ b/annofabapi/utils.py @@ -162,7 +162,7 @@ def can_put_annotation(task: Task, my_account_id: str) -> bool: return len(task["histories_by_phase"]) == 0 or task["account_id"] == my_account_id -def get_message_for_i18n(internationalization_message: Dict[str, Any], lang: str = "en-US") -> Optional[str]: +def get_message_for_i18n(internationalization_message: Dict[str, Any], lang: str = "en-US") -> str: """ アノテーション仕様で使われている`InternalizationMessage`クラスの値から、指定された言語のメッセージを取得する。 @@ -171,7 +171,7 @@ def get_message_for_i18n(internationalization_message: Dict[str, Any], lang: str lang: 取得したいメッセージに対応する言語コード。`en-US`または`ja-JP`のみサポートしています。 Returns: - 指定した言語に対応するメッセージ。見つからない場合はNoneを返します。 + 指定した言語に対応するメッセージ。 Raises: ValueError: 引数langに対応するメッセージが見つからない場合 From 92293e43fffc9d66f9d09a5e3f711cd0357a2078 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Mon, 16 May 2022 12:05:33 +0900 Subject: [PATCH 5/5] version up --- annofabapi/__version__.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/annofabapi/__version__.py b/annofabapi/__version__.py index 1569b5e1..faa966d1 100644 --- a/annofabapi/__version__.py +++ b/annofabapi/__version__.py @@ -1 +1 @@ -__version__ = "0.60.2" +__version__ = "0.60.3" diff --git a/pyproject.toml b/pyproject.toml index a6794702..cfb5d001 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "annofabapi" -version = "0.60.2" +version = "0.60.3" description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)" authors = ["yuji38kwmt"] license = "MIT"