Skip to content

AnnoFab v0.63.0に対する対応 #61

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Sep 26, 2019
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
2 changes: 1 addition & 1 deletion annofabapi/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.17.0'
__version__ = '0.18.0'
2 changes: 1 addition & 1 deletion annofabapi/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ def login(self) -> Tuple[Dict[str, Any], requests.Response]:
json_obj = response.json()
self.token_dict = json_obj["token"]

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

def logout(self) -> Optional[Tuple[Dict[str, Any], requests.Response]]:
Expand Down
52 changes: 38 additions & 14 deletions annofabapi/dataclass/annotation.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

OneOfstringFullAnnotationData = Dict[str, Any]
FullAnnotationData = Dict[str, Any]
AdditionalDataValue = Dict[str, Any]


@dataclass_json
Expand All @@ -44,7 +45,7 @@ class AdditionalData:
flag: Optional[bool]
""""""

interger: Optional[int]
integer: Optional[int]
""""""

comment: Optional[str]
Expand All @@ -67,25 +68,42 @@ class FullAnnotationAdditionalData:
type: Optional[AdditionalDataDefinitionType]
""""""

flag: Optional[bool]
"""typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される"""
value: Optional[AdditionalDataValue]
""""""
@dataclass_json
@dataclass
class FullAnnotationDetail:
"""

"""
annotation_id: Optional[str]
"""アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)<br> annotation_type が classification の場合は label_id と同じ値が格納されます。 """

integer: Optional[int]
"""typeがintegerの場合に、整数値が格納される"""
user_id: Optional[str]
""""""

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

choice: Optional[str]
label_name: Optional[InternationalizationMessage]
""""""

choice_name: Optional[InternationalizationMessage]
annotation_type: Optional[AnnotationType]
""""""

data_holding_type: Optional[AnnotationDataHoldingType]
""""""

data: Optional[FullAnnotationData]
""""""

additional_data_list: Optional[List[FullAnnotationAdditionalData]]
""""""
@dataclass_json
@dataclass
class FullAnnotationDetail:
class FullAnnotationDetailOld:
"""

for v1
"""
annotation_id: Optional[str]
"""アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)<br> annotation_type が classification の場合は label_id と同じ値が格納されます。 """
Expand All @@ -108,7 +126,7 @@ class FullAnnotationDetail:
data: Optional[FullAnnotationData]
""""""

additional_data_list: Optional[List[FullAnnotationAdditionalData]]
additional_data_list: Optional[List[AdditionalData]]
""""""
@dataclass_json
@dataclass
Expand Down Expand Up @@ -137,11 +155,17 @@ class FullAnnotation:
input_data_name: Optional[str]
""""""

detail: Optional[List[FullAnnotationDetail]]
details: Optional[List[FullAnnotationDetail]]
""""""

detail: Optional[List[FullAnnotationDetailOld]]
"""use details"""

updated_datetime: Optional[str]
""""""

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

additional_data_list: Optional[List[FullAnnotationAdditionalData]]
additional_data_list: Optional[List[AdditionalData]]
""""""

created_datetime: Optional[str]
Expand Down
29 changes: 26 additions & 3 deletions annofabapi/generated_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,12 +403,11 @@ def get_archive_full_with_pro_id(
) -> Tuple[Any, requests.Response]:
"""fullアノテーションZIP取得

.. deprecated:: X

authorizations: ProjectDataUser


**この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画像)
プロジェクト内のアノテーション(full版)がまとめられたZIPを取得します。 full版のアノテーションJSONデータは、画像やアノテーションやアノテーション作成者など管理用の詳細情報が付随しています。機械学習での一般的な利用には、[詳細情報を省いた扱いやすい構造の simple版](#operation/getAnnotationArchive) を推奨します。 取得できるZIPファイルの構造は以下のとおりです。 * ファイル名: af-annotation-{プロジェクトID}-{更新日時: yyyyMMdd-hhmmss}.zip * 内容: / * {タスクID}/ * {入力データID}.json * アノテーションJSONデータ (詳細は 200レスポンス を参照) * {入力データID}/ (塗りつぶしアノテーション時のみ) * {アノテーションデータID} (塗りつぶしのPNG画像)

Args:
project_id (str): プロジェクトID (required)
Expand All @@ -418,7 +417,6 @@ def get_archive_full_with_pro_id(


"""
warnings.warn("deprecated", DeprecationWarning)
url_path = f'/projects/{project_id}/archive/full'
http_method = 'GET'
keyword_params: Dict[str, Any] = {}
Expand Down Expand Up @@ -1806,6 +1804,31 @@ def initiate_project_copy(self, project_id: str,
}
return self._request_wrapper(http_method, url_path, **keyword_params)

def post_project_tasks_update(
self,
project_id: str,
) -> Tuple[Any, requests.Response]:
"""プロジェクトのタスク全件ファイル更新開始


authorizations: ProjectOwner


プロジェクト内のタスク全件ファイルの更新を開始します。 ファイルの更新は、データ量に応じて数分程度かかります。 タスク全件ファイルは日本時間AM02:00ごろに自動更新されます。 本APIを用いると、自動更新を待たずに更新を要求できます。 ただし、タスク全件ファイル以外は更新されません。

Args:
project_id (str): プロジェクトID (required)

Returns:
Tuple[Message, requests.Response]


"""
url_path = f'/projects/{project_id}/rawdata/tasks'
http_method = 'POST'
keyword_params: Dict[str, Any] = {}
return self._request_wrapper(http_method, url_path, **keyword_params)

def put_project(self, project_id: str, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]:
"""プロジェクト作成/更新

Expand Down
Loading