diff --git a/Pipfile.lock b/Pipfile.lock index 746f1b9d..6c52895d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -28,10 +28,10 @@ }, "astroid": { "hashes": [ - "sha256:6560e1e1749f68c64a4b5dee4e091fce798d2f0d84ebe638cf0e0585a343acf4", - "sha256:b65db1bbaac9f9f4d190199bb8680af6f6f84fd3769a5ea883df8a91fe68b4c4" + "sha256:9b3f17b0550f82e28a6776a4e5222441f48e523b0773df4bc505bb6b7c2093b7", + "sha256:c7e2e5773d87ccc00d01c273e439386f4d6d63cce61317a79ccce5880162f9fb" ], - "version": "==2.2.5" + "version": "==2.3.0" }, "atomicwrites": { "hashes": [ @@ -77,10 +77,10 @@ }, "certifi": { "hashes": [ - "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", - "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" + "sha256:e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50", + "sha256:fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef" ], - "version": "==2019.6.16" + "version": "==2019.9.11" }, "chardet": { "hashes": [ @@ -91,42 +91,42 @@ }, "coverage": { "hashes": [ - "sha256:108efa19b676e62590a7a13084098e35183479c0d9608131c20b0921c5a72dc0", - "sha256:16fe3ef881eff27bab287f91dadb4ff0ce4388b9e928d84cbf148a83cc70b3a1", - "sha256:1d0bbc11421827d1100da82ac8dc929532b97ad464038475a0f6505cbf83d6ea", - "sha256:23a8ca5b3c9673f775cc151e85a737f1a967df2ec02b09e8c5a3b606ff2050bf", - "sha256:24b890e51455276762b55cb06fa1c922066e8fc18d1deb1a6399b4d24dfa8ea2", - "sha256:2f0041757ca4801f3c6a74d1660862fdb18a25aea302dd0ce9b067ddbb06b667", - "sha256:3169aba03baddfccdab7cc04cf0878dbf76fc06d300bc35639129a6b794d6484", - "sha256:364fb1bf0f999af2e7f4b1a1e614b2af8c3e0017d11af716aad25f911b7cd0c7", - "sha256:5256856d23f3e45959e7e3a8f9d4cbad3d1613e5660cb8117cd1417798efc395", - "sha256:5b26daa1e1a1147455bf62cd682e504e68f1d1e04235374d50a5248a3c792b1c", - "sha256:60247c8f0c756732e2cfe21f03e6847b923b9a9eaff61f04dc64d3047ec1b669", - "sha256:6463d51507308eb3973340d903537f17ece2ee1e6513aa0c27548fc3a09b0471", - "sha256:64cbadf7a884b299794238bc4391752130e74f71e919993b50c1c431786ef2a2", - "sha256:6de85748ea39ce819ad6d90e660da43964457a1f5cd25262e962a7c7c87945b3", - "sha256:6f95b4794bd84f64aeca25087d8e3abc416aad76842afcac34fa6c3a6f61c62e", - "sha256:778fa184aa3079fa3cbd240e2f5b36771c3382db26bc7bf78aea9d06212c6c66", - "sha256:790a9c5e2dbdf6c41eec9776ed663e99bd36c1604e3bf2e8ae3b123181bfee9f", - "sha256:7d97c1aec0b68b4ea5e3c9edb9fc3f951e8a52360f4bad3aacab9a77defe5b17", - "sha256:93cefddcc0b541d3c52981a232947bf085a38092b0812317f1adb56f02869bcb", - "sha256:95e49867ac616ec63ecd69ea005e65e4b896a48b8db7f9f3ad69f37be29324b7", - "sha256:aca423563eafba66a7c15125391b267befd1e45238de5e1a119ae1fb4ea83b5c", - "sha256:baef7c35e7fce738d9637e9c7a6aa79cb79085e4de49c2ec517ce19239a660f6", - "sha256:c10ccf0797ffce85e93a40aff3a96a3adb63c734f95b59384a7c9522ed25c9e2", - "sha256:ca39704a05bba1886c384a4d7944fda72c53fe5e61979cd933d22084678ad4c1", - "sha256:f6e96d5eee578187f5b7e9266bf646b73de29e2dd7adca8bd83e383680ce1f4c", - "sha256:fc6524511fa664cb4e91401229eedd0dad4ba6ded9c4423fee2f698d78908d9c", - "sha256:fdf2e7e5f074495ad6ea796ca0d245aa6a8b9e4c546ffbf8d30aaaee6601af0f" - ], - "version": "==5.0a6" + "sha256:094378c3a35594335a840ea04d473c019e6d4fe10e343cd0d7fb5e87f8b7e926", + "sha256:10216222f3e4139910b6230d0ca0fe9d10ee98837eb83d29525722d628729d20", + "sha256:147478e21cba12c63b3454df5a2fb77b44df630428cffa3a36a6813e38157eab", + "sha256:230ce08965190c0f69196be34a07a795981b2b02b21419c2e1918a882b3eeab0", + "sha256:2469621d680a4c71cdbd3ea4dbed9d199bba93f21d2be1c107ded907b2db41a8", + "sha256:26526174d11fb2163832628d943edd452e07528b0ecc0c83c88256a59a32287c", + "sha256:2690bf0835f34ef3451860b02471e9560e4b3caf7413abeaa7544af72eb6d9ed", + "sha256:2b6f2d9a60413e75651cebe33c3f2f66d61209db44e8b9cf6d8d66fb0cb01fda", + "sha256:3ce91c6b92160ecefedf95a8c61fbf4fb36b0addef1a40c654acf1ad390653d0", + "sha256:43d16d7e9e9eaace3d9f1828b617b1be248f90d031a4b2dc1b6e1c88f1602dcf", + "sha256:52b6455da5f547cad72fd5cfc57a16678573fda6c695d257b5c266a44dbbd172", + "sha256:533f3036c8f58e6381fcca3306fe988740638c62c7fc86b7fae9c74b85ac3cdc", + "sha256:62d2abe5c733394058cb381d088bcab64a18da3ce9dc9a8ef2a18e122cbe47f1", + "sha256:72c34f99164679e44a5cbf19bf1a13be4e715c680816302b6ceca49b979fde91", + "sha256:81fc07feed4e40a7c0bdd266efa65e5afc83b5e0f1063007acc6759a957322a1", + "sha256:82093e673182c761ce54dfab17f026a06be3c011fee9b653855b9a2649f20232", + "sha256:87947fef728f72860407c446fd9b4a0f98e39e91ad7ae80803c02a85738e63ef", + "sha256:8b18c5a5a6b35b6311d2c356782ce3c7bacf6d987d9dc479178577391bf1c7dd", + "sha256:90e1850e993aa6b81bafaf672c8e508eaa17fbb5eb23aba93f7f4df822f3bd29", + "sha256:99f71e365bcb03a8debe1a75061329c9e45379f244a229442319d64c53c4e844", + "sha256:9b2c559104a90bf0043d6ef262ca205326d1fe6ec572dcf59e34be9289432793", + "sha256:ad22b073d92ea65b063e612154c72d6367dec3dd47ed33c02e3ab339eabe7bf3", + "sha256:bc3648da235fee2113a8cb80154d9fff4e2689d2d4a11ad35c1ecae23454b539", + "sha256:d0e2478bde68c5d853bcd306b5aae8fbe80417e87957a21fa6ee71edb90639f2", + "sha256:d3e6912d2370925222d2bfb3bd2ba02e9698b8da89cf7192ddf80cbb9f2455ee", + "sha256:d4fa98e3e15863568ea89eaec5e0866ca763980bdc56098dd9316865c111a28e", + "sha256:ee924a23457b373241ff39d21570360afd8ccb58520eb1e8e18eb00827b73e2d" + ], + "version": "==5.0a7" }, "dataclasses-json": { "hashes": [ - "sha256:3635b76f91648dcfc407a681171307081d8881541a82b28bea6785a752350b36", - "sha256:6b1a6acb1ecaa33f18ffaa6c191fe21b33361457e5b4e1190d6d1e6798a1e1e4" + "sha256:0b82f09bcb5150a838db49dd150414f6acc93a3721f71f40845c67a933410efd", + "sha256:e54ba4f123218e8aa0d9c018935f5e83044b773a4cd22ab1705b075fab2964aa" ], - "version": "==0.3.1" + "version": "==0.3.3" }, "docutils": { "hashes": [ @@ -175,11 +175,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:23d3d873e008a513952355379d93cbcab874c58f4f034ff657c7a87422fa64e8", - "sha256:80d2de76188eabfbfcf27e6a37342c2827801e59c4cc14b0371c56fed43820e3" + "sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26", + "sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af" ], "markers": "python_version < '3.8'", - "version": "==0.19" + "version": "==0.23" }, "isort": { "hashes": [ @@ -254,10 +254,10 @@ }, "marshmallow": { "hashes": [ - "sha256:23f684b54b1955ebd5bdfbdda4062e438ef86218f14f1a356f570cdf0c016ab3", - "sha256:fcfc9ffd75a883da06f30f604a4e81dd0b56eb9438f4d0a8de6bbaa163ce9ec3" + "sha256:6dca0125320c15795c4f2dfe8f2f5c37a96916e7a09a123eba05ef24d3126b94", + "sha256:801a7c70f0596b812a086773b9d7ba85b4bbad1becab14cde460ab7798511409" ], - "version": "==3.0.1" + "version": "==3.2.0" }, "marshmallow-enum": { "hashes": [ @@ -306,10 +306,10 @@ }, "packaging": { "hashes": [ - "sha256:a7ac867b97fdc07ee80a8058fe4435ccd274ecc3b0ed61d852d7d53055528cf9", - "sha256:c491ca87294da7cc01902edbe30a5bc6c4c28172b5138ab4e4aa1b9d7bfaeafe" + "sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47", + "sha256:d9551545c6d761f3def1677baf08ab2a3ca17c56879e70fecba2fc4dde4ed108" ], - "version": "==19.1" + "version": "==19.2" }, "pkginfo": { "hashes": [ @@ -320,10 +320,10 @@ }, "pluggy": { "hashes": [ - "sha256:0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc", - "sha256:b9817417e95936bf75d85d3f8767f7df6cdde751fc40aed3bb3074cbcb77757c" + "sha256:0db4b7601aae1d35b4a033282da476845aa19185c1e6964b25cf324b5e4ec3e6", + "sha256:fa5fa1622fa6dd5c030e9cad086fa19ef6a0cf6d7a2d12318e10cb49d6d68f34" ], - "version": "==0.12.0" + "version": "==0.13.0" }, "py": { "hashes": [ @@ -355,11 +355,11 @@ }, "pylint": { "hashes": [ - "sha256:5d77031694a5fb97ea95e828c8d10fc770a1df6eb3906067aaed42201a8a6a09", - "sha256:723e3db49555abaf9bf79dc474c6b9e2935ad82230b10c1138a71ea41ac0fff1" + "sha256:2d64b4b8fa044480b1a49d47535da53557f8f426b8c5bd6a23beb65e905101a1", + "sha256:6cbd124a1a5ed1fd3f3fed4178a6c2ba166862ea0dac6ab2ff8d9f0998b13e5c" ], "index": "pypi", - "version": "==2.3.1" + "version": "==2.4.1" }, "pyparsing": { "hashes": [ @@ -370,11 +370,11 @@ }, "pytest": { "hashes": [ - "sha256:95d13143cc14174ca1a01ec68e84d76ba5d9d493ac02716fd9706c949a505210", - "sha256:b78fe2881323bd44fd9bd76e5317173d4316577e7b1cddebae9136a4495ec865" + "sha256:813b99704b22c7d377bbd756ebe56c35252bb710937b46f207100e843440b3c2", + "sha256:cc6620b96bc667a0c8d4fa592a8c9c94178a1bd6cc799dbb057dfd9286d31a31" ], "index": "pypi", - "version": "==5.1.2" + "version": "==5.1.3" }, "pytest-cov": { "hashes": [ @@ -428,9 +428,9 @@ }, "snowballstemmer": { "hashes": [ - "sha256:9f3b9ffe0809d174f7047e121431acf99c89a7040f0ca84f94ba53a498e6d0c9" + "sha256:713e53b79cbcf97bc5245a06080a33d54a77e7cce2f789c835a143bcdb5c033e" ], - "version": "==1.9.0" + "version": "==1.9.1" }, "sphinx": { "hashes": [ @@ -462,26 +462,26 @@ }, "tox": { "hashes": [ - "sha256:dab0b0160dd187b654fc33d690ee1d7bf328bd5b8dc6ef3bb3cc468969c659ba", - "sha256:ee35ffce74933a6c6ac10c9a0182e41763140a5a5070e21b114feca56eaccdcd" + "sha256:0bc216b6a2e6afe764476b4a07edf2c1dab99ed82bb146a1130b2e828f5bff5e", + "sha256:c4f6b319c20ba4913dbfe71ebfd14ff95d1853c4231493608182f66e566ecfe1" ], "index": "pypi", - "version": "==3.13.2" + "version": "==3.14.0" }, "tqdm": { "hashes": [ - "sha256:1be3e4e3198f2d0e47b928e9d9a8ec1b63525db29095cec1467f4c5a4ea8ebf9", - "sha256:7e39a30e3d34a7a6539378e39d7490326253b7ee354878a92255656dc4284457" + "sha256:abc25d0ce2397d070ef07d8c7e706aede7920da163c64997585d42d3537ece3d", + "sha256:dd3fcca8488bb1d416aa7469d2f277902f26260c45aa86b667b074cd44b3b115" ], - "version": "==4.35.0" + "version": "==4.36.1" }, "twine": { "hashes": [ - "sha256:0fb0bfa3df4f62076cab5def36b1a71a2e4acb4d1fa5c97475b048117b1a6446", - "sha256:d6c29c933ecfc74e9b1d9fa13aa1f87c5d5770e119f5a4ce032092f0ff5b14dc" + "sha256:5319dd3e02ac73fcddcd94f035b9631589ab5d23e1f4699d57365199d85261e1", + "sha256:9fe7091715c7576df166df8ef6654e61bada39571783f2fd415bdcba867c6993" ], "index": "pypi", - "version": "==1.13.0" + "version": "==2.0.0" }, "typed-ast": { "hashes": [ @@ -501,7 +501,7 @@ "sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", "sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12" ], - "markers": "implementation_name == 'cpython'", + "markers": "implementation_name == 'cpython' and python_version >= '3.7' and python_version < '3.8'", "version": "==1.4.0" }, "typing-extensions": { @@ -522,17 +522,17 @@ }, "urllib3": { "hashes": [ - "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", - "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" + "sha256:3de946ffbed6e6746608990594d08faac602528ac7015ac28d33cee6a45b7398", + "sha256:9a107b99a5393caf59c7aa3c1249c16e6879447533d0887f4336dde834c7be86" ], - "version": "==1.25.3" + "version": "==1.25.6" }, "virtualenv": { "hashes": [ - "sha256:94a6898293d07f84a98add34c4df900f8ec64a570292279f6d91c781d37fd305", - "sha256:f6fc312c031f2d2344f885de114f1cb029dfcffd26aa6e57d2ee2296935c4e7d" + "sha256:680af46846662bb38c5504b78bad9ed9e4f3ba2d54f54ba42494fdf94337fe30", + "sha256:f78d81b62d3147396ac33fc9d77579ddc42cc2a98dd9ea38886f616b33bc7fb2" ], - "version": "==16.7.4" + "version": "==16.7.5" }, "wcwidth": { "hashes": [ diff --git a/annofabapi/__version__.py b/annofabapi/__version__.py index 5ec52a92..482e4a19 100644 --- a/annofabapi/__version__.py +++ b/annofabapi/__version__.py @@ -1 +1 @@ -__version__ = '0.18.0' +__version__ = '0.19.0' diff --git a/annofabapi/dataclass/input.py b/annofabapi/dataclass/input.py index a5531ac1..0bb718c2 100644 --- a/annofabapi/dataclass/input.py +++ b/annofabapi/dataclass/input.py @@ -19,7 +19,7 @@ @dataclass class Resolution: """ - 画像などの解像度 + """ width: float """""" diff --git a/annofabapi/dataclass/instruction.py b/annofabapi/dataclass/instruction.py new file mode 100644 index 00000000..4d85b242 --- /dev/null +++ b/annofabapi/dataclass/instruction.py @@ -0,0 +1,59 @@ +# flake8: noqa: W291 +# pylint: disable=too-many-lines,trailing-whitespace +""" +annofabapiのmodelをDataClassで定義したクラス + +Note: + このファイルはopenapi-generatorで自動生成される。詳細は generate/README.mdを参照. + oneOf, allOfなどは正しく表現できない可能性がある。 +""" + +import warnings # pylint: disable=unused-import +from dataclasses import dataclass +from typing import Any, Dict, List, NewType, Optional, Tuple, Union # pylint: disable=unused-import + +from dataclasses_json import dataclass_json + + +@dataclass_json +@dataclass +class Instruction: + """ + + """ + html: Optional[str] + """""" + + last_updated_datetime: Optional[str] + """* `GetInstruction` の場合: 最後に作業ガイドを更新した日時。 * `PutInstruction` の場合: 最後に作業ガイドを更新した日時を指定する。まだ一度も保存した事がない場合は指定しない。 """ +@dataclass_json +@dataclass +class InstructionHistory: + """ + + """ + history_id: Optional[str] + """""" + + account_id: Optional[str] + """""" + + updated_datetime: Optional[str] + """""" +@dataclass_json +@dataclass +class InstructionImage: + """ + + """ + image_id: Optional[str] + """""" + + path: Optional[str] + """""" + + url: Optional[str] + """""" + + etag: Optional[str] + """""" diff --git a/annofabapi/dataclass/project.py b/annofabapi/dataclass/project.py index b96fd06d..43c4d1f5 100644 --- a/annofabapi/dataclass/project.py +++ b/annofabapi/dataclass/project.py @@ -31,9 +31,6 @@ class ProjectConfiguration: """ """ - project_rule: Optional[str] - """""" - number_of_inspections: Optional[int] """検査回数。 * 0回:教師付け -> 受入 * 1回:教師付け -> 検査 -> 受入 * n回(n >= 2):教師付け -> 検査1 -> ... -> 検査n -> 受入 """ diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py index 0769a10a..d7493bf1 100644 --- a/annofabapi/generated_api.py +++ b/annofabapi/generated_api.py @@ -31,7 +31,7 @@ def _request_wrapper(self, http_method: str, url_path: str, query_params: Option # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def change_password(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def change_password(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """パスワード変更 @@ -55,7 +55,7 @@ def change_password(self, request_body: Optional[Any] = None) -> Tuple[Any, requ } return self._request_wrapper(http_method, url_path, **keyword_params) - def confirm_reset_email(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def confirm_reset_email(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """メールアドレスstep2(確定) @@ -80,7 +80,7 @@ def confirm_reset_email(self, request_body: Optional[Any] = None) -> Tuple[Any, } return self._request_wrapper(http_method, url_path, **keyword_params) - def confirm_reset_password(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def confirm_reset_password(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """パスワードリセットstep3(新しいパスワードに変更) @@ -105,7 +105,7 @@ def confirm_reset_password(self, request_body: Optional[Any] = None) -> Tuple[An } return self._request_wrapper(http_method, url_path, **keyword_params) - def confirm_signup(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def confirm_signup(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """サインアップstep2(確定) @@ -129,7 +129,7 @@ def confirm_signup(self, request_body: Optional[Any] = None) -> Tuple[Any, reque } return self._request_wrapper(http_method, url_path, **keyword_params) - def confirm_verify_email(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def confirm_verify_email(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """メールアドレス検証step2(確定) @@ -154,7 +154,7 @@ def confirm_verify_email(self, request_body: Optional[Any] = None) -> Tuple[Any, } return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_password_reset(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def initiate_password_reset(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """パスワードリセットstep1(開始) @@ -179,7 +179,7 @@ def initiate_password_reset(self, request_body: Optional[Any] = None) -> Tuple[A } return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_reset_email(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def initiate_reset_email(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """メールアドレスリセットstep1(開始) @@ -204,7 +204,7 @@ def initiate_reset_email(self, request_body: Optional[Any] = None) -> Tuple[Any, } return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_signup(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def initiate_signup(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """サインアップstep1(開始) @@ -227,7 +227,7 @@ def initiate_signup(self, request_body: Optional[Any] = None) -> Tuple[Any, requ } return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_verify_email(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def initiate_verify_email(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """メールアドレス検証step1(開始) @@ -252,7 +252,7 @@ def initiate_verify_email(self, request_body: Optional[Any] = None) -> Tuple[Any } return self._request_wrapper(http_method, url_path, **keyword_params) - def reset_password(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def reset_password(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """パスワードリセットstep2(古いパスワードを無効化) @@ -282,8 +282,8 @@ def reset_password(self, request_body: Optional[Any] = None) -> Tuple[Any, reque # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def batch_update_annotations(self, project_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def batch_update_annotations(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """アノテーション一括更新 @@ -309,12 +309,8 @@ def batch_update_annotations(self, project_id: str, } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_annotation( - self, - project_id: str, - task_id: str, - input_data_id: str, - ) -> Tuple[Any, requests.Response]: + def get_annotation(self, project_id: str, task_id: str, input_data_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """タスク-入力データのSimpleアノテーション一括取得 @@ -338,10 +334,8 @@ def get_annotation( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_annotation_archive( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_annotation_archive(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """simpleアノテーションZIP取得 @@ -352,6 +346,8 @@ def get_annotation_archive( Args: project_id (str): プロジェクトID (required) + query_params (Dict[str, Any]): Query Parameters + v2 (str): このクエリパラメータのキーだけを指定(`?v2`)、または値 `true` も指定(`?v2=true`)すると、アノテーションJSONのファイル名は `{入力データID}.json` になります。 この v2 形式は、入力データ名がファイル名の長さ上限を上回ってもよいように再設計されたものです。 以前の v1 形式(アノテーションJSONのファイル名は `{入力データ名}.json` )はいずれ廃止され、クエリパラメータ `v2` があってもなくても v2 形式に置き換わる予定です。 Returns: Tuple[SimpleAnnotation, requests.Response] @@ -360,14 +356,13 @@ def get_annotation_archive( """ url_path = f'/projects/{project_id}/archive/simple' http_method = 'GET' - keyword_params: Dict[str, Any] = {} + keyword_params: Dict[str, Any] = { + 'query_params': query_params, + } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_annotation_list( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_annotation_list(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """アノテーション一括取得 @@ -397,10 +392,7 @@ def get_annotation_list( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_archive_full_with_pro_id( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_archive_full_with_pro_id(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """fullアノテーションZIP取得 @@ -422,13 +414,8 @@ def get_archive_full_with_pro_id( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_outer_with_pro_id_tas_id_inp_dat_id_ann_id( - self, - project_id: str, - task_id: str, - input_data_id: str, - annotation_id: str, - ) -> Tuple[Any, requests.Response]: + def get_outer_with_pro_id_tas_id_inp_dat_id_ann_id(self, project_id: str, task_id: str, input_data_id: str, + annotation_id: str, **kwargs) -> Tuple[Any, requests.Response]: """【エディタ用】外部ファイル形式のアノテーション取得 .. deprecated:: X @@ -455,10 +442,7 @@ def get_outer_with_pro_id_tas_id_inp_dat_id_ann_id( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def post_annotation_archive_update( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def post_annotation_archive_update(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """アノテーションZIP更新開始 @@ -480,8 +464,8 @@ def post_annotation_archive_update( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def put_annotation(self, project_id: str, task_id: str, input_data_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_annotation(self, project_id: str, task_id: str, input_data_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク-入力データのアノテーション更新 @@ -514,10 +498,7 @@ def put_annotation(self, project_id: str, task_id: str, input_data_id: str, # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_annotation_specs( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_annotation_specs(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """アノテーション仕様取得 @@ -538,10 +519,7 @@ def get_annotation_specs( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_annotation_specs_histories( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_annotation_specs_histories(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """アノテーション仕様履歴取得 @@ -562,8 +540,8 @@ def get_annotation_specs_histories( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def put_annotation_specs(self, project_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_annotation_specs(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """アノテーション仕様更新 @@ -593,7 +571,8 @@ def put_annotation_specs(self, project_id: str, # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def batch_update_inputs(self, project_id: str, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def batch_update_inputs(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """入力データ一括更新 @@ -619,11 +598,8 @@ def batch_update_inputs(self, project_id: str, request_body: Optional[Any] = Non } return self._request_wrapper(http_method, url_path, **keyword_params) - def create_temp_path( - self, - project_id: str, - header_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def create_temp_path(self, project_id: str, header_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """一時データ保存先取得 @@ -649,11 +625,7 @@ def create_temp_path( } return self._request_wrapper(http_method, url_path, **keyword_params) - def delete_input_data( - self, - project_id: str, - input_data_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_input_data(self, project_id: str, input_data_id: str, **kwargs) -> Tuple[Any, requests.Response]: """入力データ削除 @@ -675,11 +647,7 @@ def delete_input_data( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_input_data( - self, - project_id: str, - input_data_id: str, - ) -> Tuple[Any, requests.Response]: + def get_input_data(self, project_id: str, input_data_id: str, **kwargs) -> Tuple[Any, requests.Response]: """入力データ取得 @@ -701,11 +669,8 @@ def get_input_data( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_input_data_list( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_input_data_list(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """入力データ一括取得 @@ -737,11 +702,8 @@ def get_input_data_list( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_signed_url_of_input_data( - self, - project_id: str, - input_data_id: str, - ) -> Tuple[Any, requests.Response]: + def get_signed_url_of_input_data(self, project_id: str, input_data_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """実体参照用認証済みURL取得 .. deprecated:: X @@ -766,8 +728,8 @@ def get_signed_url_of_input_data( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def put_input_data(self, project_id: str, input_data_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_input_data(self, project_id: str, input_data_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """入力データ更新 @@ -800,7 +762,7 @@ def put_input_data(self, project_id: str, input_data_id: str, ######################################### def batch_update_inspections(self, project_id: str, task_id: str, input_data_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """検査コメント一括更新 @@ -828,12 +790,8 @@ def batch_update_inspections(self, project_id: str, task_id: str, input_data_id: } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_inspections( - self, - project_id: str, - task_id: str, - input_data_id: str, - ) -> Tuple[Any, requests.Response]: + def get_inspections(self, project_id: str, task_id: str, input_data_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """検査コメント一括取得 @@ -861,11 +819,7 @@ def get_inspections( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def delete_instruction_image( - self, - project_id: str, - image_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_instruction_image(self, project_id: str, image_id: str, **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの画像削除 @@ -888,11 +842,8 @@ def delete_instruction_image( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_instruction( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_instruction(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの取得 @@ -907,7 +858,7 @@ def get_instruction( history_id (str): 取得する版の履歴ID (required) Returns: - Tuple[str, requests.Response] + Tuple[Instruction, requests.Response] """ @@ -918,11 +869,8 @@ def get_instruction( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_instruction_history( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_instruction_history(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの編集履歴の取得 @@ -948,12 +896,9 @@ def get_instruction_history( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_instruction_image_url_for_put( - self, - project_id: str, - image_id: str, - header_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_instruction_image_url_for_put(self, project_id: str, image_id: str, + header_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの画像登録・更新用URL取得 @@ -980,10 +925,7 @@ def get_instruction_image_url_for_put( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_instruction_images( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_instruction_images(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの画像一覧の取得 @@ -1005,7 +947,8 @@ def get_instruction_images( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def put_instruction(self, project_id: str, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_instruction(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの更新 @@ -1017,7 +960,7 @@ def put_instruction(self, project_id: str, request_body: Optional[Any] = None) - Args: project_id (str): プロジェクトID (required) request_body (Any): Request Body - body (str): (required) + instruction (Instruction): (required) Returns: Tuple[InstructionHistory, requests.Response] @@ -1036,11 +979,7 @@ def put_instruction(self, project_id: str, request_body: Optional[Any] = None) - # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def delete_project_job( - self, - project_id: str, - job_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_project_job(self, project_id: str, job_id: str, **kwargs) -> Tuple[Any, requests.Response]: """バックグラウンドジョブ情報削除 @@ -1062,11 +1001,8 @@ def delete_project_job( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project_job( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_project_job(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """バックグラウンドジョブ情報取得 @@ -1100,7 +1036,7 @@ def get_project_job( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def confirm_my_account_delete(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def confirm_my_account_delete(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """アカウント削除step2(確定) @@ -1125,7 +1061,7 @@ def confirm_my_account_delete(self, request_body: Optional[Any] = None) -> Tuple } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_my_account(self, ) -> Tuple[Any, requests.Response]: + def get_my_account(self, **kwargs) -> Tuple[Any, requests.Response]: """自分のアカウント取得 @@ -1145,10 +1081,7 @@ def get_my_account(self, ) -> Tuple[Any, requests.Response]: keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_my_member_in_project( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_my_member_in_project(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """自分のプロジェクトメンバー取得 @@ -1170,10 +1103,8 @@ def get_my_member_in_project( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_my_organizations( - self, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_my_organizations(self, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """所属組織一括取得 @@ -1198,7 +1129,7 @@ def get_my_organizations( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_my_project_members(self, ) -> Tuple[Any, requests.Response]: + def get_my_project_members(self, **kwargs) -> Tuple[Any, requests.Response]: """自分のプロジェクトメンバー情報一括取得 @@ -1218,10 +1149,7 @@ def get_my_project_members(self, ) -> Tuple[Any, requests.Response]: keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_my_projects( - self, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_my_projects(self, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """所属プロジェクト一括取得 @@ -1249,7 +1177,7 @@ def get_my_projects( } return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_my_account_delete(self, ) -> Tuple[Any, requests.Response]: + def initiate_my_account_delete(self, **kwargs) -> Tuple[Any, requests.Response]: """アカウント削除step1 @@ -1270,7 +1198,7 @@ def initiate_my_account_delete(self, ) -> Tuple[Any, requests.Response]: keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def put_my_account(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_my_account(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """自分のアカウント情報更新 @@ -1294,7 +1222,7 @@ def put_my_account(self, request_body: Optional[Any] = None) -> Tuple[Any, reque } return self._request_wrapper(http_method, url_path, **keyword_params) - def update_organization(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def update_organization(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """組織名変更 @@ -1324,7 +1252,7 @@ def update_organization(self, request_body: Optional[Any] = None) -> Tuple[Any, # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def create_new_organization(self, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def create_new_organization(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """組織新規作成 @@ -1349,10 +1277,7 @@ def create_new_organization(self, request_body: Optional[Any] = None) -> Tuple[A } return self._request_wrapper(http_method, url_path, **keyword_params) - def delete_organization( - self, - organization_name: str, - ) -> Tuple[Any, requests.Response]: + def delete_organization(self, organization_name: str, **kwargs) -> Tuple[Any, requests.Response]: """組織削除 @@ -1374,10 +1299,7 @@ def delete_organization( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization( - self, - organization_name: str, - ) -> Tuple[Any, requests.Response]: + def get_organization(self, organization_name: str, **kwargs) -> Tuple[Any, requests.Response]: """組織情報取得 @@ -1398,10 +1320,7 @@ def get_organization( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_activity( - self, - organization_name: str, - ) -> Tuple[Any, requests.Response]: + def get_organization_activity(self, organization_name: str, **kwargs) -> Tuple[Any, requests.Response]: """組織活動サマリー取得 @@ -1422,11 +1341,8 @@ def get_organization_activity( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_projects_of_organization( - self, - organization_name: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_projects_of_organization(self, organization_name: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """組織配下プロジェクト一括取得 @@ -1462,8 +1378,8 @@ def get_projects_of_organization( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def accept_organization_invitation(self, organization_name: str, user_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def accept_organization_invitation(self, organization_name: str, user_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """組織への招待受諾 @@ -1490,11 +1406,8 @@ def accept_organization_invitation(self, organization_name: str, user_id: str, } return self._request_wrapper(http_method, url_path, **keyword_params) - def delete_organization_member( - self, - organization_name: str, - user_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_organization_member(self, organization_name: str, user_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """組織メンバー削除 @@ -1517,11 +1430,7 @@ def delete_organization_member( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_member( - self, - organization_name: str, - user_id: str, - ) -> Tuple[Any, requests.Response]: + def get_organization_member(self, organization_name: str, user_id: str, **kwargs) -> Tuple[Any, requests.Response]: """組織メンバー取得 @@ -1544,10 +1453,7 @@ def get_organization_member( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_members( - self, - organization_name: str, - ) -> Tuple[Any, requests.Response]: + def get_organization_members(self, organization_name: str, **kwargs) -> Tuple[Any, requests.Response]: """組織メンバー一括取得 @@ -1569,8 +1475,8 @@ def get_organization_members( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def invite_organization_member(self, organization_name: str, user_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def invite_organization_member(self, organization_name: str, user_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """組織への招待送信 @@ -1597,8 +1503,8 @@ def invite_organization_member(self, organization_name: str, user_id: str, } return self._request_wrapper(http_method, url_path, **keyword_params) - def update_organization_member_role(self, organization_name: str, user_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def update_organization_member_role(self, organization_name: str, user_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """組織メンバーのロール更新 @@ -1629,10 +1535,7 @@ def update_organization_member_role(self, organization_name: str, user_id: str, # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def delete_project( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_project(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクト削除 @@ -1654,10 +1557,7 @@ def delete_project( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_of_project( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_organization_of_project(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトの所属組織取得 @@ -1678,10 +1578,7 @@ def get_organization_of_project( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_project(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクト取得 @@ -1702,10 +1599,7 @@ def get_project( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project_inspections_url( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_project_inspections_url(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトの検査コメント全件URLの取得 @@ -1727,10 +1621,7 @@ def get_project_inspections_url( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project_task_history_events_url( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_project_task_history_events_url(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのタスク履歴イベント全件URLの取得 @@ -1752,10 +1643,7 @@ def get_project_task_history_events_url( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project_tasks_url( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_project_tasks_url(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのタスク全件URLの取得 @@ -1777,8 +1665,8 @@ def get_project_tasks_url( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_project_copy(self, project_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def initiate_project_copy(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクト複製 @@ -1804,10 +1692,7 @@ 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]: + def post_project_tasks_update(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのタスク全件ファイル更新開始 @@ -1829,7 +1714,8 @@ def post_project_tasks_update( 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]: + def put_project(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクト作成/更新 @@ -1860,11 +1746,7 @@ def put_project(self, project_id: str, request_body: Optional[Any] = None) -> Tu # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_project_member( - self, - project_id: str, - user_id: str, - ) -> Tuple[Any, requests.Response]: + def get_project_member(self, project_id: str, user_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトメンバー取得 @@ -1886,11 +1768,8 @@ def get_project_member( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project_members( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_project_members(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトメンバー一括取得 @@ -1915,8 +1794,8 @@ def get_project_members( } return self._request_wrapper(http_method, url_path, **keyword_params) - def put_project_member(self, project_id: str, user_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_project_member(self, project_id: str, user_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトメンバー作成/更新 @@ -1947,10 +1826,7 @@ def put_project_member(self, project_id: str, user_id: str, # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_account_statistics( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_account_statistics(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """ユーザー別タスク集計取得 @@ -1971,10 +1847,7 @@ def get_account_statistics( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_inspection_statistics( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_inspection_statistics(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """検査コメント集計取得 @@ -1995,10 +1868,7 @@ def get_inspection_statistics( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_label_statistics( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_label_statistics(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """ラベル別アノテーション数集計取得 @@ -2020,10 +1890,7 @@ def get_label_statistics( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_phase_statistics( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_task_phase_statistics(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """フェーズ別タスク集計取得 @@ -2044,10 +1911,7 @@ def get_task_phase_statistics( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_statistics( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_task_statistics(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """タスク集計取得 @@ -2068,10 +1932,7 @@ def get_task_statistics( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_worktime_statistics( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_worktime_statistics(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """タスク作業時間集計取得 @@ -2098,12 +1959,8 @@ def get_worktime_statistics( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def delete_supplementary_data( - self, - project_id: str, - input_data_id: str, - supplementary_data_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_supplementary_data(self, project_id: str, input_data_id: str, supplementary_data_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """補助情報削除 @@ -2126,11 +1983,8 @@ def delete_supplementary_data( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_supplementary_data_list( - self, - project_id: str, - input_data_id: str, - ) -> Tuple[Any, requests.Response]: + def get_supplementary_data_list(self, project_id: str, input_data_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """補助情報一括取得 @@ -2153,7 +2007,7 @@ def get_supplementary_data_list( return self._request_wrapper(http_method, url_path, **keyword_params) def put_supplementary_data(self, project_id: str, input_data_id: str, supplementary_data_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """補助情報作成/更新 @@ -2185,7 +2039,8 @@ def put_supplementary_data(self, project_id: str, input_data_id: str, supplement # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def batch_update_tasks(self, project_id: str, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def batch_update_tasks(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク一括更新 @@ -2211,11 +2066,7 @@ def batch_update_tasks(self, project_id: str, request_body: Optional[Any] = None } return self._request_wrapper(http_method, url_path, **keyword_params) - def delete_task( - self, - project_id: str, - task_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_task(self, project_id: str, task_id: str, **kwargs) -> Tuple[Any, requests.Response]: """タスク削除 @@ -2238,12 +2089,8 @@ def delete_task( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_histories_with_pro_id_tas_id_tas_his_id( - self, - project_id: str, - task_id: str, - task_history_id: str, - ) -> Tuple[Any, requests.Response]: + def get_histories_with_pro_id_tas_id_tas_his_id(self, project_id: str, task_id: str, task_history_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """タスク履歴取得 .. deprecated:: X @@ -2268,11 +2115,8 @@ def get_histories_with_pro_id_tas_id_tas_his_id( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_history_events_with_pro_id_tas_id( - self, - project_id: str, - task_id: str, - ) -> Tuple[Any, requests.Response]: + def get_history_events_with_pro_id_tas_id(self, project_id: str, task_id: str, + **kwargs) -> Tuple[Any, requests.Response]: """タスク履歴イベント取得 .. deprecated:: X @@ -2297,11 +2141,7 @@ def get_history_events_with_pro_id_tas_id( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task( - self, - project_id: str, - task_id: str, - ) -> Tuple[Any, requests.Response]: + def get_task(self, project_id: str, task_id: str, **kwargs) -> Tuple[Any, requests.Response]: """タスク取得 @@ -2324,11 +2164,7 @@ def get_task( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_histories( - self, - project_id: str, - task_id: str, - ) -> Tuple[Any, requests.Response]: + def get_task_histories(self, project_id: str, task_id: str, **kwargs) -> Tuple[Any, requests.Response]: """タスク履歴一括取得 @@ -2350,11 +2186,7 @@ def get_task_histories( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_validation( - self, - project_id: str, - task_id: str, - ) -> Tuple[Any, requests.Response]: + def get_task_validation(self, project_id: str, task_id: str, **kwargs) -> Tuple[Any, requests.Response]: """タスク自動検査 @@ -2377,11 +2209,8 @@ def get_task_validation( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_tasks( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_tasks(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク一括取得 @@ -2421,10 +2250,7 @@ def get_tasks( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_tasks_inputs_with_pro_id( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_tasks_inputs_with_pro_id(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """【非推奨】タスク-入力データ一括取得 .. deprecated:: X @@ -2447,8 +2273,8 @@ def get_tasks_inputs_with_pro_id( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_tasks_generation(self, project_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def initiate_tasks_generation(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク一括作成 @@ -2474,8 +2300,8 @@ def initiate_tasks_generation(self, project_id: str, } return self._request_wrapper(http_method, url_path, **keyword_params) - def operate_task(self, project_id: str, task_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def operate_task(self, project_id: str, task_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク状態変更 @@ -2502,8 +2328,8 @@ def operate_task(self, project_id: str, task_id: str, } return self._request_wrapper(http_method, url_path, **keyword_params) - def put_task(self, project_id: str, task_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_task(self, project_id: str, task_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク作成/更新 @@ -2530,7 +2356,8 @@ def put_task(self, project_id: str, task_id: str, } return self._request_wrapper(http_method, url_path, **keyword_params) - def start_task(self, project_id: str, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def start_task(self, project_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク割当 @@ -2561,11 +2388,7 @@ def start_task(self, project_id: str, request_body: Optional[Any] = None) -> Tup # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def delete_webhook( - self, - project_id: str, - webhook_id: str, - ) -> Tuple[Any, requests.Response]: + def delete_webhook(self, project_id: str, webhook_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのWebhookを削除 @@ -2587,10 +2410,7 @@ def delete_webhook( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def get_webhooks( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_webhooks(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのWebhookをすべて取得 @@ -2611,8 +2431,8 @@ def get_webhooks( keyword_params: Dict[str, Any] = {} return self._request_wrapper(http_method, url_path, **keyword_params) - def put_webhook(self, project_id: str, webhook_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def put_webhook(self, project_id: str, webhook_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのWebhookを更新 @@ -2639,8 +2459,8 @@ def put_webhook(self, project_id: str, webhook_id: str, } return self._request_wrapper(http_method, url_path, **keyword_params) - def test_webhook(self, project_id: str, webhook_id: str, - request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]: + def test_webhook(self, project_id: str, webhook_id: str, request_body: Optional[Any] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのWebhookをテスト実行 diff --git a/annofabapi/generated_api2.py b/annofabapi/generated_api2.py index 067a39ec..3ab88a44 100644 --- a/annofabapi/generated_api2.py +++ b/annofabapi/generated_api2.py @@ -31,11 +31,8 @@ def _request_wrapper(self, http_method: str, url_path: str, query_params: Option # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_annotation_specs_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_annotation_specs_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """アノテーション仕様取得 @@ -65,12 +62,8 @@ def get_annotation_specs_v2( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_project_member_v2( - self, - project_id: str, - user_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_project_member_v2(self, project_id: str, user_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトメンバー取得 @@ -96,11 +89,8 @@ def get_project_member_v2( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project_members_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_project_members_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトメンバー一括取得 @@ -131,10 +121,7 @@ def get_project_members_v2( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_project_cache_v2( - self, - project_id: str, - ) -> Tuple[Any, requests.Response]: + def get_project_cache_v2(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """キャッシュレコード @@ -160,11 +147,8 @@ def get_project_cache_v2( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_account_statistics_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_account_statistics_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """ユーザー別タスク集計取得 @@ -189,11 +173,8 @@ def get_account_statistics_v2( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_inspection_statistics_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_inspection_statistics_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """検査コメント集計取得 @@ -218,11 +199,8 @@ def get_inspection_statistics_v2( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_label_statistics_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_label_statistics_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """ラベル別アノテーション数集計取得 @@ -247,11 +225,8 @@ def get_label_statistics_v2( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_phase_statistics_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_task_phase_statistics_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """フェーズ別タスク集計取得 @@ -276,11 +251,8 @@ def get_task_phase_statistics_v2( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_statistics_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_task_statistics_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク集計取得 @@ -305,11 +277,8 @@ def get_task_statistics_v2( } return self._request_wrapper(http_method, url_path, **keyword_params) - def get_worktime_statistics_v2( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - ) -> Tuple[Any, requests.Response]: + def get_worktime_statistics_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, + **kwargs) -> Tuple[Any, requests.Response]: """タスク作業時間集計取得 diff --git a/annofabapi/models.py b/annofabapi/models.py index 4e81513b..41840345 100644 --- a/annofabapi/models.py +++ b/annofabapi/models.py @@ -1870,6 +1870,19 @@ class InspectionSummary(Enum): COMPLETE = "complete" +Instruction = Dict[str, Any] +""" + + +Kyes of Dict + +* html: str + +* last_updated_datetime: str + * `GetInstruction` の場合: 最後に作業ガイドを更新した日時。 * `PutInstruction` の場合: 最後に作業ガイドを更新した日時を指定する。まだ一度も保存した事がない場合は指定しない。 + +""" + InstructionHistory = Dict[str, Any] """ @@ -2478,8 +2491,6 @@ class PricePlan(Enum): Kyes of Dict -* project_rule: str - * number_of_inspections: int 検査回数。 * 0回:教師付け -> 受入 * 1回:教師付け -> 検査 -> 受入 * n回(n >= 2):教師付け -> 検査1 -> ... -> 検査n -> 受入 * assignee_rule_of_resubmitted_task: AssigneeRuleOfResubmittedTask @@ -2748,7 +2759,7 @@ class ProjectStatus(Enum): Resolution = Dict[str, Any] """ -画像などの解像度 + Kyes of Dict diff --git a/annofabapi/parser.py b/annofabapi/parser.py index c0c3d6bb..9fa1137d 100644 --- a/annofabapi/parser.py +++ b/annofabapi/parser.py @@ -1,6 +1,7 @@ import abc import json import os +import warnings import zipfile from pathlib import Path from typing import Any, Iterator, List, Optional @@ -34,6 +35,7 @@ def __init__(self, json_file_path: str): self.__json_file_path = json_file_path self.__task_id = p.parent.name self.__expected_input_data_name = _trim_extension(p.name).replace("__", "/") + self.__input_data_id = _trim_extension(p.name) @property def task_id(self) -> str: @@ -47,15 +49,26 @@ def json_file_path(self) -> str: """ return self.__json_file_path + @property + def input_data_id(self) -> str: + """ + JSONファイルから決まる、input_data_id. + Simple(v2)版用です。 + """ + return self.__input_data_id + @property def expected_input_data_name(self) -> str: """ JSONファイル名から決まる、おそらく正しい input_data_nameです。 + Simple(v1)用です。いずれ廃止されるので、非推奨です。 + https://annofab.com/docs/releases/deprecation-announcements.html#notice12 zipファイル内のファイル名は、input_data_nameになっています。 しかし、'/'がinput_data_nameに含まれる場合'__'に変換されて格納されています。 そのため、真に正しいinput_data_nameはファイルの中身をparseしないと見つかりません。 """ + warnings.warn("deprecated", DeprecationWarning) return self.__expected_input_data_name @abc.abstractmethod diff --git a/annofabapi/wrapper.py b/annofabapi/wrapper.py index 619dba80..1af1af15 100644 --- a/annofabapi/wrapper.py +++ b/annofabapi/wrapper.py @@ -11,7 +11,7 @@ import annofabapi.utils from annofabapi import AnnofabApi from annofabapi.exceptions import AnnofabApiException -from annofabapi.models import (AnnotationSpecs, InputData, Inspection, JobInfo, JobType, MyOrganization, +from annofabapi.models import (AnnotationSpecs, InputData, Inspection, Instruction, JobInfo, JobType, MyOrganization, OrganizationMember, Project, ProjectMember, SupplementaryData, Task) logger = logging.getLogger(__name__) @@ -95,28 +95,33 @@ def _get_all_objects(func_get_list: Callable, limit: int, **kwargs_for_func_get_ kwargs_for_func_get_list['query_params'] = copied_query_params content, _ = func_get_list(**kwargs_for_func_get_list) all_objects.extend(content["list"]) - logger.debug("%s %d / %d page", - func_get_list.__name__, content['page_no'], content['total_page_no']) + logger.debug("%s %d / %d page", func_get_list.__name__, content['page_no'], content['total_page_no']) return all_objects ######################################### # Public Method : AfAnnotationApi ######################################### - def download_annotation_archive(self, project_id: str, dest_path: str) -> str: + def download_annotation_archive(self, project_id: str, dest_path: str, v2: bool = False) -> str: """ simpleアノテーションZIPをダウンロードする。 Args: project_id: プロジェクトID dest_path: ダウンロード先のファイルパス + v2: True:v2形式(JSONファイル名がinput_data_id)をダウンロード. + False: v1形式(JSONファイル名がinput_data_name) をダウンロード. + v1形式はいずれ廃止される。v1形式が廃止されたら、引数v2のデフォルト値はTrueにする予定。 Returns: ダウンロード元のURL """ + query_params = None + if v2: + query_params = {"v2": True} - _, response = self.api.get_annotation_archive(project_id) + _, response = self.api.get_annotation_archive(project_id, query_params=query_params) url = response.headers['Location'] annofabapi.utils.download(url, dest_path) return url @@ -550,10 +555,10 @@ def put_project_members(self, project_id, project_members: List[Dict[str, Any]]) request_body=request_body)[0] updated_project_members.append(updated_project_member) - logger.debug("プロジェクトメンバの{'追加' if last_updated_datetime is None else '更新'} 完了." - " project_id=%s, user_id=%s, " - "last_updated_datetime=%s", - project_id, member['user_id'], last_updated_datetime) + logger.debug( + "プロジェクトメンバの{'追加' if last_updated_datetime is None else '更新'} 完了." + " project_id=%s, user_id=%s, " + "last_updated_datetime=%s", project_id, member['user_id'], last_updated_datetime) return updated_project_members @@ -689,23 +694,22 @@ def get_all_tasks(self, project_id: str, query_params: Optional[Dict[str, Any]] ######################################### # Public Method : AfInstructionApi ######################################### - def get_latest_instruction(self, project_id: str) -> str: + def get_latest_instruction(self, project_id: str) -> Optional[Instruction]: """ 最新の作業ガイドの取得. - ガイドが設定されていない場合は空文字を返す。 Args: project_id: プロジェクトID Returns: - 作業ガイドのHTML + 作業ガイド情報。作業ガイドが登録されいてない場合はNone。 """ histories = self.api.get_instruction_history(project_id)[0] if len(histories) == 0: - return '' + return None latest_history_id = histories[0]['history_id'] - return self.api.get_instruction(project_id, latest_history_id)[0] + return self.api.get_instruction(project_id, {'history_id': latest_history_id})[0] def upload_instruction_image(self, project_id: str, image_id: str, file_path: str, content_type: Optional[str] = None) -> str: @@ -834,10 +838,8 @@ def get_latest_job(): else: # 進行中 if job_access_count < max_job_access: - logger.debug("job_id = %s のジョブが進行中です。%d 秒間待ちます。", - job['job_id'], job_access_interval) + logger.debug("job_id = %s のジョブが進行中です。%d 秒間待ちます。", job['job_id'], job_access_interval) time.sleep(job_access_interval) else: - logger.debug("job_id = %s のジョブに %d 回アクセスしましたが、完了しませんでした。", - job['job_id'], job_access_interval) + logger.debug("job_id = %s のジョブに %d 回アクセスしましたが、完了しませんでした。", job['job_id'], job_access_interval) return False diff --git a/docs/dataclass.rst b/docs/dataclass.rst index e225d826..d8eb22f6 100644 --- a/docs/dataclass.rst +++ b/docs/dataclass.rst @@ -22,6 +22,11 @@ annofabapi.dataclass.inspection module .. automodule:: annofabapi.dataclass.inspection :members: +annofabapi.dataclass.instruction module +--------------------------------------- +.. automodule:: annofabapi.dataclass.instruction + :members: + annofabapi.dataclass.job module ------------------------------- .. automodule:: annofabapi.dataclass.job diff --git a/generate/generate.sh b/generate/generate.sh index 4857cdc3..eb750ad8 100755 --- a/generate/generate.sh +++ b/generate/generate.sh @@ -145,6 +145,11 @@ declare -a model_files=(${MODELS_DIR}/inspection.py) cat partial-header/dataclass/common.py partial-header/dataclass/inspection.py \ ${model_files[@]} > ../annofabapi/dataclass/inspection.py +# Instruction +declare -a model_files=(${MODELS_DIR}/instruction.py ${MODELS_DIR}/instruction_history.py ${MODELS_DIR}/instruction_image.py) +cat partial-header/dataclass/common.py partial-header/dataclass/instruction.py \ + ${model_files[@]} > ../annofabapi/dataclass/instruction.py + # Job declare -a model_files=(${MODELS_DIR}/job_info.py) cat partial-header/dataclass/common.py partial-header/dataclass/job.py \ diff --git a/generate/partial-header/dataclass/instruction.py b/generate/partial-header/dataclass/instruction.py new file mode 100644 index 00000000..e69de29b diff --git a/generate/swagger/swagger-api-components.yaml b/generate/swagger/swagger-api-components.yaml index dcc2cc02..3edd6011 100644 --- a/generate/swagger/swagger-api-components.yaml +++ b/generate/swagger/swagger-api-components.yaml @@ -995,8 +995,6 @@ ProjectConfiguration: type: object properties: - project_rule: - type: string number_of_inspections: description: | 検査回数。 @@ -2082,9 +2080,17 @@ AF外部のストレージから登録された場合、その外部ストレージ中のパス。 それ以外の場合は値なし original_resolution: - $ref: "#/components/schemas/Resolution" + allOf: + - $ref: "#/components/schemas/Resolution" + - description: | + 入力データの元画像サイズ。 + 入力データ登録時に画像がリサイズされた場合のみ設定される。 resized_resolution: - $ref: "#/components/schemas/Resolution" + allOf: + - $ref: "#/components/schemas/Resolution" + - description: | + 入力データのリサイズ後サイズ。 + 入力データ登録時に画像がリサイズされた場合のみ設定される。 updated_datetime: type: string format: date-time @@ -3091,8 +3097,6 @@ example: "Time" Resolution: type: object - description: | - 画像などの解像度 required: - width - height @@ -3144,6 +3148,17 @@ type: array items: $ref: "#/components/schemas/AggregationResult" + Instruction: + type: object + properties: + html: + type: string + last_updated_datetime: + type: string + format: date-time + description: | + * `GetInstruction` の場合: 最後に作業ガイドを更新した日時。 + * `PutInstruction` の場合: 最後に作業ガイドを更新した日時を指定する。まだ一度も保存した事がない場合は指定しない。 InstructionHistory: type: object properties: diff --git a/generate/swagger/swagger.v2.yaml b/generate/swagger/swagger.v2.yaml index 4735add4..5fc8f934 100644 --- a/generate/swagger/swagger.v2.yaml +++ b/generate/swagger/swagger.v2.yaml @@ -75,7 +75,7 @@ info: 検査ID | プロジェクト内で一意 WebhookID | プロジェクト内で一意 - version: 0.63.0 + version: 0.64.0 title: AnnoFab Web API x-logo: url: "https://annofab.com/images/logo_landscape.png" @@ -1554,8 +1554,6 @@ components: ProjectConfiguration: type: object properties: - project_rule: - type: string number_of_inspections: description: | 検査回数。 @@ -2641,9 +2639,17 @@ components: AF外部のストレージから登録された場合、その外部ストレージ中のパス。 それ以外の場合は値なし original_resolution: - $ref: "#/components/schemas/Resolution" + allOf: + - $ref: "#/components/schemas/Resolution" + - description: | + 入力データの元画像サイズ。 + 入力データ登録時に画像がリサイズされた場合のみ設定される。 resized_resolution: - $ref: "#/components/schemas/Resolution" + allOf: + - $ref: "#/components/schemas/Resolution" + - description: | + 入力データのリサイズ後サイズ。 + 入力データ登録時に画像がリサイズされた場合のみ設定される。 updated_datetime: type: string format: date-time @@ -3650,8 +3656,6 @@ components: example: "Time" Resolution: type: object - description: | - 画像などの解像度 required: - width - height @@ -3703,6 +3707,17 @@ components: type: array items: $ref: "#/components/schemas/AggregationResult" + Instruction: + type: object + properties: + html: + type: string + last_updated_datetime: + type: string + format: date-time + description: | + * `GetInstruction` の場合: 最後に作業ガイドを更新した日時。 + * `PutInstruction` の場合: 最後に作業ガイドを更新した日時を指定する。まだ一度も保存した事がない場合は指定しない。 InstructionHistory: type: object properties: diff --git a/generate/swagger/swagger.yaml b/generate/swagger/swagger.yaml index 5e19ca35..b458741f 100644 --- a/generate/swagger/swagger.yaml +++ b/generate/swagger/swagger.yaml @@ -75,7 +75,30 @@ info: 検査ID | プロジェクト内で一意 WebhookID | プロジェクト内で一意 - version: 0.63.0 + # データ構造 + + ## アノテーション + + AnnoFab で作成したアノテーションは、元となった入力データ(画像や動画など)に対応する形で1ファイルのJSONとなります。 + これらのJSONはZIP形式で圧縮され、一括で取得できます。 + + アノテーションの構造は、AnnoFabの改良にともなって現在2つあります。 + 各アノテーション構造の詳細は、リンク先APIのレスポンス構造を確認ください。 + + 1. Simple + * バウンディングボックスや属性など、いわゆるアノテーションにしぼった軽量な構造 + * いかなるプロジェクトでも取得できます。 + * API: [getArchiveFullWithProId](#operation/getArchiveFullWithProId) + * 推奨版です。 + 2. Full + * バウンディングボックスや属性に加え、アノテーションを作成したタスクに関する構造が含まれる重厚長大な構造 + * Businessプラン組織のプロジェクトでのみ取得できます。 + * API: [getAnnotationArchive](#operation/getAnnotationArchive) + * 非推奨版です。長期的には廃止予定なので、新規の使用は控え、Simpleへ移行してください。 + + アノテーションは、各プロジェクトのトップページでダウンロードできます。また、上記リンク先のAPIでも取得できます。 + + version: 0.64.0 title: AnnoFab Web API x-logo: url: "https://annofab.com/images/logo_landscape.png" @@ -3499,6 +3522,16 @@ paths: required: true schema: $ref: "#/components/schemas/ProjectId" + - name: v2 + in: query + description: | + このクエリパラメータのキーだけを指定(`?v2`)、または値 `true` も指定(`?v2=true`)すると、アノテーションJSONのファイル名は `{入力データID}.json` になります。 + この v2 形式は、入力データ名がファイル名の長さ上限を上回ってもよいように再設計されたものです。 + 以前の v1 形式(アノテーションJSONのファイル名は `{入力データ名}.json` )はいずれ廃止され、クエリパラメータ `v2` があってもなくても v2 形式に置き換わる予定です。 + required: false + schema: + type: string + example: "true" responses: 200: description: | @@ -4271,12 +4304,9 @@ paths: 200: description: 正常 content: - text/html: + application/json: schema: - type: string - example: | -
example + $ref: "#/components/schemas/Instruction" 401: $ref: "#/components/responses/ErrorUnauthorizedApi" 503: @@ -4301,12 +4331,9 @@ paths: requestBody: required: true content: - text/html: + application/json: schema: - type: string - example: | -
example + $ref: "#/components/schemas/Instruction" responses: 200: description: 作業ガイドの更新が成功した。 @@ -5471,8 +5498,6 @@ components: ProjectConfiguration: type: object properties: - project_rule: - type: string number_of_inspections: description: | 検査回数。 @@ -6558,9 +6583,17 @@ components: AF外部のストレージから登録された場合、その外部ストレージ中のパス。 それ以外の場合は値なし original_resolution: - $ref: "#/components/schemas/Resolution" + allOf: + - $ref: "#/components/schemas/Resolution" + - description: | + 入力データの元画像サイズ。 + 入力データ登録時に画像がリサイズされた場合のみ設定される。 resized_resolution: - $ref: "#/components/schemas/Resolution" + allOf: + - $ref: "#/components/schemas/Resolution" + - description: | + 入力データのリサイズ後サイズ。 + 入力データ登録時に画像がリサイズされた場合のみ設定される。 updated_datetime: type: string format: date-time @@ -7567,8 +7600,6 @@ components: example: "Time" Resolution: type: object - description: | - 画像などの解像度 required: - width - height @@ -7620,6 +7651,17 @@ components: type: array items: $ref: "#/components/schemas/AggregationResult" + Instruction: + type: object + properties: + html: + type: string + last_updated_datetime: + type: string + format: date-time + description: | + * `GetInstruction` の場合: 最後に作業ガイドを更新した日時。 + * `PutInstruction` の場合: 最後に作業ガイドを更新した日時を指定する。まだ一度も保存した事がない場合は指定しない。 InstructionHistory: type: object properties: diff --git a/generate/template/api.mustache b/generate/template/api.mustache index 958559e9..d164988a 100644 --- a/generate/template/api.mustache +++ b/generate/template/api.mustache @@ -5,7 +5,7 @@ ######################################### {{#operation}} - def {{operationId}}(self, {{#sortParamsByRequiredFlag}}{{#pathParams}}{{paramName}}: {{dataType}}, {{/pathParams}}{{/sortParamsByRequiredFlag}}{{#hasQueryParams}}query_params: Optional[Dict[str, Any]] = None, {{/hasQueryParams}}{{#hasHeaderParams}}header_params: Optional[Dict[str, Any]] = None, {{/hasHeaderParams}}{{#hasBodyParam}}request_body: Optional[Any] = None{{/hasBodyParam}}) -> Tuple[Any, requests.Response]: + def {{operationId}}(self, {{#sortParamsByRequiredFlag}}{{#pathParams}}{{paramName}}: {{dataType}}, {{/pathParams}}{{/sortParamsByRequiredFlag}}{{#hasQueryParams}}query_params: Optional[Dict[str, Any]] = None, {{/hasQueryParams}}{{#hasHeaderParams}}header_params: Optional[Dict[str, Any]] = None, {{/hasHeaderParams}}{{#hasBodyParam}}request_body: Optional[Any] = None, {{/hasBodyParam}}**kwargs) -> Tuple[Any, requests.Response]: """{{#summary}}{{{.}}}{{/summary}}{{^summary}}{{operationId}}{{/summary}} {{#isDeprecated}} diff --git a/setup.cfg b/setup.cfg index e70ebc75..51d3d779 100644 --- a/setup.cfg +++ b/setup.cfg @@ -59,3 +59,5 @@ disable = # ===== Custom ===== protected-access, + +ignored-argument-names=arg|args|kwargs \ No newline at end of file diff --git a/tests/data/dataclass/instruction-history.json b/tests/data/dataclass/instruction-history.json new file mode 100644 index 00000000..f270cc68 --- /dev/null +++ b/tests/data/dataclass/instruction-history.json @@ -0,0 +1,5 @@ +{ + "history_id": "b5cee712-453b-4a3d-b050-e0c9fccfc326", + "account_id": "12345678-abcd-1234-abcd-1234abcd5678", + "updated_datetime": "2019-09-26T14:45:22.604+09:00" +} diff --git a/tests/data/dataclass/instruction-image.json b/tests/data/dataclass/instruction-image.json new file mode 100644 index 00000000..b9cd3758 --- /dev/null +++ b/tests/data/dataclass/instruction-image.json @@ -0,0 +1,6 @@ +{ + "image_id": "1db7dca0-267b-4a8b-a4fc-468aa47b9e0c", + "path": "s3://annotationfactory.production.annotation/projects/58a2a621-7d4b-41e7-927b-cdc570c1114a/instruction-images/1db7dca0-267b-4a8b-a4fc-468aa47b9e0c", + "url": "https://annofab.com/projects/58a2a621-7d4b-41e7-927b-cdc570c1114a/instruction-images/1db7dca0-267b-4a8b-a4fc-468aa47b9e0c?cache=1569476725219", + "etag": "\"3012bf714d50cb77b72b1e7fc6a7b0a7\"" +} diff --git a/tests/data/dataclass/instruction.json b/tests/data/dataclass/instruction.json new file mode 100644 index 00000000..e109fe36 --- /dev/null +++ b/tests/data/dataclass/instruction.json @@ -0,0 +1,4 @@ +{ + "html": "