Skip to content

Commit 5ffe699

Browse files
authored
廃止予定のメソッドを削除する (#329)
* update pyproject.toml * annofab v0.111.0 * generatedをlintingから除外する * download_annotation_archiveメソッドからv2引数を削除 * copy_annotation_specsを非推奨にする * DeprecatedWarningからFutureWarningに変更する。デフォルトでは警告メッセージが出力されないため * add extension * DeprecationWarningからFutureWaringに変更 * version up
1 parent 477485f commit 5ffe699

File tree

11 files changed

+25
-174
lines changed

11 files changed

+25
-174
lines changed

.devcontainer/devcontainer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"ms-python.vscode-pylance",
3535
"streetsidesoftware.code-spell-checker",
3636
"bungcip.better-toml",
37-
"njpwerner.autodocstring"
37+
"njpwerner.autodocstring",
38+
"dawhite.mustache"
3839
]
3940
}

.vscode/settings.json

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"python.linting.pydocstyleEnabled": false,
3131
"python.linting.pycodestyleEnabled": false,
3232
"python.linting.ignorePatterns": [
33+
"generate/**/*.py",
3334
".vscode/*.py",
3435
"**/site-packages/**/*.py"
3536
],

README.md

+4-9
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,12 @@
2424

2525
# 廃止予定
2626

27-
## 2020-10-31 以降,
28-
* `AnnofabApiWrapper.download_annotation_archive`メソッドの引数`v2`引数を削除します。WebAPIに渡す必要がなくなったためです。
29-
30-
## 2021-01-01 以降,
31-
* `AnnofabApiWrapper`のプロジェクトメンバの更新系メソッドを廃止します。特殊なケースにしか対応しておらず、汎用的なメソッドでないためです。
32-
* [assign_role_to_project_members](https://annofab-api-python-client.readthedocs.io/en/latest/wrapper.html#annofabapi.Wrapper.assign_role_to_project_members)
33-
* [copy_project_members](https://annofab-api-python-client.readthedocs.io/en/latest/wrapper.html#annofabapi.Wrapper.copy_project_members)
34-
* [drop_role_to_project_members](https://annofab-api-python-client.readthedocs.io/en/latest/wrapper.html#annofabapi.Wrapper.drop_role_to_project_members)
35-
* [put_project_members](https://annofab-api-python-client.readthedocs.io/en/latest/wrapper.html#annofabapi.Wrapper.put_project_members)
3627

28+
### 2021-09-01 以降
3729

30+
* [annofabapi.wrapper.AnnofabApiWrapper.copy_annotation_specs](https://annofab-api-python-client.readthedocs.io/en/latest/wrapper.html#annofabapi.Wrapper.copy_annotation_specs) を廃止します。特殊なケースにしか対応しておらず、汎用的なメソッドでないためです。
31+
* `annofabapi.models.JobType` を廃止します。替わりに`annofabapi.models.ProjectJobType`を使用してください。
32+
* `annofabapi.dataclass.job.JobInfo`を廃止します。替わりに`annofabapi.models.ProjectJobInfo`を使用してください。
3833

3934
# Features
4035
cURLやPostmanなどよりも簡単にAnnoFab Web APIにアクセスできます。

annofabapi/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.46.0"
1+
__version__ = "0.46.1"

annofabapi/generated_api.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ def put_annotation(
475475
authorizations: AllProjectMember
476476
477477
478-
「過去に誰にも割り当てられていないタスクに含まれる入力データ」に限り、プロジェクトオーナーであればアノテーションを更新できます。 この挙動は、[AnnoFab外部で作成されたアノテーションをインポート](/docs/tutorial/tutorial-ex-importing-annotation.html) する目的にも利用できます。 1度でも誰かに割り当てられたタスクは、タスクの現在の担当者であればアノテーションを更新できます。 タスクの現在の担当者でない場合、エラーになります。 この制限は、アノテーション作業中の予期せぬ同時編集を防ぐためです。 `is_protected`(保護) を `true` にすることで、アノテーションをアノテーションエディタ上での削除から保護できます。 属性の変更もさせたくない場合は、アノテーション仕様で特定の属性を読取専用にすることで保護できます。保護は、 * 外部からインポートしたアノテーション * 別プロジェクトからコピーしたアノテーション などを誤って削除したくないときに便利です。 `is_protected`は、プロジェクトオーナーのみ変更可能です。 なお、本APIでは `is_protected` によらず、更新や削除が可能です。
478+
「過去に誰にも割り当てられていないタスクに含まれる入力データ」に限り、プロジェクトオーナーであればアノテーションを更新できます。 この挙動は、[AnnoFab外部で作成されたアノテーションをインポート](/docs/tutorial/tutorial-ex-importing-annotation.html) する目的にも利用できます。 1度でも誰かに割り当てられたタスクは、タスクの現在の担当者であればアノテーションを更新できます。 タスクの現在の担当者でない場合、エラーになります。 この制限は、アノテーション作業中の予期せぬ同時編集を防ぐためです。 `is_protected`(保護) を `true` にすることで、アノテーションをアノテーションエディタ上での変形・削除から保護できます。 属性の変更もさせたくない場合は、アノテーション仕様で特定の属性を読取専用にすることで保護できます。保護は、 * 外部からインポートしたアノテーション * 別プロジェクトからコピーしたアノテーション などを誤って削除したくないときに便利です。 `is_protected`は、プロジェクトオーナーのみ変更可能です。 なお、本APIでは `is_protected` によらず、変形・更新や削除が可能です。
479479
480480
Args:
481481
project_id (str): プロジェクトID (required)
@@ -2073,7 +2073,7 @@ def get_project_task_history_events_url(self, project_id: str, **kwargs) -> Tupl
20732073
20742074
20752075
"""
2076-
warnings.warn("deprecated", DeprecationWarning)
2076+
warnings.warn("deprecated", FutureWarning)
20772077
url_path = f"/projects/{project_id}/rawdata/task_history_events"
20782078
http_method = "GET"
20792079
keyword_params: Dict[str, Any] = {}

annofabapi/wrapper.py

+7-153
Original file line numberDiff line numberDiff line change
@@ -217,24 +217,19 @@ def _get_all_objects(func_get_list: Callable, limit: int, **kwargs_for_func_get_
217217
#########################################
218218
# Public Method : Annotation
219219
#########################################
220-
def download_annotation_archive(self, project_id: str, dest_path: str, v2: bool = False) -> str:
220+
def download_annotation_archive(self, project_id: str, dest_path: str) -> str:
221221
"""
222222
simpleアノテーションZIPをダウンロードする。
223223
224224
Args:
225225
project_id: プロジェクトID
226226
dest_path: ダウンロード先のファイルパス
227-
v2: 互換性を保つために残している引数。2020-10-31以降に廃止する。
228227
229228
Returns:
230229
ダウンロード元のURL
231230
232231
"""
233232
query_params = None
234-
if v2:
235-
query_params = {"v2": True}
236-
logger.warning("メソッド引数`v2`は2020-10-31以降に廃止します。")
237-
238233
_, response = self.api.get_annotation_archive(project_id, query_params=query_params)
239234
url = response.headers["Location"]
240235
response2 = _download(url, dest_path)
@@ -255,7 +250,7 @@ def download_full_annotation_archive(self, project_id: str, dest_path: str) -> s
255250
ダウンロード元のURL
256251
257252
"""
258-
warnings.warn("deprecated", DeprecationWarning)
253+
warnings.warn("deprecated", FutureWarning)
259254
_, response = self.api.get_archive_full_with_pro_id(project_id)
260255
url = response.headers["Location"]
261256
response2 = _download(url, dest_path)
@@ -657,6 +652,9 @@ def copy_annotation_specs(
657652
"""
658653
アノテーション仕様を、別のプロジェクトにコピーする。
659654
655+
.. deprecated:: 2021-09-01
656+
657+
660658
Note:
661659
誤って実行しないようにすること
662660
@@ -668,6 +666,8 @@ def copy_annotation_specs(
668666
Returns:
669667
put_annotation_specsのContent
670668
"""
669+
warnings.warn("2021-09-01以降に削除します。", FutureWarning)
670+
671671
src_annotation_specs = self.api.get_annotation_specs(src_project_id)[0]
672672

673673
if comment is None:
@@ -1353,152 +1353,6 @@ def get_all_project_members(
13531353
content, _ = self.api.get_project_members(project_id, query_params=query_params)
13541354
return content["list"]
13551355

1356-
def put_project_members(self, project_id, project_members: List[Dict[str, Any]]) -> List[ProjectMember]:
1357-
"""
1358-
複数のプロジェクトメンバを追加/更新/削除する.
1359-
1360-
.. deprecated:: 2020-01-01
1361-
1362-
Args:
1363-
project_id: プロジェクトID
1364-
project_members: 追加/更新するメンバのList. `user_id` , `member_status` , `member_role` をKeyに持つこと
1365-
1366-
Returns:
1367-
`putProjectMember` APIのContentのList
1368-
1369-
"""
1370-
warnings.warn("deprecated: 2021-01-01以降に廃止します。", DeprecationWarning)
1371-
1372-
# 追加/更新前のプロジェクトメンバ
1373-
dest_project_members = self.get_all_project_members(project_id)
1374-
1375-
updated_project_members = []
1376-
# プロジェクトメンバを追加/更新する
1377-
for member in project_members:
1378-
dest_member = [e for e in dest_project_members if e["user_id"] == member["user_id"]]
1379-
last_updated_datetime = dest_member[0]["updated_datetime"] if len(dest_member) > 0 else None
1380-
1381-
request_body = {
1382-
"member_status": member["member_status"],
1383-
"member_role": member["member_role"],
1384-
"sampling_inspection_rate": member.get("sampling_inspection_rate"),
1385-
"sampling_acceptance_rate": member.get("sampling_acceptance_rate"),
1386-
"last_updated_datetime": last_updated_datetime,
1387-
}
1388-
updated_project_member = self.api.put_project_member(
1389-
project_id, member["user_id"], request_body=request_body
1390-
)[0]
1391-
updated_project_members.append(updated_project_member)
1392-
1393-
command_name = "追加" if last_updated_datetime is None else "更新"
1394-
logger.debug(
1395-
"プロジェクトメンバの'%s' 完了." " project_id=%s, user_id=%s, " "last_updated_datetime=%s",
1396-
command_name,
1397-
project_id,
1398-
member["user_id"],
1399-
last_updated_datetime,
1400-
)
1401-
1402-
return updated_project_members
1403-
1404-
def assign_role_to_project_members(
1405-
self, project_id: str, user_id_list: List[str], member_role: str
1406-
) -> List[ProjectMember]:
1407-
"""
1408-
複数のプロジェクトメンバに1つのロールを割り当てる。
1409-
1410-
.. deprecated:: 2020-01-01
1411-
1412-
Note:
1413-
誤って実行しないようにすること
1414-
1415-
Args:
1416-
project_id: プロジェクトID
1417-
user_id_list: 追加/更新するメンバのuser_idのList
1418-
member_role: 割り当てるロール.
1419-
1420-
Returns:
1421-
`putProjectMember` APIのContentのList
1422-
1423-
"""
1424-
warnings.warn("deprecated: 2021-01-01以降に廃止します。", DeprecationWarning)
1425-
1426-
project_members = []
1427-
for user_id in user_id_list:
1428-
member = {"user_id": user_id, "member_status": "active", "member_role": member_role}
1429-
project_members.append(member)
1430-
1431-
return self.put_project_members(project_id, project_members)
1432-
1433-
def drop_role_to_project_members(self, project_id, user_id_list: List[str]) -> List[ProjectMember]:
1434-
"""
1435-
複数のプロジェクトメンバを、プロジェクトから脱退させる
1436-
1437-
.. deprecated:: 2020-01-01
1438-
1439-
Note:
1440-
誤って実行しないようにすること
1441-
1442-
Args:
1443-
project_id: プロジェクトID
1444-
user_id_list: 脱退させるメンバのuser_idのList
1445-
1446-
Returns:
1447-
`putProjectMember` APIのContentのList
1448-
"""
1449-
warnings.warn("deprecated: 2021-01-01以降に廃止します。", DeprecationWarning)
1450-
1451-
project_members = []
1452-
for user_id in user_id_list:
1453-
member = {
1454-
"user_id": user_id,
1455-
"member_status": "inactive",
1456-
"member_role": "worker", # 何か指定しないとエラーになったため、指定する
1457-
}
1458-
project_members.append(member)
1459-
1460-
return self.put_project_members(project_id, project_members)
1461-
1462-
def copy_project_members(
1463-
self, src_project_id: str, dest_project_id: str, delete_dest: bool = False
1464-
) -> List[ProjectMember]:
1465-
"""
1466-
プロジェクトメンバを、別のプロジェクトにコピーする。
1467-
1468-
.. deprecated:: 2020-01-01
1469-
1470-
Note:
1471-
誤って実行しないようにすること
1472-
1473-
Args:
1474-
src_project_id: コピー元のproject_id
1475-
dest_project_id: コピー先のproject_id
1476-
delete_dest: Trueならばコピー先にしか存在しないプロジェクトメンバを削除する。
1477-
1478-
Returns:
1479-
`putProjectMember` APIのContentのList
1480-
1481-
"""
1482-
warnings.warn("deprecated: 2021-01-01以降に廃止します。", DeprecationWarning)
1483-
1484-
src_project_members = self.get_all_project_members(src_project_id)
1485-
dest_project_members = self.get_all_project_members(dest_project_id)
1486-
1487-
if delete_dest:
1488-
# コピー先にしかいないメンバを削除する
1489-
src_account_ids = [e["account_id"] for e in src_project_members]
1490-
deleted_dest_members = [e for e in dest_project_members if e["account_id"] not in src_account_ids]
1491-
1492-
def to_inactive(arg_member):
1493-
arg_member["member_status"] = "inactive"
1494-
return arg_member
1495-
1496-
deleted_dest_members = list(map(to_inactive, deleted_dest_members))
1497-
return self.put_project_members(dest_project_id, src_project_members + deleted_dest_members)
1498-
1499-
else:
1500-
return self.put_project_members(dest_project_id, src_project_members)
1501-
15021356
#########################################
15031357
# Public Method : Task
15041358
#########################################

generate/swagger/swagger.v2.yaml

+1-1
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.116.2
118+
version: 0.117.0
119119
title: AnnoFab Web API
120120
x-logo:
121121
url: "https://annofab.com/resource/images/logo_landscape.png"

generate/swagger/swagger.yaml

+3-3
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.116.2
119+
version: 0.117.0
120120
title: AnnoFab Web API
121121
x-logo:
122122
url: "https://annofab.com/resource/images/logo_landscape.png"
@@ -4305,7 +4305,7 @@ paths:
43054305
タスクの現在の担当者でない場合、エラーになります。
43064306
この制限は、アノテーション作業中の予期せぬ同時編集を防ぐためです。
43074307
4308-
`is_protected`(保護) を `true` にすることで、アノテーションをアノテーションエディタ上での削除から保護できます
4308+
`is_protected`(保護) を `true` にすることで、アノテーションをアノテーションエディタ上での変形・削除から保護できます
43094309
属性の変更もさせたくない場合は、アノテーション仕様で特定の属性を読取専用にすることで保護できます。保護は、
43104310
43114311
* 外部からインポートしたアノテーション
@@ -4314,7 +4314,7 @@ paths:
43144314
などを誤って削除したくないときに便利です。
43154315
`is_protected`は、プロジェクトオーナーのみ変更可能です。
43164316
4317-
なお、本APIでは `is_protected` によらず、更新や削除が可能です。
4317+
なお、本APIでは `is_protected` によらず、変形・更新や削除が可能です。
43184318
security:
43194319
- AllProjectMember: []
43204320
operationId: putAnnotation

generate/template/api.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252

5353
"""
5454
{{#isDeprecated}}
55-
warnings.warn("deprecated", DeprecationWarning)
55+
warnings.warn("deprecated", FutureWarning)
5656
{{/isDeprecated}}
5757
url_path = f'{{{path}}}'
5858
http_method = '{{httpMethod}}'

poetry.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "annofabapi"
3-
version = "0.46.0"
3+
version = "0.46.1"
44
description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)"
55
authors = ["yuji38kwmt"]
66
license = "MIT"
@@ -43,7 +43,7 @@ more-itertools = "*"
4343
# format library
4444
isort = "*"
4545
autoflake = "*"
46-
black = {version = "^21.5b1", allow-prereleases = true}
46+
black = {version = "^21.6b0", allow-prereleases = true}
4747

4848
# lint library
4949
flake8 = "*"

0 commit comments

Comments
 (0)