Skip to content

Commit

Permalink
Annofab v0.141.0対応 (#443)
Browse files Browse the repository at this point in the history
* update

* ログが出しく出力されない問題を対応
  • Loading branch information
yuji38kwmt committed Apr 17, 2022
1 parent d7407bc commit 8106a48
Show file tree
Hide file tree
Showing 16 changed files with 763 additions and 553 deletions.
14 changes: 9 additions & 5 deletions annofabapi/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,14 @@ def mask_key(d, key: str):
request_body = response.request.body
request_body_for_logger: Optional[Any]
if request_body is not None and request_body != "":
try:
dict_request_body = json.loads(request_body)
except JSONDecodeError:
request_body_for_logger = request_body
if isinstance(request_body, str):
try:
dict_request_body = json.loads(request_body)
request_body_for_logger = _create_request_body_for_logger(dict_request_body)
except JSONDecodeError:
request_body_for_logger = request_body
else:
request_body_for_logger = _create_request_body_for_logger(dict_request_body)
request_body_for_logger = _create_request_body_for_logger(request_body)
else:
request_body_for_logger = request_body

Expand Down Expand Up @@ -165,6 +167,8 @@ def _should_retry_with_status(status_code: int) -> bool:
HTTP Status Codeからリトライすべきかどうかを返す。
"""
# 注意:429(Too many requests)の場合は、backoffモジュール外でリトライするため、このメソッドでは判定しない
if status_code == requests.codes.not_implemented:
return False
if 500 <= status_code < 600:
return True
return False
Expand Down
4 changes: 2 additions & 2 deletions annofabapi/dataclass/annotation.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ class FullAnnotation(DataClassJsonMixin):
""""""

annotation_format_version: str
"""アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """
"""アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """


@dataclass
Expand All @@ -255,7 +255,7 @@ class SimpleAnnotation(DataClassJsonMixin):
""" """

annotation_format_version: str
"""アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """
"""アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """

project_id: str
"""プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) """
Expand Down
108 changes: 58 additions & 50 deletions annofabapi/dataclass/annotation_specs.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@ class Keybind(DataClassJsonMixin):
""" """

code: str
""""""
"""[KeyboardEvent.code](https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent/code)に相当する値です。 """

shift: bool
""""""
"""Shiftキーを押しているかどうか"""

ctrl: bool
""""""
"""Ctrlキーを押しているかどうか"""

alt: bool
""""""
"""Altキーを押しているかどうか"""


@dataclass
Expand All @@ -55,52 +55,56 @@ class PositionForMinimumBoundingBoxInsertion(DataClassJsonMixin):


@dataclass
class LabelV1BoundingBoxMetadata(DataClassJsonMixin):
""" """
class BoundingBoxMetadata(DataClassJsonMixin):
"""
ベクター形式のアノテーション(矩形、ポリゴン、ポリライン、点)のメタデータ
"""

min_width: int
""""""
"""幅の最小値[ピクセル]"""

min_height: int
""""""
"""高さの最小値[ピクセル]"""

min_warn_rule: str
""""""
"""サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 """

min_area: Optional[int]
""""""
"""面積の最小値[平方ピクセル]"""

max_vertices: Optional[int]
""""""
"""頂点数の最大値"""

min_vertices: Optional[int]
""""""
"""頂点数の最小値"""

position_for_minimum_bounding_box_insertion: Optional[PositionForMinimumBoundingBoxInsertion]
""""""

tolerance: Optional[int]
""""""
"""許容誤差[ピクセル]"""

has_direction: Optional[bool]
"""`annotation_type` が `polyline` の場合、アノテーションに向きを持たせるかどうかを指定できます。 この値が `true` の場合、AnnoFabの標準画像エディタ上ではポリラインの向きを示す矢印が描画されるようになります。 `annotationType` が `polyline` 以外の場合は必ず `false` となります。 """
"""`annotation_type` が `polyline` の場合、アノテーションに向きを持たせるかどうかを指定できます。 この値が `true` の場合、Annofabの標準画像エディタ上ではポリラインの向きを示す矢印が描画されるようになります。 `annotationType` が `polyline` 以外の場合は必ず `false` となります。 """


@dataclass
class LabelV1SegmentationMetadata(DataClassJsonMixin):
""" """
class SegmentationMetadata(DataClassJsonMixin):
"""
塗りつぶしアノテーションのメタデータ
"""

min_width: int
""""""
"""幅の最小値[ピクセル]"""

min_height: int
""""""
"""高さの最小値[ピクセル]"""

min_warn_rule: str
""""""
"""サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 """

tolerance: Optional[int]
""""""
"""許容誤差[ピクセル]"""


@dataclass
Expand All @@ -119,7 +123,7 @@ class InternationalizationMessage(DataClassJsonMixin):
""" """

messages: List[InternationalizationMessageMessages]
"""言語コードとメッセージ(テキスト)のリスト。 * アノテーションエディタなどでは、AnnoFabの表示言語(各ユーザーが個人設定で選んだ言語)のメッセージが使われます * [Simple Annotation](#section/Simple-Annotation-ZIP) では `en-US` のメッセージが使われます * いずれの場合でも、表示しようとした言語が `messages` に含まれない場合、 `default_lang` に指定した言語のメッセージが使われます """
"""言語コードとメッセージ(テキスト)のリスト。 * アノテーションエディタなどでは、Annofabの表示言語(各ユーザーが個人設定で選んだ言語)のメッセージが使われます * 以下の名前は、[Simple Annotation](#section/Simple-Annotation-ZIP) では `en-US` のメッセージが使われます * ラベル名 * 属性名 * 選択肢名 * いずれの場合でも、表示しようとした言語が `messages` に含まれない場合、 `default_lang` に指定した言語のメッセージが使われます """

default_lang: str
"""希望された言語のメッセージが存在しない場合に、フォールバック先として使われる言語コード"""
Expand All @@ -130,7 +134,7 @@ class InspectionPhrase(DataClassJsonMixin):
""" """

id: str
""""""
"""定型指摘ID"""

text: InternationalizationMessage
""""""
Expand All @@ -141,27 +145,29 @@ class AnnotationSpecsHistory(DataClassJsonMixin):
""" """

history_id: str
""""""
"""アノテーション仕様の履歴ID"""

project_id: str
"""プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) """

updated_datetime: str
""""""
"""更新日時"""

url: str
""""""
"""アノテーション仕様が格納されたJSONのURL。URLにアクセスするには認証認可が必要です。"""

account_id: Optional[str]
"""アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) """

comment: Optional[str]
""""""
"""変更内容のコメント"""


@dataclass
class Color(DataClassJsonMixin):
""" """
"""
RGBで表現される色情報
"""

red: int
""""""
Expand All @@ -184,7 +190,7 @@ class AdditionalDataDefinitionV1Choices(DataClassJsonMixin):
""""""

keybind: Optional[List[Keybind]]
""""""
"""ショートカットキー"""


@dataclass
Expand All @@ -195,7 +201,7 @@ class AdditionalDataDefinitionV1(DataClassJsonMixin):
"""属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """

read_only: Optional[bool]
""""""
"""読み込み専用"""

name: Optional[InternationalizationMessage]
""""""
Expand All @@ -204,7 +210,7 @@ class AdditionalDataDefinitionV1(DataClassJsonMixin):
""""""

keybind: Optional[List[Keybind]]
""""""
"""ショートカットキー"""

type: AdditionalDataDefinitionType
""""""
Expand All @@ -213,7 +219,7 @@ class AdditionalDataDefinitionV1(DataClassJsonMixin):
"""ドロップダウンまたはラジオボタンの選択肢"""

regex: Optional[str]
""""""
"""属性の値が、指定した正規表現に一致している必要があります。"""

label_ids: Optional[List[str]]
"""リンク属性において、リンク先として指定可能なラベルID(空の場合制限なし)"""
Expand All @@ -233,7 +239,7 @@ class AdditionalDataDefinitionV2(DataClassJsonMixin):
"""属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """

read_only: Optional[bool]
""""""
"""読み込み専用"""

name: InternationalizationMessage
""""""
Expand All @@ -242,39 +248,41 @@ class AdditionalDataDefinitionV2(DataClassJsonMixin):
""""""

keybind: Optional[List[Keybind]]
""""""
"""ショートカットキー"""

type: AdditionalDataDefinitionType
""""""

choices: Optional[List[AdditionalDataDefinitionV1Choices]]
""""""
"""ドロップダウンまたはラジオボタンの選択肢"""

metadata: Optional[Dict[str, str]]
"""ユーザーが自由に登録できるkey-value型のメタデータです。 """


@dataclass
class AnnotationEditorFeature(DataClassJsonMixin):
""" """
"""
塗りつぶしの作図機能に関する情報
"""

append: bool
""""""
"""塗りつぶしの「追記」機能が使えるか否か"""

erase: bool
""""""
"""塗りつぶしの「消しゴム」機能が使えるか否か"""

freehand: bool
""""""
"""塗りつぶしの「フリーハンド」機能が使えるか否か"""

rectangle_fill: bool
""""""
"""塗りつぶしの「矩形」機能が使えるか否か"""

polygon_fill: bool
""""""
"""塗りつぶしの「ポリゴン」機能が使えるか否か"""

fill_near: bool
""""""
"""「近似色塗りつぶし」機能を有効にするかどうか"""


@dataclass
Expand All @@ -288,15 +296,15 @@ class LabelV1(DataClassJsonMixin):
""""""

keybind: List[Keybind]
""""""
"""ショートカットキー"""

annotation_type: AnnotationType
""""""

bounding_box_metadata: Optional[LabelV1BoundingBoxMetadata]
bounding_box_metadata: Optional[BoundingBoxMetadata]
""""""

segmentation_metadata: Optional[LabelV1SegmentationMetadata]
segmentation_metadata: Optional[SegmentationMetadata]
""""""

additional_data_definitions: List[AdditionalDataDefinitionV1]
Expand Down Expand Up @@ -326,15 +334,15 @@ class LabelV2(DataClassJsonMixin):
""""""

keybind: List[Keybind]
""""""
"""ショートカットキー"""

annotation_type: AnnotationType
""""""

bounding_box_metadata: Optional[LabelV1BoundingBoxMetadata]
bounding_box_metadata: Optional[BoundingBoxMetadata]
""""""

segmentation_metadata: Optional[LabelV1SegmentationMetadata]
segmentation_metadata: Optional[SegmentationMetadata]
""""""

additional_data_definitions: List[str]
Expand Down Expand Up @@ -378,7 +386,7 @@ class AnnotationSpecsV1(DataClassJsonMixin):
"""定型指摘"""

updated_datetime: Optional[str]
"""アノテーション仕様の最終更新時刻 """
"""更新日時 """

option: Optional[AnnotationSpecsOption]
""""""
Expand Down Expand Up @@ -407,10 +415,10 @@ class AnnotationSpecsV2(DataClassJsonMixin):
"""定型指摘"""

format_version: str
""""""
"""アノテーション仕様のフォーマットのバージョン"""

updated_datetime: Optional[str]
"""アノテーション仕様の最終更新時刻 """
"""更新日時 """

option: Optional[AnnotationSpecsOption]
""""""
Expand Down
14 changes: 7 additions & 7 deletions annofabapi/dataclass/instruction.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
class Instruction(DataClassJsonMixin):
""" """

html: Optional[str]
html: str
"""作業ガイドのHTML"""

last_updated_datetime: Optional[str]
"""* [getInstruction](#operation/getInstruction) APIのレスポンスの場合: 最後に作業ガイドを更新した日時。 * [putInstruction](#operation/putInstruction) APIのリクエストボディの場合: 最後に作業ガイドを更新した日時を指定する。まだ一度も保存した事がない場合は指定しない。 """
last_updated_datetime: str
"""更新日時"""


@dataclass
Expand All @@ -35,7 +35,7 @@ class InstructionHistory(DataClassJsonMixin):
"""作業ガイドの履歴ID"""

account_id: str
"""作業ガイドを更新したユーザのアカウントID"""
"""作業ガイドを更新したユーザーのアカウントID"""

updated_datetime: str
"""作業ガイドの最終更新日時"""
Expand All @@ -46,13 +46,13 @@ class InstructionImage(DataClassJsonMixin):
""" """

image_id: str
"""作業ガイド画像ID"""
"""作業ガイド画像ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """

path: str
"""作業ガイド画像の実体が保存されたパスです。 """

url: str
"""作業ガイド画像を取得するための内部用URLです。"""
"""作業ガイド画像を取得するためのシステム内部用のURLです。"""

etag: str
""""""
"""[HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 """

0 comments on commit 8106a48

Please sign in to comment.