Skip to content

Commit e70cb7f

Browse files
authored
Annofab v104対応 (#261)
* annofab v104.1 ou * version up * `request_get_with_cookie` 追加 * update document
1 parent 87452a0 commit e70cb7f

File tree

12 files changed

+127
-23
lines changed

12 files changed

+127
-23
lines changed

annofabapi/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.40.3"
1+
__version__ = "0.40.4"

annofabapi/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def _get_signed_cookie(self, project_id) -> Tuple[Dict[str, Any], requests.Respo
254254
keyword_params: Dict[str, Any] = {}
255255
return self._request_wrapper(http_method, url_path, **keyword_params)
256256

257-
def _request_get_with_cookie(self, project_id: str, url: str) -> requests.Response:
257+
def request_get_with_cookie(self, project_id: str, url: str) -> requests.Response:
258258
"""
259259
Signed Cookie を使って、AnnoFabのURLにGET requestを投げる。
260260

annofabapi/dataclass/task.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,4 @@ class Task(DataClassJsonMixin):
115115
"""* `inspection_skipped` - このタスクが抜取検査の対象外となり、検査フェーズをスキップしたことを表す。 * `inspection_stages_skipped` - このタスクが抜取検査の対象外となり、検査フェーズのステージを一部スキップしたことを表す。 * `acceptance_skipped` - このタスクが抜取検査の対象外となり、受入フェーズをスキップしたことを表す。 * `inspection_and_acceptance_skipped` - このタスクが抜取検査の対象外となり、検査・受入フェーズをスキップしたことを表す 未指定時はこのタスクが抜取検査の対象となったことを表す。(通常のワークフローを通過する) """
116116

117117
metadata: Optional[Dict[str, Any]]
118-
"""ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 valueには文字列、数値、真偽値を指定できます。 """
118+
"""ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 """

annofabapi/generated_api.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2714,7 +2714,8 @@ def get_tasks(
27142714
previous_phase_stage (int): そのタスクがこれまでに遷移したことのあるステージ(現在のステージ含む)。未指定時は全ステージ
27152715
rejected_only (str): 差し戻されたタスクだけを絞り込む時に、キーのみ指定します(値は無視されます)。
27162716
auto_accepted_only (str): 「抜取検査の対象外となり、自動受入されたタスク」だけを絞り込む時に、キーのみ指定します(値は無視されます)。
2717-
sort (str): ソート順の指定。 使用可能キーはtask_id、updated_datetime、number_of_rejections、phase、phase_stage、status、account_idのいずれかです。降順指定時は先頭に-(ハイフン)を付与します。 複数指定時は,(カンマ)区切りで列挙します。複数キーを列挙した場合は、先頭から優先順位を割り振られます。
2717+
metadata (str): メタデータからタスクを検索できます。<br> 例えば、 `priority` (数値) や `assignable` (真偽値) といったメタデータを個々のタスクに登録していたとします。 その場合、次のように検索できます。 ``` // priorityが5のタスクを検索 https://annofab.com/~/tasks?metadata=priority:5 // priorityが5以外のタスクを検索 https://annofab.com/~/tasks?metadata=-priority:5 // priorityが1より大きいタスクを検索 https://annofab.com/~/tasks?metadata=priority:>1 // priorityが1以上のタスクを検索 https://annofab.com/~/tasks?metadata=priority:>=1 // priorityが100未満のタスクを検索 https://annofab.com/~/tasks?metadata=priority:<100 // priorityが100以下のタスクを検索 https://annofab.com/~/tasks?metadata=priority:<=100 // priorityが1~100のタスクを検索 (複数の検索条件は半角スペースで区切ります) https://annofab.com/~/tasks?metadata=priority:>=1 priority:<=100 // priorityが1以上、且つ、assignableがtrueのタスクを検索 https://annofab.com/~/tasks?metadata=priority:>=1 assignable:true ``` 次の検索構文は <span style=\"color: red\">deprecated</span> です。 ``` // priorityが5のタスクを検索 https://annofab.com/~/tasks?metadata.priority=5 // priorityが1以上のタスクを検索 https://annofab.com/~/tasks?metadata.priority>=1 // priorityが100以下のタスクを検索 https://annofab.com/~/tasks?metadata.priority<=100 // priorityが1~100のタスクを検索 https://annofab.com/~/tasks?metadata.priority>=1&metadata.priority<=100 // 教師付けフェーズ、且つ、priorityが5のタスクを検索 https://annofab.com/~/tasks?phase=annotation&metadata.priority=5 ``` (注意) これらの例は、説明の都合上「URLエンコード」を施していません。<br> 実際には、URLエンコードを施してください。
2718+
sort (str): ソート順の指定。 * 使用可能キーはtask_id、updated_datetime、number_of_rejections、phase、phase_stage、status、account_id, metadataのいずれかです。 * metadata指定時は、`metadata.{メタデータ名}` の形式で指定します。 * 降順指定時は先頭に-(ハイフン)を付与します。 * 複数指定時は,(カンマ)区切りで列挙します。複数キーを列挙した場合は、先頭から優先順位を割り振られます。
27182719
annotation (str): アノテーションの絞り込み条件をJSON形式([AnnotationQuery](#section/AnnotationQuery))で指定したもの。指定した条件に合致するアノテーションを持つタスクを絞り込む際に指定する。
27192720
27202721
Returns:
@@ -2810,7 +2811,7 @@ def patch_tasks_metadata(
28102811
Args:
28112812
project_id (str): プロジェクトID (required)
28122813
request_body (Any): Request Body
2813-
request_body (dict(str, __DictStrKeyAnyValue__)): (required)
2814+
body (__DictStrKeyAnyValue__): タスクIDとメタデータのkey-valueペア(Dictionary)を指定してください。<br> メタデータは、メタデータ名と値のkey-valueペア(Dictionary)です。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 ``` (例) { \"task_1\": { \"metadata_1\": \"str\", \"metadata_2\": 100 }, \"task_2\": { \"metadata_3\": true } } ``` (required)
28142815
28152816
Returns:
28162817
Tuple[Message, requests.Response]

annofabapi/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3913,7 +3913,7 @@ class SupplementaryDataType(Enum):
39133913
* sampling: str
39143914
* `inspection_skipped` - このタスクが抜取検査の対象外となり、検査フェーズをスキップしたことを表す。 * `inspection_stages_skipped` - このタスクが抜取検査の対象外となり、検査フェーズのステージを一部スキップしたことを表す。 * `acceptance_skipped` - このタスクが抜取検査の対象外となり、受入フェーズをスキップしたことを表す。 * `inspection_and_acceptance_skipped` - このタスクが抜取検査の対象外となり、検査・受入フェーズをスキップしたことを表す 未指定時はこのタスクが抜取検査の対象となったことを表す。(通常のワークフローを通過する)
39153915
* metadata: __DictStrKeyAnyValue__
3916-
ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 valueには文字列、数値、真偽値を指定できます。
3916+
ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値
39173917
39183918
"""
39193919

@@ -4273,7 +4273,7 @@ class TaskPhase(Enum):
42734273
* input_data_id_list: List[str]
42744274
42754275
* metadata: __DictStrKeyAnyValue__
4276-
ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 valueには文字列、数値、真偽値を指定できます。
4276+
ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値
42774277
42784278
"""
42794279

annofabapi/utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
from functools import wraps
21
import copy
32
import datetime
43
import json
54
import logging
5+
from functools import wraps
66
from pathlib import Path
77
from typing import Any, Dict, List, Optional, Union
88

@@ -268,6 +268,7 @@ def ignore_http_error(status_code_list: List[int]):
268268
status_code_list: 無視するhttp status codeのList
269269
270270
"""
271+
271272
def decorator(function):
272273
@wraps(function)
273274
def wrapped(*args, **kwargs):

docs/user_guide/advanced_usage.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ service.wrapper.download_xxx メソッド
7878

7979

8080
.. code-block:: python
81+
8182
# アノテーションzipをダウンロードする
8283
service.wrapper.download_annotation_archive(project_id, "out/simple_annotation.zip")
8384
@@ -99,6 +100,7 @@ service.api.operate_task を使いやすくしたメソッド
99100

100101

101102
.. code-block:: python
103+
102104
# タスクのステータスを「作業中」に変更する
103105
task = service.wrapper.change_task_status_to_working(project_id, "test_task_id")
104106
@@ -117,6 +119,7 @@ statistics系APIは、統計情報が格納されたJSONのファイルパスを
117119

118120

119121
.. code-block:: python
122+
120123
# タスクのステータスを「作業中」に変更する
121124
account_statistics = service.wrapper.get_account_statistics(project_id)
122125
@@ -221,7 +224,7 @@ JSONファイルの中身については、https://annofab.com/docs/api/#tag/x-a
221224
222225
223226
アノテーションzip内のすべてのJSONをタスク単位で読み込む
224-
--------------------------------------------------
227+
----------------------------------------------------------------------------------------------------
225228
``annofabapi.parser.lazy_parse_simple_annotation_zip_by_task`` メソッドを利用すると、アノテーションzip内のすべてのJSONを、タスク単位で読み込むことができます。
226229

227230
.. code-block:: python

generate/swagger/swagger-api-components.yaml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1740,9 +1740,6 @@ components:
17401740
PatchTasksMetadataRequest:
17411741
type: object
17421742
description: タスクIDとメタデータのkey-valueペア(Dictionary)です。
1743-
additionalProperties: {
1744-
$ref: "#/components/schemas/TaskMetadata"
1745-
}
17461743
InspectionStatisticsPhrases:
17471744
type: object
17481745
description: ラベル外指摘の集計結果
@@ -2663,7 +2660,18 @@ components:
26632660
description: |
26642661
ユーザーが自由に登録できるkey-value型のメタデータです。
26652662
keyにはメタデータ名、valueには値を指定してください。
2666-
valueには文字列、数値、真偽値を指定できます。
2663+
2664+
keyに指定できる文字種は次の通りです。
2665+
2666+
* 半角英数字
2667+
* `_` (アンダースコア)
2668+
* `-` (ハイフン)
2669+
2670+
valueに指定できる値は次の通りです。
2671+
2672+
* 文字列
2673+
* 数値
2674+
* 真偽値
26672675
TaskRequest:
26682676
type: object
26692677
required:
@@ -3063,7 +3071,7 @@ components:
30633071
$ref: "#/components/schemas/Resolution"
30643072
description: |
30653073
入力データの元画像サイズ。
3066-
入力データ登録時に画像がリサイズされた場合のみ設定される
3074+
AnnoFabにアップロードされる入力データとS3プライベートストレージの場合のみ設定されます
30673075
resized_resolution:
30683076
deprecated: true
30693077
$ref: "#/components/schemas/Resolution"
@@ -3120,7 +3128,7 @@ components:
31203128
$ref: "#/components/schemas/Resolution"
31213129
description: |
31223130
入力データの元画像サイズ。
3123-
入力データ登録時に画像がリサイズされた場合のみ設定される
3131+
AnnoFabにアップロードされる入力データとS3プライベートストレージの場合のみ設定されます
31243132
resized_resolution:
31253133
$ref: "#/components/schemas/Resolution"
31263134
description: |

generate/swagger/swagger.v2.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ info:
115115
116116
上記例 `account_id_count` は、タスクのフィールド `account_id` でタスクを分類したところ「`account_id` が `c5eee002` であるタスクが9件、`9f110e48` であるタスクが5件、`b25dfeb3` であるタスクが1件」だったという結果を表しています。
117117
118-
version: 0.97.0
118+
version: 0.104.1
119119
title: AnnoFab Web API
120120
x-logo:
121121
url: "https://annofab.com/images/logo_landscape.png"

generate/swagger/swagger.yaml

Lines changed: 95 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ info:
116116
上記例 `account_id_count` は、タスクのフィールド `account_id` でタスクを分類したところ「`account_id` が `c5eee002` であるタスクが9件、`9f110e48` であるタスクが5件、`b25dfeb3` であるタスクが1件」だったという結果を表しています。
117117
また、AggregationResultの集約の件数は、合計で10000件以下に制限されており、それを超える件数がある場合は上位10000件が取得されます。もし、省略された部分を取得したい場合は、検索条件を縛って結果に上る集約の数を減らしてください。
118118
119-
version: 0.97.0
119+
version: 0.104.1
120120
title: AnnoFab Web API
121121
x-logo:
122122
url: "https://annofab.com/images/logo_landscape.png"
@@ -650,6 +650,12 @@ paths:
650650
$ref: "swagger-api-components.yaml#/components/responses/ErrorInvalidRequest"
651651
"401":
652652
$ref: "swagger-api-components.yaml#/components/responses/ErrorUnauthorizedApi"
653+
"409":
654+
description: 外部アカウントでログインしているユーザーのメールアドレスを変更しようとした
655+
content:
656+
application/json:
657+
schema:
658+
$ref: "swagger-api-components.yaml#/components/schemas/ErrorStateMismatch"
653659
"503":
654660
$ref: "swagger-api-components.yaml#/components/responses/ErrorUnderMaintenance"
655661
/confirm-reset-email:
@@ -3187,14 +3193,75 @@ paths:
31873193
allowEmptyValue: true
31883194
schema:
31893195
type: string
3196+
- name: metadata
3197+
in: query
3198+
description: |
3199+
メタデータからタスクを検索できます。<br>
3200+
例えば、 `priority` (数値) や `assignable` (真偽値) といったメタデータを個々のタスクに登録していたとします。
3201+
その場合、次のように検索できます。
3202+
3203+
```
3204+
// priorityが5のタスクを検索
3205+
https://annofab.com/~/tasks?metadata=priority:5
3206+
3207+
// priorityが5以外のタスクを検索
3208+
https://annofab.com/~/tasks?metadata=-priority:5
3209+
3210+
// priorityが1より大きいタスクを検索
3211+
https://annofab.com/~/tasks?metadata=priority:>1
3212+
3213+
// priorityが1以上のタスクを検索
3214+
https://annofab.com/~/tasks?metadata=priority:>=1
3215+
3216+
// priorityが100未満のタスクを検索
3217+
https://annofab.com/~/tasks?metadata=priority:<100
3218+
3219+
// priorityが100以下のタスクを検索
3220+
https://annofab.com/~/tasks?metadata=priority:<=100
3221+
3222+
// priorityが1~100のタスクを検索 (複数の検索条件は半角スペースで区切ります)
3223+
https://annofab.com/~/tasks?metadata=priority:>=1 priority:<=100
3224+
3225+
// priorityが1以上、且つ、assignableがtrueのタスクを検索
3226+
https://annofab.com/~/tasks?metadata=priority:>=1 assignable:true
3227+
```
3228+
3229+
次の検索構文は <span style="color: red">deprecated</span> です。
3230+
3231+
```
3232+
// priorityが5のタスクを検索
3233+
https://annofab.com/~/tasks?metadata.priority=5
3234+
3235+
// priorityが1以上のタスクを検索
3236+
https://annofab.com/~/tasks?metadata.priority>=1
3237+
3238+
// priorityが100以下のタスクを検索
3239+
https://annofab.com/~/tasks?metadata.priority<=100
3240+
3241+
// priorityが1~100のタスクを検索
3242+
https://annofab.com/~/tasks?metadata.priority>=1&metadata.priority<=100
3243+
3244+
// 教師付けフェーズ、且つ、priorityが5のタスクを検索
3245+
https://annofab.com/~/tasks?phase=annotation&metadata.priority=5
3246+
```
3247+
3248+
(注意) これらの例は、説明の都合上「URLエンコード」を施していません。<br>
3249+
実際には、URLエンコードを施してください。
3250+
required: false
3251+
schema:
3252+
type: string
31903253
- name: sort
31913254
in: query
31923255
description: |
31933256
ソート順の指定。
3194-
使用可能キーはtask_id、updated_datetime、number_of_rejections、phase、phase_stage、status、account_idのいずれかです。降順指定時は先頭に-(ハイフン)を付与します。
3195-
複数指定時は,(カンマ)区切りで列挙します。複数キーを列挙した場合は、先頭から優先順位を割り振られます。
3257+
3258+
* 使用可能キーはtask_id、updated_datetime、number_of_rejections、phase、phase_stage、status、account_id, metadataのいずれかです。
3259+
* metadata指定時は、`metadata.{メタデータ名}` の形式で指定します。
3260+
* 降順指定時は先頭に-(ハイフン)を付与します。
3261+
* 複数指定時は,(カンマ)区切りで列挙します。複数キーを列挙した場合は、先頭から優先順位を割り振られます。
3262+
31963263
required: false
3197-
example: account_id,-updated_datetime
3264+
example: metadata.priority,-updated_datetime
31983265
schema:
31993266
type: string
32003267
- name: annotation
@@ -3614,6 +3681,30 @@ paths:
36143681
$ref: "swagger-api-components.yaml#/components/schemas/ProjectId"
36153682
requestBody:
36163683
required: true
3684+
description: |
3685+
タスクIDとメタデータのkey-valueペア(Dictionary)を指定してください。<br>
3686+
メタデータは、メタデータ名と値のkey-valueペア(Dictionary)です。
3687+
3688+
keyに指定できる文字種は次の通りです。
3689+
3690+
* 半角英数字
3691+
* `_` (アンダースコア)
3692+
* `-` (ハイフン)
3693+
3694+
valueに指定できる値は次の通りです。
3695+
3696+
* 文字列
3697+
* 数値
3698+
* 真偽値
3699+
3700+
```
3701+
(例)
3702+
3703+
{
3704+
"task_1": { "metadata_1": "str", "metadata_2": 100 },
3705+
"task_2": { "metadata_3": true }
3706+
}
3707+
```
36173708
content:
36183709
application/json:
36193710
schema:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "annofabapi"
3-
version = "0.40.3"
3+
version = "0.40.4"
44
description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)"
55
authors = ["yuji38kwmt"]
66
license = "MIT"

tests/test_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,14 +534,14 @@ class TestProtectedMethod:
534534
def test__request_get_with_cookie(self):
535535
images, _ = api.get_instruction_images(project_id)
536536
url = images[0]["url"]
537-
r = api._request_get_with_cookie(project_id, url)
537+
r = api.request_get_with_cookie(project_id, url)
538538
# エラーがないことを確認する
539539

540540
def test_request_get_with_cookie_failed(self):
541541
# SignedCookieに対応するプロジェクトと、アクセス対象のプロジェクトが異なっているときの対応
542542
url = "https://annofab.com/projects/foo/annotation_specs_histories/foo.json"
543543
with pytest.raises(requests.HTTPError):
544-
api._request_get_with_cookie(project_id, url)
544+
api.request_get_with_cookie(project_id, url)
545545

546546

547547
class TestProperty:

0 commit comments

Comments
 (0)