Skip to content

Commit

Permalink
関数の微修正 (#459)
Browse files Browse the repository at this point in the history
* update

* 不具合修正

* mypy修正

* 型ヒントの修正

* version up
  • Loading branch information
yuji38kwmt committed May 16, 2022
1 parent 84fb968 commit 5522601
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 8 deletions.
2 changes: 1 addition & 1 deletion annofabapi/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.60.0"
__version__ = "0.60.3"
18 changes: 12 additions & 6 deletions annofabapi/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,17 +162,23 @@ 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") -> str:
"""
アノテーション仕様で使われている`InternalizationMessage`クラスの値から、指定された言語のメッセージを取得する。
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[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"]
else:
raise ValueError(f"lang='{lang}'であるメッセージは見つかりませんでした。")
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "annofabapi"
version = "0.60.0"
version = "0.60.3"
description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)"
authors = ["yuji38kwmt"]
license = "MIT"
Expand Down
20 changes: 20 additions & 0 deletions tests/test_local_utils.py
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -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")

0 comments on commit 5522601

Please sign in to comment.