Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions annofabapi/util/annotation_specs.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def get_english_message(internationalization_message: InternationalizationMessag
"""


def get_message_with_lang(internationalization_message: InternationalizationMessage | dict[str, Any], lang: Lang | STR_LANG) -> str | None:
def get_message_with_lang(internationalization_message: InternationalizationMessage, lang: Lang | STR_LANG) -> str | None:
"""
`InternationalizationMessage`クラスの値から、指定した ``lang`` に対応するメッセージを取得します。

Expand All @@ -86,7 +86,7 @@ def get_message_with_lang(internationalization_message: InternationalizationMess
指定した言語に対応するメッセージ。見つからない場合はNoneを返します。

"""
messages = cast(list[InternationalizationMessageItem], internationalization_message["messages"])
messages = internationalization_message["messages"]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: InternationalizationMessageが辞書型ではなく属性アクセスを想定する場合、["messages"]ではなく属性のmessagesを使うことで実行時エラーを回避できます。 [possible issue, importance: 8]

Suggested change
messages = internationalization_message["messages"]
messages = internationalization_message.messages

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: 取得したmessagesがリストであることを確認し、想定外の型だった場合にNoneを返すことで安全性を高めます。 [possible issue, importance: 4]

Suggested change
messages = internationalization_message["messages"]
messages = internationalization_message["messages"]
if not isinstance(messages, list):
return None

if isinstance(lang, Lang):
str_lang = lang.value
else:
Expand Down
6 changes: 3 additions & 3 deletions tests/util/test_annotation_specs.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ def test__get_message_with_lang(self):
"messages": [{"lang": "ja-JP", "message": "自動車"}, {"lang": "en-US", "message": "car"}],
"default_lang": "ja-JP",
}
assert get_message_with_lang(i18n_message, Lang.JA_JP) == "自動車"
assert get_message_with_lang(i18n_message, "en-US") == "car"
assert get_message_with_lang(i18n_message, Lang.VI_VN) is None
assert get_message_with_lang(i18n_message, Lang.JA_JP) == "自動車" # type: ignore[arg-type]
assert get_message_with_lang(i18n_message, "en-US") == "car" # type: ignore[arg-type]
assert get_message_with_lang(i18n_message, Lang.VI_VN) is None # type: ignore[arg-type]


class Test__AnnotationSpecsAccessor:
Expand Down