Skip to content

Commit 1264023

Browse files
authored
Merge pull request #61 from kurusugawa-computer/feature/v0.18.0
AnnoFab v0.63.0に対する対応
2 parents 90cf89d + 9e70c72 commit 1264023

24 files changed

+1850
-739
lines changed

annofabapi/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.17.0'
1+
__version__ = '0.18.0'

annofabapi/api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def login(self) -> Tuple[Dict[str, Any], requests.Response]:
219219
json_obj = response.json()
220220
self.token_dict = json_obj["token"]
221221

222-
logger.debug(f"Logined successfully. user_id = {self.login_user_id}")
222+
logger.debug("Logined successfully. user_id = %s", self.login_user_id)
223223
return json_obj, response
224224

225225
def logout(self) -> Optional[Tuple[Dict[str, Any], requests.Response]]:

annofabapi/dataclass/annotation.py

+38-14
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
OneOfstringFullAnnotationData = Dict[str, Any]
2121
FullAnnotationData = Dict[str, Any]
22+
AdditionalDataValue = Dict[str, Any]
2223

2324

2425
@dataclass_json
@@ -44,7 +45,7 @@ class AdditionalData:
4445
flag: Optional[bool]
4546
""""""
4647

47-
interger: Optional[int]
48+
integer: Optional[int]
4849
""""""
4950

5051
comment: Optional[str]
@@ -67,25 +68,42 @@ class FullAnnotationAdditionalData:
6768
type: Optional[AdditionalDataDefinitionType]
6869
""""""
6970

70-
flag: Optional[bool]
71-
"""typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される"""
71+
value: Optional[AdditionalDataValue]
72+
""""""
73+
@dataclass_json
74+
@dataclass
75+
class FullAnnotationDetail:
76+
"""
77+
78+
"""
79+
annotation_id: Optional[str]
80+
"""アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)<br> annotation_type が classification の場合は label_id と同じ値が格納されます。 """
7281

73-
integer: Optional[int]
74-
"""typeがintegerの場合に、整数値が格納される"""
82+
user_id: Optional[str]
83+
""""""
7584

76-
comment: Optional[str]
77-
"""* typeがcommentの場合、コメントの値 * typeがtrackingの場合、トラッキングID * typeがlinkの場合、リンク先のアノテーションID """
85+
label_id: Optional[str]
86+
""""""
7887

79-
choice: Optional[str]
88+
label_name: Optional[InternationalizationMessage]
8089
""""""
8190

82-
choice_name: Optional[InternationalizationMessage]
91+
annotation_type: Optional[AnnotationType]
92+
""""""
93+
94+
data_holding_type: Optional[AnnotationDataHoldingType]
95+
""""""
96+
97+
data: Optional[FullAnnotationData]
98+
""""""
99+
100+
additional_data_list: Optional[List[FullAnnotationAdditionalData]]
83101
""""""
84102
@dataclass_json
85103
@dataclass
86-
class FullAnnotationDetail:
104+
class FullAnnotationDetailOld:
87105
"""
88-
106+
for v1
89107
"""
90108
annotation_id: Optional[str]
91109
"""アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)<br> annotation_type が classification の場合は label_id と同じ値が格納されます。 """
@@ -108,7 +126,7 @@ class FullAnnotationDetail:
108126
data: Optional[FullAnnotationData]
109127
""""""
110128

111-
additional_data_list: Optional[List[FullAnnotationAdditionalData]]
129+
additional_data_list: Optional[List[AdditionalData]]
112130
""""""
113131
@dataclass_json
114132
@dataclass
@@ -137,11 +155,17 @@ class FullAnnotation:
137155
input_data_name: Optional[str]
138156
""""""
139157

140-
detail: Optional[List[FullAnnotationDetail]]
158+
details: Optional[List[FullAnnotationDetail]]
141159
""""""
142160

161+
detail: Optional[List[FullAnnotationDetailOld]]
162+
"""use details"""
163+
143164
updated_datetime: Optional[str]
144165
""""""
166+
167+
annotation_format_version: Optional[str]
168+
"""アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """
145169
@dataclass_json
146170
@dataclass
147171
class SimpleAnnotationDetail:
@@ -221,7 +245,7 @@ class SingleAnnotationDetail:
221245
url: Optional[str]
222246
"""data_holding_typeがouterの場合のみ存在し、データへの一時URLが格納される"""
223247

224-
additional_data_list: Optional[List[FullAnnotationAdditionalData]]
248+
additional_data_list: Optional[List[AdditionalData]]
225249
""""""
226250

227251
created_datetime: Optional[str]

annofabapi/generated_api.py

+26-3
Original file line numberDiff line numberDiff line change
@@ -403,12 +403,11 @@ def get_archive_full_with_pro_id(
403403
) -> Tuple[Any, requests.Response]:
404404
"""fullアノテーションZIP取得
405405
406-
.. deprecated:: X
407406
408407
authorizations: ProjectDataUser
409408
410409
411-
**このAPIは廃止予定です。fullアノテーションZIPにある情報で、simpleアノテーションZIPにも欲しいものがあれば、ご連絡ください。** プロジェクト内のアノテーション(full版)がまとめられたZIPを取得します。 full版のアノテーションJSONデータは、画像やアノテーションやアノテーション作成者など管理用の詳細情報が付随しています。機械学習での一般的な利用には、[詳細情報を省いた扱いやすい構造の simple版](#operation/getAnnotationArchive) を推奨します。 取得できるZIPファイルの構造は以下のとおりです。 * ファイル名: af-annotation-{プロジェクトID}-{更新日時: yyyyMMdd-hhmmss}.zip * 内容: / * {タスクID}/ * {入力データID}.json * アノテーションJSONデータ (詳細は 200レスポンス を参照) * {入力データID}/ (塗りつぶしアノテーション時のみ) * {アノテーションデータID} (塗りつぶしのPNG画像)
410+
プロジェクト内のアノテーション(full版)がまとめられたZIPを取得します。 full版のアノテーションJSONデータは、画像やアノテーションやアノテーション作成者など管理用の詳細情報が付随しています。機械学習での一般的な利用には、[詳細情報を省いた扱いやすい構造の simple版](#operation/getAnnotationArchive) を推奨します。 取得できるZIPファイルの構造は以下のとおりです。 * ファイル名: af-annotation-{プロジェクトID}-{更新日時: yyyyMMdd-hhmmss}.zip * 内容: / * {タスクID}/ * {入力データID}.json * アノテーションJSONデータ (詳細は 200レスポンス を参照) * {入力データID}/ (塗りつぶしアノテーション時のみ) * {アノテーションデータID} (塗りつぶしのPNG画像)
412411
413412
Args:
414413
project_id (str): プロジェクトID (required)
@@ -418,7 +417,6 @@ def get_archive_full_with_pro_id(
418417
419418
420419
"""
421-
warnings.warn("deprecated", DeprecationWarning)
422420
url_path = f'/projects/{project_id}/archive/full'
423421
http_method = 'GET'
424422
keyword_params: Dict[str, Any] = {}
@@ -1806,6 +1804,31 @@ def initiate_project_copy(self, project_id: str,
18061804
}
18071805
return self._request_wrapper(http_method, url_path, **keyword_params)
18081806

1807+
def post_project_tasks_update(
1808+
self,
1809+
project_id: str,
1810+
) -> Tuple[Any, requests.Response]:
1811+
"""プロジェクトのタスク全件ファイル更新開始
1812+
1813+
1814+
authorizations: ProjectOwner
1815+
1816+
1817+
プロジェクト内のタスク全件ファイルの更新を開始します。 ファイルの更新は、データ量に応じて数分程度かかります。 タスク全件ファイルは日本時間AM02:00ごろに自動更新されます。 本APIを用いると、自動更新を待たずに更新を要求できます。 ただし、タスク全件ファイル以外は更新されません。
1818+
1819+
Args:
1820+
project_id (str): プロジェクトID (required)
1821+
1822+
Returns:
1823+
Tuple[Message, requests.Response]
1824+
1825+
1826+
"""
1827+
url_path = f'/projects/{project_id}/rawdata/tasks'
1828+
http_method = 'POST'
1829+
keyword_params: Dict[str, Any] = {}
1830+
return self._request_wrapper(http_method, url_path, **keyword_params)
1831+
18091832
def put_project(self, project_id: str, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]:
18101833
"""プロジェクト作成/更新
18111834

0 commit comments

Comments
 (0)