From 7c4a2628941f7c51fa4bd7de249515a6edef4006 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 13:57:24 +0900 Subject: [PATCH 01/13] update docekr --- .devcontainer/Dockerfile | 50 +-- .devcontainer/devcontainer.json | 19 +- .devcontainer/entrypoint.sh | 9 - Makefile | 25 +- poetry.lock | 590 +++++++++++++------------------- pyproject.toml | 80 ++++- 6 files changed, 343 insertions(+), 430 deletions(-) delete mode 100644 .devcontainer/entrypoint.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index ca199873..a92135e1 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 as devcontainer +FROM ubuntu:22.04 # Install prerequisites RUN set -x \ @@ -23,23 +23,18 @@ ENV LANG ja_JP.UTF-8 ENV LC_ALL ja_JP.UTF-8 ENV LC_CTYPE ja_JP.UTF-8 -# ミラーは遅いのが混じっているので好きなリポジトリに変更すべき RUN set -x \ - && sed -i.bak -r 's!(deb|deb-src) \S+!\1 mirror://mirrors.ubuntu.com/mirrors.txt!' /etc/apt/sources.list + && sed -i.bak -r 's!(deb|deb-src) \S+!\1 http://jp.archive.ubuntu.com/ubuntu/!' /etc/apt/sources.list # Install Ubuntu packages RUN set -x \ - # Add repositories - # for docker - && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \ - && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ + # Python3.11をインストールするために、deadsnakes PPAを追加 + && add-apt-repository ppa:deadsnakes/ppa \ # Install packages && apt-get update \ && apt-get install -y --no-install-recommends \ - # docker - docker-ce-cli \ # python - python3.10-dev \ + python3.11-dev \ python3-pip \ # common tools bash-completion \ @@ -61,27 +56,9 @@ RUN set -x \ && apt-get -y clean \ && rm -rf /var/lib/apt/lists/* -# docker compose -# 1系はさすがにバージョン古すぎ、docker compose自体オワコンなので推奨しない -# 使用しない場合は、docker / docker-compose hack in devcontainerのところも変更が必要 -# 2系はbash completionスクリプトが存在しないので修正が必要 -ARG COMPOSE_VERSION=1.29.2 -RUN set -x \ - && curl -fsSL "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \ - && chmod +x /usr/local/bin/docker-compose \ - && curl -fsSL -o /etc/bash_completion.d/docker-compose "https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose" - -# docker / docker-compose hack in devcontainer -RUN set -x \ - && mkdir -p /usr/local/devcontainer-tool/bin \ - && curl -fsSL -o /usr/local/devcontainer-tool/bin/docker https://github.com/thamaji/devcontainer-docker/releases/download/v1.0.3/docker \ - && chmod +x /usr/local/devcontainer-tool/bin/docker \ - && curl -fsSL -o /usr/local/devcontainer-tool/bin/docker-compose https://github.com/thamaji/devcontainer-compose/releases/download/v1.0.3/docker-compose \ - && chmod +x /usr/local/devcontainer-tool/bin/docker-compose -ENV PATH=/usr/local/devcontainer-tool/bin:${PATH} # Python / pip -RUN ln -s $(which python3.10) /usr/bin/python +RUN ln -s $(which python3.11) /usr/bin/python ENV PYTHONDONTWRITEBYTECODE=1 \ PIP_DEFAULT_TIMEOUT=100 \ PIP_NO_CACHE_DIR=on \ @@ -98,21 +75,8 @@ RUN set -x \ # Add user / Grant sudo privileges RUN useradd -m -s /bin/bash -u 5000 -U vscode \ - && echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/ALL \ - && groupadd --gid 999 docker \ - && usermod -aG docker vscode - -ADD entrypoint.sh /entrypoint.sh + && echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/ALL USER vscode RUN poetry config virtualenvs.in-project true - -# vscode extensions cache -# https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild -RUN set -x \ - && mkdir -p /home/vscode/.vscode-server/extensions /home/vscode/.vscode-server-insiders \ - && ln -s /home/vscode/.vscode-server/extensions /home/vscode/.vscode-server-insiders/extensions - - -ENTRYPOINT [ "bash", "/entrypoint.sh" ] \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 01b1d82b..815f1e0d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,18 +6,14 @@ "dockerfile": "Dockerfile", "context": ".", "args": {}, - "target": "devcontainer" }, "containerUser": "vscode", "remoteUser": "vscode", "updateRemoteUserUID": true, - "overrideCommand": false, - // 事前にマウントするディレクトリを作成する + // マウント対象のディレクトリを事前に作成する "initializeCommand": "mkdir -p ${localWorkspaceFolder}/.devcontainer/venv", "mounts": [ - "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind", - "source=${localWorkspaceFolder}/.devcontainer/.extensions,target=/home/vscode/.vscode-server/extensions,type=bind", - //ホスト側のvenvとコンテナ側のvenvを分離して、ホスト側でもpoetryコマンドを実行できるようにする + // ホスト側のvenvとコンテナ側のvenvを分類して、ホスト側でpoetryコマンドを利用できるようにする "source=${localWorkspaceFolder}/.devcontainer/venv,target=${containerWorkspaceFolder}/.venv,type=bind" ], "forwardPorts": [], @@ -31,17 +27,20 @@ "CONTAINER_WORKSPACE": "${containerWorkspaceFolder}", "LOCAL_WORKSPACE": "${localWorkspaceFolder}" }, - "postStartCommand": "poetry install --all-extras", - "customizations":{ - "vscode":{ + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces,type=bind,consistency=cached", + "workspaceFolder": "/workspaces", + "postStartCommand": "poetry install", + "customizations": { + "vscode": { "extensions": [ "mosapride.zenkaku", "ms-python.python", "ms-python.vscode-pylance", + "charliermarsh.ruff", "streetsidesoftware.code-spell-checker", "bungcip.better-toml", "njpwerner.autodocstring", - "dawhite.mustache", + "mechatroner.rainbow-csv", "lextudio.restructuredtext" ] } diff --git a/.devcontainer/entrypoint.sh b/.devcontainer/entrypoint.sh deleted file mode 100644 index 06db0468..00000000 --- a/.devcontainer/entrypoint.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -set -eu - -# docker.sock から gid を取得して、docker グループの gid を変更 -docker_group_id=$(ls -n /var/run/docker.sock | cut -d ' ' -f 4) -sudo groupmod --gid ${docker_group_id} docker - -# 無限待ち(vscode デフォルトの entrypoint と同じ方法で) -while sleep 1000; do :; done \ No newline at end of file diff --git a/Makefile b/Makefile index 22f805bc..f4b4c2e9 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,29 @@ +ifndef SOURCE_FILES + export SOURCE_FILES:=annofabapi +endif +ifndef TEST_FILES + export TEST_FILES:=tests +endif + .PHONY: docs lint test format test publish format: - poetry run autoflake --in-place --remove-all-unused-imports --ignore-init-module-imports --recursive annofabapi tests - poetry run isort annofabapi tests - poetry run black annofabapi tests + poetry run ruff format ${SOURCE_FILES} ${TEST_FILES} + poetry run ruff check ${SOURCE_FILES} ${TEST_FILES} --fix-only --exit-zero lint: - poetry run mypy annofabapi tests - poetry run flake8 annofabapi tests - poetry run pylint --jobs=0 annofabapi + poetry run ruff ${SOURCE_FILES} + # テストコードはチェックを緩和する + # pygrep-hooks, flake8-datetimez, line-too-long, flake8-annotations, unused-noqa + poetry run ruff check ${TEST_FILES} --ignore PGH,DTZ,E501,ANN,RUF100 + poetry run mypy ${SOURCE_FILES} ${TEST_FILES} + # テストコードはチェックを緩和するためpylintは実行しない + poetry run pylint --jobs=0 ${SOURCE_FILES} + test: # 並列で実行するとエラーになるので、シーケンシャルで実行する - poetry run pytest --cov=annofabapi --cov-report=html tests + poetry run pytest --cov=${SOURCE_FILES} --cov-report=html ${TEST_FILES} publish: poetry publish --build diff --git a/poetry.lock b/poetry.lock index 73585ef2..74e8068e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,29 +27,26 @@ files = [ [[package]] name = "appnope" -version = "0.1.3" +version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, - {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, ] [[package]] name = "astroid" -version = "3.0.2" +version = "3.1.0" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.8.0" files = [ - {file = "astroid-3.0.2-py3-none-any.whl", hash = "sha256:d6e62862355f60e716164082d6b4b041d38e2a8cf1c7cd953ded5108bac8ff5c"}, - {file = "astroid-3.0.2.tar.gz", hash = "sha256:4a61cf0a59097c7bb52689b0fd63717cd2a8a14dc9f1eee97b82d814881c8c91"}, + {file = "astroid-3.1.0-py3-none-any.whl", hash = "sha256:951798f922990137ac090c53af473db7ab4e70c770e6d7fae0cec59f74411819"}, + {file = "astroid-3.1.0.tar.gz", hash = "sha256:ac248253bfa4bd924a0de213707e7ebeeb3138abeb48d798784ead1e56d419d4"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} - [[package]] name = "asttokens" version = "2.4.1" @@ -68,21 +65,6 @@ six = ">=1.12.0" astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] -[[package]] -name = "autoflake" -version = "2.2.1" -description = "Removes unused imports and unused variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "autoflake-2.2.1-py3-none-any.whl", hash = "sha256:265cde0a43c1f44ecfb4f30d95b0437796759d07be7706a2f70e4719234c0f79"}, - {file = "autoflake-2.2.1.tar.gz", hash = "sha256:62b7b6449a692c3c9b0c916919bbc21648da7281e8506bcf8d3f8280e431ebc1"}, -] - -[package.dependencies] -pyflakes = ">=3.0.0" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} - [[package]] name = "babel" version = "2.14.0" @@ -124,77 +106,34 @@ files = [ [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] -[[package]] -name = "black" -version = "23.12.1" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.8" -files = [ - {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, - {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, - {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, - {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, - {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, - {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, - {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, - {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, - {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, - {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, - {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, - {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, - {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, - {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, - {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, - {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, - {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, - {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, - {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, - {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, - {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, - {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -296,20 +235,6 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - [[package]] name = "colorama" version = "0.4.6" @@ -323,63 +248,63 @@ files = [ [[package]] name = "coverage" -version = "7.4.0" +version = "7.4.3" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36b0ea8ab20d6a7564e89cb6135920bc9188fb5f1f7152e94e8300b7b189441a"}, - {file = "coverage-7.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0676cd0ba581e514b7f726495ea75aba3eb20899d824636c6f59b0ed2f88c471"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ca5c71a5a1765a0f8f88022c52b6b8be740e512980362f7fdbb03725a0d6b9"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7c97726520f784239f6c62506bc70e48d01ae71e9da128259d61ca5e9788516"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:815ac2d0f3398a14286dc2cea223a6f338109f9ecf39a71160cd1628786bc6f5"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:80b5ee39b7f0131ebec7968baa9b2309eddb35b8403d1869e08f024efd883566"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5b2ccb7548a0b65974860a78c9ffe1173cfb5877460e5a229238d985565574ae"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:995ea5c48c4ebfd898eacb098164b3cc826ba273b3049e4a889658548e321b43"}, - {file = "coverage-7.4.0-cp310-cp310-win32.whl", hash = "sha256:79287fd95585ed36e83182794a57a46aeae0b64ca53929d1176db56aacc83451"}, - {file = "coverage-7.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b14b4f8760006bfdb6e08667af7bc2d8d9bfdb648351915315ea17645347137"}, - {file = "coverage-7.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04387a4a6ecb330c1878907ce0dc04078ea72a869263e53c72a1ba5bbdf380ca"}, - {file = "coverage-7.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea81d8f9691bb53f4fb4db603203029643caffc82bf998ab5b59ca05560f4c06"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74775198b702868ec2d058cb92720a3c5a9177296f75bd97317c787daf711505"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f03940f9973bfaee8cfba70ac991825611b9aac047e5c80d499a44079ec0bc"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485e9f897cf4856a65a57c7f6ea3dc0d4e6c076c87311d4bc003f82cfe199d25"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6ae8c9d301207e6856865867d762a4b6fd379c714fcc0607a84b92ee63feff70"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bf477c355274a72435ceb140dc42de0dc1e1e0bf6e97195be30487d8eaaf1a09"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:83c2dda2666fe32332f8e87481eed056c8b4d163fe18ecc690b02802d36a4d26"}, - {file = "coverage-7.4.0-cp311-cp311-win32.whl", hash = "sha256:697d1317e5290a313ef0d369650cfee1a114abb6021fa239ca12b4849ebbd614"}, - {file = "coverage-7.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:26776ff6c711d9d835557ee453082025d871e30b3fd6c27fcef14733f67f0590"}, - {file = "coverage-7.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:13eaf476ec3e883fe3e5fe3707caeb88268a06284484a3daf8250259ef1ba143"}, - {file = "coverage-7.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846f52f46e212affb5bcf131c952fb4075b55aae6b61adc9856222df89cbe3e2"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f66da8695719ccf90e794ed567a1549bb2644a706b41e9f6eae6816b398c4a"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:164fdcc3246c69a6526a59b744b62e303039a81e42cfbbdc171c91a8cc2f9446"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:316543f71025a6565677d84bc4df2114e9b6a615aa39fb165d697dba06a54af9"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bb1de682da0b824411e00a0d4da5a784ec6496b6850fdf8c865c1d68c0e318dd"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0e8d06778e8fbffccfe96331a3946237f87b1e1d359d7fbe8b06b96c95a5407a"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a56de34db7b7ff77056a37aedded01b2b98b508227d2d0979d373a9b5d353daa"}, - {file = "coverage-7.4.0-cp312-cp312-win32.whl", hash = "sha256:51456e6fa099a8d9d91497202d9563a320513fcf59f33991b0661a4a6f2ad450"}, - {file = "coverage-7.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd3c1e4cb2ff0083758f09be0f77402e1bdf704adb7f89108007300a6da587d0"}, - {file = "coverage-7.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d1bf53c4c8de58d22e0e956a79a5b37f754ed1ffdbf1a260d9dcfa2d8a325e"}, - {file = "coverage-7.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:109f5985182b6b81fe33323ab4707011875198c41964f014579cf82cebf2bb85"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc9d4bc55de8003663ec94c2f215d12d42ceea128da8f0f4036235a119c88ac"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc6d65b21c219ec2072c1293c505cf36e4e913a3f936d80028993dd73c7906b1"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a10a4920def78bbfff4eff8a05c51be03e42f1c3735be42d851f199144897ba"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b8e99f06160602bc64da35158bb76c73522a4010f0649be44a4e167ff8555952"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7d360587e64d006402b7116623cebf9d48893329ef035278969fa3bbf75b697e"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29f3abe810930311c0b5d1a7140f6395369c3db1be68345638c33eec07535105"}, - {file = "coverage-7.4.0-cp38-cp38-win32.whl", hash = "sha256:5040148f4ec43644702e7b16ca864c5314ccb8ee0751ef617d49aa0e2d6bf4f2"}, - {file = "coverage-7.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9864463c1c2f9cb3b5db2cf1ff475eed2f0b4285c2aaf4d357b69959941aa555"}, - {file = "coverage-7.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:936d38794044b26c99d3dd004d8af0035ac535b92090f7f2bb5aa9c8e2f5cd42"}, - {file = "coverage-7.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:799c8f873794a08cdf216aa5d0531c6a3747793b70c53f70e98259720a6fe2d7"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7defbb9737274023e2d7af02cac77043c86ce88a907c58f42b580a97d5bcca9"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1526d265743fb49363974b7aa8d5899ff64ee07df47dd8d3e37dcc0818f09ed"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf635a52fc1ea401baf88843ae8708591aa4adff875e5c23220de43b1ccf575c"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:756ded44f47f330666843b5781be126ab57bb57c22adbb07d83f6b519783b870"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0eb3c2f32dabe3a4aaf6441dde94f35687224dfd7eb2a7f47f3fd9428e421058"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bfd5db349d15c08311702611f3dccbef4b4e2ec148fcc636cf8739519b4a5c0f"}, - {file = "coverage-7.4.0-cp39-cp39-win32.whl", hash = "sha256:53d7d9158ee03956e0eadac38dfa1ec8068431ef8058fe6447043db1fb40d932"}, - {file = "coverage-7.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfd2a8b6b0d8e66e944d47cdec2f47c48fef2ba2f2dff5a9a75757f64172857e"}, - {file = "coverage-7.4.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:c530833afc4707fe48524a44844493f36d8727f04dcce91fb978c414a8556cc6"}, - {file = "coverage-7.4.0.tar.gz", hash = "sha256:707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e"}, + {file = "coverage-7.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8580b827d4746d47294c0e0b92854c85a92c2227927433998f0d3320ae8a71b6"}, + {file = "coverage-7.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718187eeb9849fc6cc23e0d9b092bc2348821c5e1a901c9f8975df0bc785bfd4"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:767b35c3a246bcb55b8044fd3a43b8cd553dd1f9f2c1eeb87a302b1f8daa0524"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae7f19afe0cce50039e2c782bff379c7e347cba335429678450b8fe81c4ef96d"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba3a8aaed13770e970b3df46980cb068d1c24af1a1968b7818b69af8c4347efb"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee866acc0861caebb4f2ab79f0b94dbfbdbfadc19f82e6e9c93930f74e11d7a0"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:506edb1dd49e13a2d4cac6a5173317b82a23c9d6e8df63efb4f0380de0fbccbc"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd6545d97c98a192c5ac995d21c894b581f1fd14cf389be90724d21808b657e2"}, + {file = "coverage-7.4.3-cp310-cp310-win32.whl", hash = "sha256:f6a09b360d67e589236a44f0c39218a8efba2593b6abdccc300a8862cffc2f94"}, + {file = "coverage-7.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:18d90523ce7553dd0b7e23cbb28865db23cddfd683a38fb224115f7826de78d0"}, + {file = "coverage-7.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbbe5e739d45a52f3200a771c6d2c7acf89eb2524890a4a3aa1a7fa0695d2a47"}, + {file = "coverage-7.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:489763b2d037b164846ebac0cbd368b8a4ca56385c4090807ff9fad817de4113"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451f433ad901b3bb00184d83fd83d135fb682d780b38af7944c9faeecb1e0bfe"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcc66e222cf4c719fe7722a403888b1f5e1682d1679bd780e2b26c18bb648cdc"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ec74cfef2d985e145baae90d9b1b32f85e1741b04cd967aaf9cfa84c1334f3"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:abbbd8093c5229c72d4c2926afaee0e6e3140de69d5dcd918b2921f2f0c8baba"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:35eb581efdacf7b7422af677b92170da4ef34500467381e805944a3201df2079"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8249b1c7334be8f8c3abcaaa996e1e4927b0e5a23b65f5bf6cfe3180d8ca7840"}, + {file = "coverage-7.4.3-cp311-cp311-win32.whl", hash = "sha256:cf30900aa1ba595312ae41978b95e256e419d8a823af79ce670835409fc02ad3"}, + {file = "coverage-7.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:18c7320695c949de11a351742ee001849912fd57e62a706d83dfc1581897fa2e"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, + {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, + {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, + {file = "coverage-7.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28ca2098939eabab044ad68850aac8f8db6bf0b29bc7f2887d05889b17346454"}, + {file = "coverage-7.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:280459f0a03cecbe8800786cdc23067a8fc64c0bd51dc614008d9c36e1659d7e"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0cdedd3500e0511eac1517bf560149764b7d8e65cb800d8bf1c63ebf39edd2"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a9babb9466fe1da12417a4aed923e90124a534736de6201794a3aea9d98484e"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec9de46a33cf2dd87a5254af095a409ea3bf952d85ad339751e7de6d962cde6"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:16bae383a9cc5abab9bb05c10a3e5a52e0a788325dc9ba8499e821885928968c"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2c854ce44e1ee31bda4e318af1dbcfc929026d12c5ed030095ad98197eeeaed0"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ce8c50520f57ec57aa21a63ea4f325c7b657386b3f02ccaedeccf9ebe27686e1"}, + {file = "coverage-7.4.3-cp38-cp38-win32.whl", hash = "sha256:708a3369dcf055c00ddeeaa2b20f0dd1ce664eeabde6623e516c5228b753654f"}, + {file = "coverage-7.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:1bf25fbca0c8d121a3e92a2a0555c7e5bc981aee5c3fdaf4bb7809f410f696b9"}, + {file = "coverage-7.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b253094dbe1b431d3a4ac2f053b6d7ede2664ac559705a704f621742e034f1f"}, + {file = "coverage-7.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77fbfc5720cceac9c200054b9fab50cb2a7d79660609200ab83f5db96162d20c"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6679060424faa9c11808598504c3ab472de4531c571ab2befa32f4971835788e"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af154d617c875b52651dd8dd17a31270c495082f3d55f6128e7629658d63765"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8640f1fde5e1b8e3439fe482cdc2b0bb6c329f4bb161927c28d2e8879c6029ee"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:69b9f6f66c0af29642e73a520b6fed25ff9fd69a25975ebe6acb297234eda501"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0842571634f39016a6c03e9d4aba502be652a6e4455fadb73cd3a3a49173e38f"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ed23b08e8ab524551f52953a8a05d61c3a760781762aac49f8de6eede8c45"}, + {file = "coverage-7.4.3-cp39-cp39-win32.whl", hash = "sha256:c0524de3ff096e15fcbfe8f056fdb4ea0bf497d584454f344d59fce069d3e6e9"}, + {file = "coverage-7.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:0209a6369ccce576b43bb227dc8322d8ef9e323d089c6f3f26a597b09cb4d2aa"}, + {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, + {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, ] [package.dependencies] @@ -390,13 +315,13 @@ toml = ["tomli"] [[package]] name = "dataclasses-json" -version = "0.6.3" +version = "0.6.4" description = "Easily serialize dataclasses to and from JSON." optional = false python-versions = ">=3.7,<4.0" files = [ - {file = "dataclasses_json-0.6.3-py3-none-any.whl", hash = "sha256:4aeb343357997396f6bca1acae64e486c3a723d8f5c76301888abeccf0c45176"}, - {file = "dataclasses_json-0.6.3.tar.gz", hash = "sha256:35cb40aae824736fdf959801356641836365219cfe14caeb115c39136f775d2a"}, + {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"}, + {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"}, ] [package.dependencies] @@ -416,27 +341,28 @@ files = [ [[package]] name = "dill" -version = "0.3.7" +version = "0.3.8" description = "serialize all of Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "docutils" -version = "0.19" +version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.7" files = [ - {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, - {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, ] [[package]] @@ -481,22 +407,6 @@ files = [ [package.extras] tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] -[[package]] -name = "flake8" -version = "7.0.0" -description = "the modular source code checker: pep8 pyflakes and co" -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, - {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, -] - -[package.dependencies] -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.2.0,<3.3.0" - [[package]] name = "idna" version = "3.6" @@ -640,91 +550,90 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] name = "marshmallow" -version = "3.20.2" +version = "3.21.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"}, - {file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"}, + {file = "marshmallow-3.21.1-py3-none-any.whl", hash = "sha256:f085493f79efb0644f270a9bf2892843142d80d7174bbbd2f3713f2a589dc633"}, + {file = "marshmallow-3.21.1.tar.gz", hash = "sha256:4e65e9e0d80fc9e609574b9983cf32579f305c718afb30d7233ab818571768c3"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] -dev = ["pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"] -docs = ["alabaster (==0.7.15)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] -lint = ["pre-commit (>=2.4,<4.0)"] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-version-warning (==1.1.2)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -801,7 +710,6 @@ files = [ [package.dependencies] mypy-extensions = ">=1.0.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = ">=4.1.0" [package.extras] @@ -860,47 +768,47 @@ files = [ [[package]] name = "numpy" -version = "1.26.3" +version = "1.26.4" description = "Fundamental package for array computing in Python" optional = true python-versions = ">=3.9" files = [ - {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, - {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, - {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, - {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, - {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, - {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, - {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, - {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, - {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, - {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, - {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] @@ -929,17 +837,6 @@ files = [ qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] testing = ["docopt", "pytest (<6.0.0)"] -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - [[package]] name = "pexpect" version = "4.9.0" @@ -1052,28 +949,28 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.1.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, - {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -1119,17 +1016,6 @@ files = [ [package.extras] tests = ["pytest"] -[[package]] -name = "pycodestyle" -version = "2.11.1" -description = "Python style guide checker" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, - {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, -] - [[package]] name = "pydata-sphinx-theme" version = "0.14.4" @@ -1157,17 +1043,6 @@ dev = ["nox", "pre-commit", "pydata-sphinx-theme[doc,test]", "pyyaml"] doc = ["ablog (>=0.11.0rc2)", "colorama", "ipykernel", "ipyleaflet", "jupyter_sphinx", "jupyterlite-sphinx", "linkify-it-py", "matplotlib", "myst-parser", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-autoapi (>=3.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube (<1.4)", "sphinxext-rediraffe", "xarray"] test = ["pytest", "pytest-cov", "pytest-regressions"] -[[package]] -name = "pyflakes" -version = "3.2.0" -description = "passive checker of Python programs" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, - {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, -] - [[package]] name = "pygments" version = "2.17.2" @@ -1185,27 +1060,25 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" -version = "3.0.3" +version = "3.1.0" description = "python code static checker" optional = false python-versions = ">=3.8.0" files = [ - {file = "pylint-3.0.3-py3-none-any.whl", hash = "sha256:7a1585285aefc5165db81083c3e06363a27448f6b467b3b0f30dbd0ac1f73810"}, - {file = "pylint-3.0.3.tar.gz", hash = "sha256:58c2398b0301e049609a8429789ec6edf3aabe9b6c5fec916acd18639c16de8b"}, + {file = "pylint-3.1.0-py3-none-any.whl", hash = "sha256:507a5b60953874766d8a366e8e8c7af63e058b26345cfcb5f91f89d987fd6b74"}, + {file = "pylint-3.1.0.tar.gz", hash = "sha256:6a69beb4a6f63debebaab0a3477ecd0f559aa726af4954fc948c51f7a2549e23"}, ] [package.dependencies] -astroid = ">=3.0.1,<=3.1.0-dev0" +astroid = ">=3.1.0,<=3.2.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ - {version = ">=0.2", markers = "python_version < \"3.11\""}, {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} tomlkit = ">=0.10.1" [package.extras] @@ -1274,13 +1147,13 @@ testing = ["filelock"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -1288,13 +1161,13 @@ six = ">=1.5" [[package]] name = "pytz" -version = "2023.3.post1" +version = "2024.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] @@ -1318,6 +1191,32 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "ruff" +version = "0.3.0" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.3.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7deb528029bacf845bdbb3dbb2927d8ef9b4356a5e731b10eef171e3f0a85944"}, + {file = "ruff-0.3.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e1e0d4381ca88fb2b73ea0766008e703f33f460295de658f5467f6f229658c19"}, + {file = "ruff-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f7dbba46e2827dfcb0f0cc55fba8e96ba7c8700e0a866eb8cef7d1d66c25dcb"}, + {file = "ruff-0.3.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23dbb808e2f1d68eeadd5f655485e235c102ac6f12ad31505804edced2a5ae77"}, + {file = "ruff-0.3.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ef655c51f41d5fa879f98e40c90072b567c666a7114fa2d9fe004dffba00932"}, + {file = "ruff-0.3.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d0d3d7ef3d4f06433d592e5f7d813314a34601e6c5be8481cccb7fa760aa243e"}, + {file = "ruff-0.3.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b08b356d06a792e49a12074b62222f9d4ea2a11dca9da9f68163b28c71bf1dd4"}, + {file = "ruff-0.3.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9343690f95710f8cf251bee1013bf43030072b9f8d012fbed6ad702ef70d360a"}, + {file = "ruff-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1f3ed501a42f60f4dedb7805fa8d4534e78b4e196f536bac926f805f0743d49"}, + {file = "ruff-0.3.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cc30a9053ff2f1ffb505a585797c23434d5f6c838bacfe206c0e6cf38c921a1e"}, + {file = "ruff-0.3.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5da894a29ec018a8293d3d17c797e73b374773943e8369cfc50495573d396933"}, + {file = "ruff-0.3.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:755c22536d7f1889be25f2baf6fedd019d0c51d079e8417d4441159f3bcd30c2"}, + {file = "ruff-0.3.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:dd73fe7f4c28d317855da6a7bc4aa29a1500320818dd8f27df95f70a01b8171f"}, + {file = "ruff-0.3.0-py3-none-win32.whl", hash = "sha256:19eacceb4c9406f6c41af806418a26fdb23120dfe53583df76d1401c92b7c14b"}, + {file = "ruff-0.3.0-py3-none-win_amd64.whl", hash = "sha256:128265876c1d703e5f5e5a4543bd8be47c73a9ba223fd3989d4aa87dd06f312f"}, + {file = "ruff-0.3.0-py3-none-win_arm64.whl", hash = "sha256:e3a4a6d46aef0a84b74fcd201a4401ea9a6cd85614f6a9435f2d33dd8cefbf83"}, + {file = "ruff-0.3.0.tar.gz", hash = "sha256:0886184ba2618d815067cf43e005388967b67ab9c80df52b32ec1152ab49f53a"}, +] + [[package]] name = "six" version = "1.16.0" @@ -1353,20 +1252,20 @@ files = [ [[package]] name = "sphinx" -version = "6.2.1" +version = "7.1.2" description = "Python documentation generator" optional = false python-versions = ">=3.8" files = [ - {file = "Sphinx-6.2.1.tar.gz", hash = "sha256:6d56a34697bb749ffa0152feafc4b19836c755d90a7c59b72bc7dfd371b9cc6b"}, - {file = "sphinx-6.2.1-py3-none-any.whl", hash = "sha256:97787ff1fa3256a3eef9eda523a63dbf299f7b47e053cfcf684a1c2a8380c912"}, + {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, + {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, ] [package.dependencies] alabaster = ">=0.7,<0.8" babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.18.1,<0.20" +docutils = ">=0.18.1,<0.21" imagesize = ">=1.3" importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" @@ -1507,13 +1406,13 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.3" +version = "0.12.4" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, - {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, + {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, + {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, ] [[package]] @@ -1555,13 +1454,13 @@ files = [ [[package]] name = "types-requests" -version = "2.31.0.20240106" +version = "2.31.0.20240218" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240106.tar.gz", hash = "sha256:0e1c731c17f33618ec58e022b614a1a2ecc25f7dc86800b36ef341380402c612"}, - {file = "types_requests-2.31.0.20240106-py3-none-any.whl", hash = "sha256:da997b3b6a72cc08d09f4dba9802fdbabc89104b35fe24ee588e674037689354"}, + {file = "types-requests-2.31.0.20240218.tar.gz", hash = "sha256:f1721dba8385958f504a5386240b92de4734e047a08a40751c1654d1ac3349c5"}, + {file = "types_requests-2.31.0.20240218-py3-none-any.whl", hash = "sha256:a82807ec6ddce8f00fe0e949da6d6bc1fbf1715420218a9640d695f70a9e5a9b"}, ] [package.dependencies] @@ -1569,13 +1468,13 @@ urllib3 = ">=2" [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] [[package]] @@ -1595,17 +1494,18 @@ typing-extensions = ">=3.7.4" [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -1641,4 +1541,4 @@ segmentation = ["numpy", "numpy", "pillow"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "bcf3536bfbdf479263ea06bfab09fec53ce5d165e22e2e1125bd1cf37040bd24" +content-hash = "31751e693e079aa24e82b5ddc2bb807b19a621cf431ec83da7a40ce04cb782f9" diff --git a/pyproject.toml b/pyproject.toml index d3911996..530d2754 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,16 +40,12 @@ pytest = "^7" pytest-xdist = "*" pytest-cov = "*" -[tool.poetry.group.formatter.dependencies] -isort = "*" -autoflake = "*" -black = "^23" [tool.poetry.group.linter.dependencies] # pythonバージョンを指定している理由:lintは開発環境と同じPythonバージョンで実行するため。また古いPythonバージョンにサポートしていないライブラリのバージョンがあるため -mypy = {version="^1", python = ">=3.10"} -flake8 = {version="^7", python = ">=3.10"} -pylint = {version="^3", python = ">=3.10"} +ruff = {version="^0.3", python = ">=3.11"} +mypy = {version="^1", python = ">=3.11"} +pylint = {version="^3", python = ">=3.11"} # type stub package types-requests = "*" @@ -58,7 +54,7 @@ types-dataclasses = "*" [tool.poetry.group.documentation.dependencies] -sphinx = "^6" +sphinx = "^7" pydata-sphinx-theme = ">=0.13.3" @@ -70,14 +66,6 @@ optional = true ipython = "*" -[tool.black] -line-length = 120 - -[tool.isort] -profile = "black" -line_length = 120 -skip="annofabapi/__init__.py" - [tool.mypy] # スタブが無いパッケージのエラーは無視させる.サードパーティのライブラリに型情報がないケースもあるため ignore_missing_imports = true @@ -86,6 +74,66 @@ check_untyped_defs = true plugins = ["numpy.typing.mypy_plugin"] +[tool.ruff] +target-version = "py38" +line-length = 120 + +[tool.ruff.lint] +ignore = [ +# "G004", # `logging-f-string` : loggingでf-stringを使いたいので無視する + "PD002", #すでにpandasで`inplace=True`はいろんなところで使っているため + "RUF001", # 全角記号など`ambiguous unicode character`も使いたいため + "RUF002",# 全角記号など`ambiguous unicode character`も使いたいため + "RUF003",# 全角記号など`ambiguous unicode character`も使いたいため + "PLC1901", # compare-to-empty-string : `if a == "`のように空文字列で直接比較したいときがあるため + "PLR2004", # magic-value-comparison: listのサイズで判定するときがよくあるため + "ANN101", # missing-type-self: 引数selfには型ヒントは付けていないため + "ANN102", # missing-type-cls: 引数clsには型ヒントは付けていないため + "ANN002", # missing-type-args + "ANN003", # missing-type-kwargs + "ERA", # : 役立つこともあるが、コメントアウトしていないコードも警告されるので無視する + + # いずれ無視しないようにする + "ANN201", # missing-return-type-public-function: + "ANN202", # missing-return-type-private-function: + "PLR", # pylint Refactor + + # 以下のルールはコードに合っていないので無効化した + "RSE", # flake8-raise + "D", # pydocstyle, Docstringを中途半端にしか書いていないので、除外する + "C90", # mccabe + "T20", # flake8-print + "SLF", # flake8-self + "BLE", # flake8-blind-except + "FBT", # flake8-boolean-trap + "TRY", # tryceratops + "COM", # flake8-commas + "S", # flake8-bandit + "EM",#flake8-errmsg + "EXE", # flake8-executable + "ICN", # flake8-import-conventions + "RET",#flake8-return + "SIM",#flake8-simplify + "TCH", # flake8-type-checking + "PTH", #pathlibを使わないコードが多いので、除外する + "ISC", #flake8-implicit-str-concat + "N", # pep8-naming + "PT", # flake8-pytest-style +] + +select = [ + "ALL" +] + + +[tool.ruff.lint.pydocstyle] +convention = "google" + +[tool.ruff.lint.pylint] +max-args = 10 + + + [tool.poetry-dynamic-versioning] enable = true format = "{base}" From 4385e17a51d14c82ca0c70658ff4545ea3089da8 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 13:58:50 +0900 Subject: [PATCH 02/13] format --- annofabapi/__init__.py | 2 +- annofabapi/_utils.py | 12 +- annofabapi/api.py | 20 +- annofabapi/api2.py | 8 +- annofabapi/dataclass/annotation.py | 3 +- annofabapi/dataclass/annotation_specs.py | 3 +- annofabapi/dataclass/comment.py | 3 +- annofabapi/dataclass/input.py | 3 +- annofabapi/dataclass/job.py | 3 +- annofabapi/dataclass/organization.py | 3 +- annofabapi/dataclass/organization_member.py | 3 +- annofabapi/dataclass/project.py | 3 +- annofabapi/dataclass/project_member.py | 3 +- annofabapi/dataclass/supplementary.py | 3 +- annofabapi/dataclass/task.py | 3 +- annofabapi/exceptions.py | 2 +- annofabapi/generated_api.py | 188 +++++------------ annofabapi/generated_api2.py | 45 +--- annofabapi/models.py | 3 +- annofabapi/parser.py | 18 +- annofabapi/resource.py | 8 +- annofabapi/wrapper.py | 215 +++++++------------- pyproject.toml | 2 +- tests/create_test_project.py | 34 ++-- tests/test_api.py | 25 +-- tests/test_api2.py | 1 + tests/test_local_parser.py | 14 +- tests/test_local_resource.py | 1 + tests/test_local_utils.py | 4 +- tests/test_sandbox.py | 9 +- tests/tests_local_api.py | 6 +- 31 files changed, 198 insertions(+), 452 deletions(-) diff --git a/annofabapi/__init__.py b/annofabapi/__init__.py index 2328d302..f7a66192 100644 --- a/annofabapi/__init__.py +++ b/annofabapi/__init__.py @@ -1,7 +1,7 @@ from annofabapi.api import AnnofabApi from annofabapi.api2 import AnnofabApi2 +from annofabapi.resource import Resource, build, build_from_env, build_from_netrc from annofabapi.wrapper import Wrapper -from annofabapi.resource import build, build_from_netrc, build_from_env, Resource from .__version__ import __version__ diff --git a/annofabapi/_utils.py b/annofabapi/_utils.py index 47d7d1c1..cced6385 100644 --- a/annofabapi/_utils.py +++ b/annofabapi/_utils.py @@ -4,9 +4,7 @@ from typing import Optional -def _issue_deprecated_warning_with_class( - cls, stacklevel: int, deprecated_date: str, new_class_name: Optional[str] = None -): +def _issue_deprecated_warning_with_class(cls, stacklevel: int, deprecated_date: str, new_class_name: Optional[str] = None): """非推奨なクラスに対する警告メッセージを出力する。""" old_class_name = f"{cls.__module__}.{cls.__name__}" message = f"deprecated: '{old_class_name}'は{deprecated_date}以降に廃止します。" @@ -19,9 +17,7 @@ def _process_class(cls, deprecated_date: str, new_class_name: Optional[str] = No def decorator(function): @wraps(function) def wrapped(*args, **kwargs): - _issue_deprecated_warning_with_class( - cls, stacklevel=3, deprecated_date=deprecated_date, new_class_name=new_class_name - ) + _issue_deprecated_warning_with_class(cls, stacklevel=3, deprecated_date=deprecated_date, new_class_name=new_class_name) return function(*args, **kwargs) return wrapped @@ -32,9 +28,7 @@ def wrapped(*args, **kwargs): def _process_enum_class(cls, deprecated_date: str, new_class_name: Optional[str] = None): def getattribute(self, name): - _issue_deprecated_warning_with_class( - cls, stacklevel=4, deprecated_date=deprecated_date, new_class_name=new_class_name - ) + _issue_deprecated_warning_with_class(cls, stacklevel=4, deprecated_date=deprecated_date, new_class_name=new_class_name) return super(type(self), self).__getattribute__(name) cls.__getattribute__ = getattribute diff --git a/annofabapi/api.py b/annofabapi/api.py index ae5fef97..f5a45009 100644 --- a/annofabapi/api.py +++ b/annofabapi/api.py @@ -384,9 +384,7 @@ def _execute_http_request( requests.exceptions.HTTPError: http status codeが4XXX,5XXXのとき """ - response = self.session.request( - method=http_method, url=url, params=params, data=data, headers=headers, json=json, **kwargs - ) + response = self.session.request(method=http_method, url=url, params=params, data=data, headers=headers, json=json, **kwargs) # response.requestよりメソッド引数のrequest情報の方が分かりやすいので、メソッド引数のrequest情報を出力する。 logger.debug( @@ -410,11 +408,7 @@ def _execute_http_request( # リクエスト過多の場合、待ってから再度アクセスする if response.status_code == requests.codes.too_many_requests: retry_after_value = response.headers.get("Retry-After") - waiting_time_seconds = ( - float(retry_after_value) - if retry_after_value is not None - else DEFAULT_WAITING_TIME_SECONDS_WITH_429_STATUS_CODE - ) + waiting_time_seconds = float(retry_after_value) if retry_after_value is not None else DEFAULT_WAITING_TIME_SECONDS_WITH_429_STATUS_CODE logger.warning( "HTTPステータスコードが'%s'なので、%s秒待ってからリトライします。 :: %s", @@ -523,11 +517,7 @@ def _request_wrapper( ) elif response.status_code == requests.codes.too_many_requests: retry_after_value = response.headers.get("Retry-After") - waiting_time_seconds = ( - float(retry_after_value) - if retry_after_value is not None - else DEFAULT_WAITING_TIME_SECONDS_WITH_429_STATUS_CODE - ) + waiting_time_seconds = float(retry_after_value) if retry_after_value is not None else DEFAULT_WAITING_TIME_SECONDS_WITH_429_STATUS_CODE logger.warning( "HTTPステータスコードが'%s'なので、%s秒待ってからリトライします。 :: %s", @@ -567,9 +557,7 @@ def _request_wrapper( return content, response - def _get_signed_cookie( - self, project_id, query_params: Optional[Dict[str, Any]] = None - ) -> Tuple[Dict[str, Any], requests.Response]: + def _get_signed_cookie(self, project_id, query_params: Optional[Dict[str, Any]] = None) -> Tuple[Dict[str, Any], requests.Response]: """ アノテーション仕様の履歴情報を取得するために、非公開APIにアクセスする。 変更される可能性あり. diff --git a/annofabapi/api2.py b/annofabapi/api2.py index 27eb89b1..acf2f7f4 100644 --- a/annofabapi/api2.py +++ b/annofabapi/api2.py @@ -102,9 +102,7 @@ def _request_wrapper( "url": url, "query_params": query_params, "header_params": header_params, - "request_body": _create_request_body_for_logger(request_body) - if request_body is not None - else None, + "request_body": _create_request_body_for_logger(request_body) if request_body is not None else None, }, "response": { "status_code": response.status_code, @@ -128,9 +126,7 @@ def _request_wrapper( elif response.status_code == requests.codes.too_many_requests: retry_after_value = response.headers.get("Retry-After") waiting_time_seconds = ( - float(retry_after_value) - if retry_after_value is not None - else DEFAULT_WAITING_TIME_SECONDS_WITH_429_STATUS_CODE + float(retry_after_value) if retry_after_value is not None else DEFAULT_WAITING_TIME_SECONDS_WITH_429_STATUS_CODE ) logger.warning( diff --git a/annofabapi/dataclass/annotation.py b/annofabapi/dataclass/annotation.py index 6fc00429..82938772 100644 --- a/annofabapi/dataclass/annotation.py +++ b/annofabapi/dataclass/annotation.py @@ -9,9 +9,8 @@ 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 typing import Any, Dict, List, Optional, Union # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/annotation_specs.py b/annofabapi/dataclass/annotation_specs.py index 497815dd..f156aaf1 100644 --- a/annofabapi/dataclass/annotation_specs.py +++ b/annofabapi/dataclass/annotation_specs.py @@ -9,9 +9,8 @@ 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 typing import Any, Dict, List, Optional, Union # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/comment.py b/annofabapi/dataclass/comment.py index d016cd48..f29de6f3 100644 --- a/annofabapi/dataclass/comment.py +++ b/annofabapi/dataclass/comment.py @@ -9,9 +9,8 @@ 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 typing import Any, Dict, List, Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/input.py b/annofabapi/dataclass/input.py index 676d0e13..641ca174 100644 --- a/annofabapi/dataclass/input.py +++ b/annofabapi/dataclass/input.py @@ -9,9 +9,8 @@ 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 typing import Any, Dict, Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/job.py b/annofabapi/dataclass/job.py index bbbb1624..f3b92d53 100644 --- a/annofabapi/dataclass/job.py +++ b/annofabapi/dataclass/job.py @@ -9,9 +9,8 @@ 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 typing import Any, Dict, Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/organization.py b/annofabapi/dataclass/organization.py index 950cc4d3..0739b1eb 100644 --- a/annofabapi/dataclass/organization.py +++ b/annofabapi/dataclass/organization.py @@ -9,9 +9,8 @@ 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 typing import Any, Dict # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/organization_member.py b/annofabapi/dataclass/organization_member.py index 7743a65f..858e56f9 100644 --- a/annofabapi/dataclass/organization_member.py +++ b/annofabapi/dataclass/organization_member.py @@ -9,9 +9,8 @@ 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 typing import Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/project.py b/annofabapi/dataclass/project.py index 513c17c6..b2ccf1b5 100644 --- a/annofabapi/dataclass/project.py +++ b/annofabapi/dataclass/project.py @@ -9,9 +9,8 @@ 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 typing import List, Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/project_member.py b/annofabapi/dataclass/project_member.py index 4f0e47ea..5406a5f6 100644 --- a/annofabapi/dataclass/project_member.py +++ b/annofabapi/dataclass/project_member.py @@ -9,9 +9,8 @@ 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 typing import Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/supplementary.py b/annofabapi/dataclass/supplementary.py index 287ce190..4419e623 100644 --- a/annofabapi/dataclass/supplementary.py +++ b/annofabapi/dataclass/supplementary.py @@ -9,9 +9,8 @@ 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 typing import Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/dataclass/task.py b/annofabapi/dataclass/task.py index ed896080..2cf274a0 100644 --- a/annofabapi/dataclass/task.py +++ b/annofabapi/dataclass/task.py @@ -9,9 +9,8 @@ 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 typing import Any, Dict, List, Optional # pylint: disable=unused-import from dataclasses_json import DataClassJsonMixin diff --git a/annofabapi/exceptions.py b/annofabapi/exceptions.py index d75e23fd..000a668b 100644 --- a/annofabapi/exceptions.py +++ b/annofabapi/exceptions.py @@ -33,7 +33,7 @@ def __init__(self, outer_file_path: str, zipfile_path: Optional[str] = None): if zipfile_path is None: message = f"No such file or directory: '{outer_file_path}'" else: - message = f"There is no item named '{str(outer_file_path)}' in the archive '{zipfile_path}'" + message = f"There is no item named '{outer_file_path!s}' in the archive '{zipfile_path}'" super().__init__(message) diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py index 44bdc974..da3962d0 100644 --- a/annofabapi/generated_api.py +++ b/annofabapi/generated_api.py @@ -10,12 +10,10 @@ import abc import warnings # pylint: disable=unused-import -from typing import Any, Dict, List, Optional, Tuple, Union # pylint: disable=unused-import +from typing import Any, Dict, Optional, Tuple # pylint: disable=unused-import import requests -import annofabapi # pylint: disable=unused-import - class AbstractAnnofabApi(abc.ABC): """ @@ -75,9 +73,7 @@ def batch_update_annotations( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_annotation( - self, project_id: str, task_id: str, input_data_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_annotation(self, project_id: str, task_id: str, input_data_id: str, **kwargs) -> Tuple[Any, requests.Response]: """Simpleアノテーションの取得 https://annofab.com/docs/api/#operation/getAnnotation @@ -127,9 +123,7 @@ def get_annotation_archive(self, project_id: str, **kwargs) -> Tuple[Any, reques keyword_params.update(**kwargs) 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, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_annotation_list(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """アノテーション一括取得 https://annofab.com/docs/api/#operation/getAnnotationList @@ -296,9 +290,7 @@ def put_annotation( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_annotation_specs( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_annotation_specs(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """アノテーション仕様取得 https://annofab.com/docs/api/#operation/getAnnotationSpecs @@ -471,9 +463,7 @@ def get_comments( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def batch_update_inputs( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def batch_update_inputs(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """入力データの一括更新 https://annofab.com/docs/api/#operation/batchUpdateInputs @@ -575,9 +565,7 @@ def get_input_data(self, project_id: str, input_data_id: str, **kwargs) -> Tuple keyword_params.update(**kwargs) 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, **kwargs - ) -> 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]: """入力データの一括取得 https://annofab.com/docs/api/#operation/getInputDataList @@ -612,9 +600,7 @@ def get_input_data_list( keyword_params.update(**kwargs) 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, **kwargs - ) -> 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]: """入力データの作成/更新 https://annofab.com/docs/api/#operation/putInputData @@ -686,9 +672,7 @@ def batch_update_inspections( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_inspections( - self, project_id: str, task_id: str, input_data_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_inspections(self, project_id: str, task_id: str, input_data_id: str, **kwargs) -> Tuple[Any, requests.Response]: """検査コメント一括取得 https://annofab.com/docs/api/#operation/getInspections @@ -709,9 +693,7 @@ def get_inspections( """ - warnings.warn( - "annofabapi.AnnofabApi.get_inspections() is deprecated and will be removed.", FutureWarning, stacklevel=2 - ) + warnings.warn("annofabapi.AnnofabApi.get_inspections() is deprecated and will be removed.", FutureWarning, stacklevel=2) url_path = f"/projects/{project_id}/tasks/{task_id}/inputs/{input_data_id}/inspections" http_method = "GET" keyword_params: Dict[str, Any] = {} @@ -748,9 +730,7 @@ def delete_instruction_image(self, project_id: str, image_id: str, **kwargs) -> keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_instruction( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_instruction(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの取得 https://annofab.com/docs/api/#operation/getInstruction @@ -778,9 +758,7 @@ def get_instruction( keyword_params.update(**kwargs) 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, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_instruction_history(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの編集履歴の取得 https://annofab.com/docs/api/#operation/getInstructionHistory @@ -808,9 +786,7 @@ def get_instruction_history( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_instruction_image_url_for_put( - self, project_id: str, image_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_instruction_image_url_for_put(self, project_id: str, image_id: str, **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの画像登録・更新用URL取得 https://annofab.com/docs/api/#operation/getInstructionImageUrlForPut @@ -859,9 +835,7 @@ def get_instruction_images(self, project_id: str, **kwargs) -> Tuple[Any, reques keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def put_instruction( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def put_instruction(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """作業ガイドの更新 https://annofab.com/docs/api/#operation/putInstruction @@ -894,9 +868,7 @@ def put_instruction( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def delete_project_job( - self, project_id: str, job_type: str, job_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def delete_project_job(self, project_id: str, job_type: str, job_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのバックグラウンドジョブ情報削除 https://annofab.com/docs/api/#operation/deleteProjectJob @@ -922,9 +894,7 @@ def delete_project_job( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_job( - self, organization_name: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_organization_job(self, organization_name: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """組織のバックグラウンドジョブ情報取得 https://annofab.com/docs/api/#operation/getOrganizationJob @@ -954,9 +924,7 @@ def get_organization_job( keyword_params.update(**kwargs) 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, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_project_job(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのバックグラウンドジョブ情報取得 https://annofab.com/docs/api/#operation/getProjectJob @@ -1008,7 +976,7 @@ def get_my_account(self, **kwargs) -> Tuple[Any, requests.Response]: """ - url_path = f"/my/account" + url_path = "/my/account" http_method = "GET" keyword_params: Dict[str, Any] = {} keyword_params.update(**kwargs) @@ -1062,9 +1030,7 @@ def get_my_notification_message(self, message_id: str, **kwargs) -> Tuple[Any, r keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_my_notification_messages( - self, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_my_notification_messages(self, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """自分に届いている通知メッセージの一括取得 https://annofab.com/docs/api/#operation/getMyNotificationMessages @@ -1084,7 +1050,7 @@ def get_my_notification_messages( """ - url_path = f"/my/messages" + url_path = "/my/messages" http_method = "GET" keyword_params: Dict[str, Any] = { "query_params": query_params, @@ -1109,7 +1075,7 @@ def get_my_notification_unread_messages_count(self, **kwargs) -> Tuple[Any, requ """ - url_path = f"/my/unread-messages-count" + url_path = "/my/unread-messages-count" http_method = "GET" keyword_params: Dict[str, Any] = {} keyword_params.update(**kwargs) @@ -1132,7 +1098,7 @@ def get_my_organizations(self, **kwargs) -> Tuple[Any, requests.Response]: """ - url_path = f"/my/organizations" + url_path = "/my/organizations" http_method = "GET" keyword_params: Dict[str, Any] = {} keyword_params.update(**kwargs) @@ -1155,7 +1121,7 @@ def get_my_project_members(self, **kwargs) -> Tuple[Any, requests.Response]: """ - url_path = f"/my/project-members" + url_path = "/my/project-members" http_method = "GET" keyword_params: Dict[str, Any] = {} keyword_params.update(**kwargs) @@ -1186,7 +1152,7 @@ def get_my_projects(self, query_params: Optional[Dict[str, Any]] = None, **kwarg """ - url_path = f"/my/projects" + url_path = "/my/projects" http_method = "GET" keyword_params: Dict[str, Any] = { "query_params": query_params, @@ -1213,7 +1179,7 @@ def put_my_account(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[ """ - url_path = f"/my/account" + url_path = "/my/account" http_method = "PUT" keyword_params: Dict[str, Any] = { "request_body": request_body, @@ -1221,9 +1187,7 @@ def put_my_account(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[ keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def put_my_notification_message_opened( - self, message_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def put_my_notification_message_opened(self, message_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """通知メッセージのステータス更新 https://annofab.com/docs/api/#operation/putMyNotificationMessageOpened @@ -1275,7 +1239,7 @@ def create_new_organization(self, request_body: Optional[Any] = None, **kwargs) """ - url_path = f"/organizations" + url_path = "/organizations" http_method = "POST" keyword_params: Dict[str, Any] = { "request_body": request_body, @@ -1393,9 +1357,7 @@ def get_projects_of_organization( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def put_organization( - self, organization_name: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def put_organization(self, organization_name: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """組織の更新 https://annofab.com/docs/api/#operation/putOrganization @@ -1456,9 +1418,7 @@ def delete_organization_input_data( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_input_data_set( - self, organization_name: str, input_data_set_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_input_data_set(self, organization_name: str, input_data_set_id: str, **kwargs) -> Tuple[Any, requests.Response]: """入力データセット情報取得 https://annofab.com/docs/api/#operation/getInputDataSet @@ -1640,9 +1600,7 @@ def accept_organization_invitation( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def delete_organization_member( - self, organization_name: str, user_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def delete_organization_member(self, organization_name: str, user_id: str, **kwargs) -> Tuple[Any, requests.Response]: """組織メンバーの削除 https://annofab.com/docs/api/#operation/deleteOrganizationMember @@ -1783,9 +1741,7 @@ def update_organization_member_role( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def delete_organization_plugin( - self, organization_name: str, plugin_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def delete_organization_plugin(self, organization_name: str, plugin_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プラグインの削除 https://annofab.com/docs/api/#operation/deleteOrganizationPlugin @@ -1810,9 +1766,7 @@ def delete_organization_plugin( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_plugin( - self, organization_name: str, plugin_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_organization_plugin(self, organization_name: str, plugin_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プラグインの取得 https://annofab.com/docs/api/#operation/getOrganizationPlugin @@ -2125,9 +2079,7 @@ def get_project_tasks_url(self, project_id: str, **kwargs) -> Tuple[Any, request keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_project_copy( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def initiate_project_copy(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのコピー https://annofab.com/docs/api/#operation/initiateProjectCopy @@ -2270,9 +2222,7 @@ def get_project_member(self, project_id: str, user_id: str, **kwargs) -> Tuple[A keyword_params.update(**kwargs) 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, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_project_members(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトメンバー一括取得 https://annofab.com/docs/api/#operation/getProjectMembers @@ -2300,9 +2250,7 @@ def get_project_members( keyword_params.update(**kwargs) 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, **kwargs - ) -> 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]: """プロジェクトメンバー追加/更新 https://annofab.com/docs/api/#operation/putProjectMember @@ -2336,9 +2284,7 @@ def put_project_member( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_account_daily_statistics( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_account_daily_statistics(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """メンバー別作業時間の取得 https://annofab.com/docs/api/#operation/getAccountDailyStatistics @@ -2446,9 +2392,7 @@ def get_markers(self, project_id: str, **kwargs) -> Tuple[Any, requests.Response keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_phase_daily_statistics( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_phase_daily_statistics(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """フェーズ別作業時間の取得 https://annofab.com/docs/api/#operation/getPhaseDailyStatistics @@ -2501,9 +2445,7 @@ def get_statistics_available_dates(self, project_id: str, **kwargs) -> Tuple[Any keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_daily_statistics( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_task_daily_statistics(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """フェーズ別タスク数の取得 https://annofab.com/docs/api/#operation/getTaskDailyStatistics @@ -2595,9 +2537,7 @@ def get_worktime_daily_statistics_by_account( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def put_markers( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def put_markers(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """統計グラフマーカー更新 https://annofab.com/docs/api/#operation/putMarkers @@ -2630,9 +2570,7 @@ def put_markers( # 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, **kwargs - ) -> 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]: """補助情報削除 https://annofab.com/docs/api/#operation/deleteSupplementaryData @@ -2658,9 +2596,7 @@ def delete_supplementary_data( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_supplementary_data_list( - self, project_id: str, input_data_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_supplementary_data_list(self, project_id: str, input_data_id: str, **kwargs) -> Tuple[Any, requests.Response]: """補助情報一括取得 https://annofab.com/docs/api/#operation/getSupplementaryDataList @@ -2727,9 +2663,7 @@ def put_supplementary_data( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def assign_tasks( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def assign_tasks(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスク割当 https://annofab.com/docs/api/#operation/assignTasks @@ -2757,9 +2691,7 @@ def assign_tasks( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def batch_update_tasks( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def batch_update_tasks(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスク一括更新 https://annofab.com/docs/api/#operation/batchUpdateTasks @@ -2862,9 +2794,7 @@ def get_task_histories(self, project_id: str, task_id: str, **kwargs) -> Tuple[A keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_tasks( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_tasks(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスクの一括取得 https://annofab.com/docs/api/#operation/getTasks @@ -2908,9 +2838,7 @@ def get_tasks( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def initiate_tasks_generation( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def initiate_tasks_generation(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスク一括作成 https://annofab.com/docs/api/#operation/initiateTasksGeneration @@ -2938,9 +2866,7 @@ def initiate_tasks_generation( keyword_params.update(**kwargs) 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, **kwargs - ) -> Tuple[Any, requests.Response]: + def operate_task(self, project_id: str, task_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスク状態変更 https://annofab.com/docs/api/#operation/operateTask @@ -2969,9 +2895,7 @@ def operate_task( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def patch_tasks_metadata( - self, project_id: str, request_body: Optional[Any] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def patch_tasks_metadata(self, project_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスクメタデータの一括更新 https://annofab.com/docs/api/#operation/patchTasksMetadata @@ -2999,9 +2923,7 @@ def patch_tasks_metadata( keyword_params.update(**kwargs) 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, **kwargs - ) -> Tuple[Any, requests.Response]: + def put_task(self, project_id: str, task_id: str, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスク作成/更新 https://annofab.com/docs/api/#operation/putTask @@ -3035,9 +2957,7 @@ def put_task( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_organization_usage_status( - self, organization_name: str, year_month: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_organization_usage_status(self, organization_name: str, year_month: str, **kwargs) -> Tuple[Any, requests.Response]: """利用状況を取得 https://annofab.com/docs/api/#operation/getOrganizationUsageStatus @@ -3062,9 +2982,7 @@ def get_organization_usage_status( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_usage_status_detail( - self, organization_name: str, year_month: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_organization_usage_status_detail(self, organization_name: str, year_month: str, **kwargs) -> Tuple[Any, requests.Response]: """利用状況の詳細情報を取得 https://annofab.com/docs/api/#operation/getOrganizationUsageStatusDetail @@ -3174,9 +3092,7 @@ def get_webhooks(self, project_id: str, **kwargs) -> Tuple[Any, requests.Respons keyword_params.update(**kwargs) 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, **kwargs - ) -> 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の作成/更新 https://annofab.com/docs/api/#operation/putWebhook @@ -3205,9 +3121,7 @@ def put_webhook( keyword_params.update(**kwargs) 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, **kwargs - ) -> 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のテスト実行 https://annofab.com/docs/api/#operation/testWebhook diff --git a/annofabapi/generated_api2.py b/annofabapi/generated_api2.py index 1f6b5068..9eb93e06 100644 --- a/annofabapi/generated_api2.py +++ b/annofabapi/generated_api2.py @@ -9,13 +9,10 @@ """ import abc -import warnings # pylint: disable=unused-import -from typing import Any, Dict, List, Optional, Tuple, Union # pylint: disable=unused-import +from typing import Any, Dict, Optional, Tuple # pylint: disable=unused-import import requests -import annofabapi # pylint: disable=unused-import - class AbstractAnnofabApi2(abc.ABC): """ @@ -38,9 +35,7 @@ def _request_wrapper( # 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, **kwargs - ) -> 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]: """アノテーション仕様取得 https://annofab.com/docs/api/#operation/getAnnotationSpecsV2 @@ -219,9 +214,7 @@ def get_organization_cache_v2(self, organization_id: str, **kwargs) -> Tuple[Any keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_organization_v2( - self, organization_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_organization_v2(self, organization_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """組織IDで組織情報取得 https://annofab.com/docs/api/#operation/getOrganizationV2 @@ -249,9 +242,7 @@ def get_organization_v2( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_project_task_count_v2( - self, organization_id: str, project_id: str, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_project_task_count_v2(self, organization_id: str, project_id: str, **kwargs) -> Tuple[Any, requests.Response]: """プロジェクトのタスク件数取得 https://annofab.com/docs/api/#operation/getProjectTaskCountV2 @@ -312,9 +303,7 @@ def get_project_member_v2( keyword_params.update(**kwargs) 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, **kwargs - ) -> 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]: """プロジェクトメンバー検索 https://annofab.com/docs/api/#operation/getProjectMembersV2 @@ -439,9 +428,7 @@ def get_inspection_daily_statistics_v2( keyword_params.update(**kwargs) 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, **kwargs - ) -> 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]: """ラベル別アノテーション数集計取得 https://annofab.com/docs/api/#operation/getLabelStatisticsV2 @@ -500,9 +487,7 @@ def get_phase_daily_statistics_v2( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_task_daily_statistics_v2( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_task_daily_statistics_v2(self, project_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """タスク集計取得 https://annofab.com/docs/api/#operation/getTaskDailyStatisticsV2 @@ -599,9 +584,7 @@ def get_worktime_daily_statistics_v2( # NOTE: This method is auto generated by OpenAPI Generator ######################################### - def get_account_v2( - self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_account_v2(self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """ユーザーアカウント情報取得 https://annofab.com/docs/api/#operation/getAccountV2 @@ -653,9 +636,7 @@ def get_user_cache_v2(self, account_id: str, **kwargs) -> Tuple[Any, requests.Re keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_user_organizations_v2( - self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_user_organizations_v2(self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """個人の所属組織検索 https://annofab.com/docs/api/#operation/getUserOrganizationsV2 @@ -683,9 +664,7 @@ def get_user_organizations_v2( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_user_project_members_v2( - self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_user_project_members_v2(self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """個人のプロジェクトメンバー情報一括取得 https://annofab.com/docs/api/#operation/getUserProjectMembersV2 @@ -713,9 +692,7 @@ def get_user_project_members_v2( keyword_params.update(**kwargs) return self._request_wrapper(http_method, url_path, **keyword_params) - def get_user_projects_v2( - self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs - ) -> Tuple[Any, requests.Response]: + def get_user_projects_v2(self, account_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Any, requests.Response]: """自分のプロジェクトメンバー情報検索 https://annofab.com/docs/api/#operation/getUserProjectsV2 diff --git a/annofabapi/models.py b/annofabapi/models.py index e078bbd0..fe0427ca 100644 --- a/annofabapi/models.py +++ b/annofabapi/models.py @@ -10,9 +10,8 @@ このファイルはopenapi-generatorで自動生成される。詳細は generate/README.mdを参照 """ -import warnings # pylint: disable=unused-import from enum import Enum -from typing import Any, Dict, List, NewType, Optional, Tuple, Union # pylint: disable=unused-import +from typing import Any, Dict, NewType # pylint: disable=unused-import from annofabapi._utils import deprecated_class # pylint: disable=unused-import diff --git a/annofabapi/parser.py b/annofabapi/parser.py index 115cd40e..ae497a10 100644 --- a/annofabapi/parser.py +++ b/annofabapi/parser.py @@ -212,9 +212,7 @@ def open_outer_file(self, data_uri: str): return self.__zip_file.open(outer_file_path, mode="r") except KeyError as e: # mypyの `error: "ZipFile" has no attribute "filename"` という警告を無視する - raise AnnotationOuterFileNotFoundError( - str(outer_file_path), self.__zip_file.filename - ) from e # type: ignore + raise AnnotationOuterFileNotFoundError(str(outer_file_path), self.__zip_file.filename) from e # type: ignore class SimpleAnnotationDirParser(SimpleAnnotationParser): @@ -279,9 +277,7 @@ def open_outer_file(self, data_uri: str): return self.__zip_file.open(outer_file_path, mode="r") except KeyError as e: # mypyの `error: "ZipFile" has no attribute "filename"` という警告を無視する - raise AnnotationOuterFileNotFoundError( - str(outer_file_path), self.__zip_file.filename - ) from e # type: ignore + raise AnnotationOuterFileNotFoundError(str(outer_file_path), self.__zip_file.filename) from e # type: ignore class FullAnnotationDirParser(FullAnnotationParser): @@ -395,11 +391,7 @@ def _match_task_id_and_contain_input_data_json(zip_info: zipfile.ZipInfo) -> boo return False return True - return [ - zip_info.filename - for zip_info in self.__zip_file.infolist() - if _match_task_id_and_contain_input_data_json(zip_info) - ] + return [zip_info.filename for zip_info in self.__zip_file.infolist() if _match_task_id_and_contain_input_data_json(zip_info)] def __init__(self, zip_file: zipfile.ZipFile, task_id: str, json_path_list: Optional[List[str]] = None): self.__zip_file = zip_file @@ -446,9 +438,7 @@ def __init__(self, task_dir_path: Path): super().__init__(task_id) def lazy_parse(self) -> Iterator[SimpleAnnotationDirParser]: - return ( - SimpleAnnotationDirParser(e) for e in self.__task_dir_path.iterdir() if e.is_file() and e.suffix == ".json" - ) + return (SimpleAnnotationDirParser(e) for e in self.__task_dir_path.iterdir() if e.is_file() and e.suffix == ".json") @property def json_file_path_list(self) -> List[str]: diff --git a/annofabapi/resource.py b/annofabapi/resource.py index 535bdb93..a2a48110 100644 --- a/annofabapi/resource.py +++ b/annofabapi/resource.py @@ -32,14 +32,10 @@ def __init__(self, login_user_id: str, login_password: str, endpoint_url: str = #: AnnofabApi2 Instance self.api2 = AnnofabApi2(self.api) - logger.debug( - "Create annofabapi resource instance :: %s", {"login_user_id": login_user_id, "endpoint_url": endpoint_url} - ) + logger.debug("Create annofabapi resource instance :: %s", {"login_user_id": login_user_id, "endpoint_url": endpoint_url}) -def build( - login_user_id: Optional[str] = None, login_password: Optional[str] = None, endpoint_url: str = DEFAULT_ENDPOINT_URL -) -> Resource: +def build(login_user_id: Optional[str] = None, login_password: Optional[str] = None, endpoint_url: str = DEFAULT_ENDPOINT_URL) -> Resource: """ AnnofabApi, Wrapperのインスタンスを保持するインスタンスを生成する。 diff --git a/annofabapi/wrapper.py b/annofabapi/wrapper.py index ec1fde25..0cb6620e 100644 --- a/annofabapi/wrapper.py +++ b/annofabapi/wrapper.py @@ -151,7 +151,10 @@ def _get_mime_type(file_path: str) -> str: if content_type is not None: return content_type - logger.info("ファイルパス '%s' からMIME Typeを推測できませんでした。MIME Typeは `application/octet-stream' とみなします。", file_path) + logger.info( + "ファイルパス '%s' からMIME Typeを推測できませんでした。MIME Typeは `application/octet-stream' とみなします。", + file_path, + ) return "application/octet-stream" @staticmethod @@ -178,7 +181,10 @@ def _get_all_objects(func_get_list: Callable, limit: int, **kwargs_for_func_get_ content, _ = func_get_list(**kwargs_for_func_get_list) if content["over_limit"]: - logger.warning("calling %s :: 検索結果が10,000件を超えています。Web APIの都合上10,000件までしか取得できません。", func_get_list.__name__) + logger.warning( + "calling %s :: 検索結果が10,000件を超えています。Web APIの都合上10,000件までしか取得できません。", + func_get_list.__name__, + ) all_objects.extend(content["list"]) @@ -263,9 +269,7 @@ def get_editor_annotation_or_none( Returns: アノテーション """ - content, response = self.api.get_editor_annotation( - project_id, task_id, input_data_id, query_params=query_params, raise_for_status=False - ) + content, response = self.api.get_editor_annotation(project_id, task_id, input_data_id, query_params=query_params, raise_for_status=False) if response.status_code == requests.codes.not_found: return None @@ -331,9 +335,7 @@ def download_full_annotation_archive(self, project_id: str, dest_path: Union[str ) return url - def get_all_annotation_list( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None - ) -> List[Dict[str, Any]]: + def get_all_annotation_list(self, project_id: str, query_params: Optional[Dict[str, Any]] = None) -> List[Dict[str, Any]]: """ すべてのアノテーション情報を取得する。 @@ -344,14 +346,10 @@ def get_all_annotation_list( Returns:l すべてのアノテーション一覧 """ - return self._get_all_objects( - self.api.get_annotation_list, limit=200, project_id=project_id, query_params=query_params - ) + return self._get_all_objects(self.api.get_annotation_list, limit=200, project_id=project_id, query_params=query_params) @staticmethod - def __replace_annotation_specs_id( - detail: Dict[str, Any], annotation_specs_relation: AnnotationSpecsRelation - ) -> Optional[Dict[str, Any]]: + def __replace_annotation_specs_id(detail: Dict[str, Any], annotation_specs_relation: AnnotationSpecsRelation) -> Optional[Dict[str, Any]]: """ アノテーション仕様関係のIDを、新しいIDに置換する。 @@ -373,17 +371,13 @@ def __replace_annotation_specs_id( new_additional_data_list = [] for additional_data in additional_data_list: additional_data_definition_id = additional_data["additional_data_definition_id"] - new_additional_data_definition_id = annotation_specs_relation.additional_data_definition_id.get( - additional_data_definition_id - ) + new_additional_data_definition_id = annotation_specs_relation.additional_data_definition_id.get(additional_data_definition_id) if new_additional_data_definition_id is None: continue additional_data["additional_data_definition_id"] = new_additional_data_definition_id if additional_data["choice"] is not None: - new_choice = annotation_specs_relation.choice_id.get( - ChoiceKey(additional_data_definition_id, additional_data["choice"]) - ) + new_choice = annotation_specs_relation.choice_id.get(ChoiceKey(additional_data_definition_id, additional_data["choice"])) additional_data["choice"] = new_choice.choice_id if new_choice is not None else None new_additional_data_list.append(additional_data) @@ -414,9 +408,7 @@ def __to_dest_annotation_detail( try: outer_file_url = detail["url"] src_response = self.api._execute_http_request("get", outer_file_url) - s3_path = self.upload_data_to_s3( - dest_project_id, data=src_response.content, content_type=src_response.headers["Content-Type"] - ) + s3_path = self.upload_data_to_s3(dest_project_id, data=src_response.content, content_type=src_response.headers["Content-Type"]) dest_detail["path"] = s3_path dest_detail["url"] = None dest_detail["etag"] = None @@ -426,9 +418,7 @@ def __to_dest_annotation_detail( f"外部アノテーションファイル {outer_file_url} のレスポンスのMD5ハッシュ値('{e.uploaded_data_hash}')が、" f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" ) - raise CheckSumError( - message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag - ) from e + raise CheckSumError(message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag) from e return dest_detail @@ -506,17 +496,13 @@ def copy_annotation( self.api.put_annotation(dest.project_id, dest.task_id, dest.input_data_id, request_body=request_body) return True - def __get_label_info_from_label_name( - self, label_name: str, annotation_specs_labels: List[LabelV1] - ) -> Optional[LabelV1]: + def __get_label_info_from_label_name(self, label_name: str, annotation_specs_labels: List[LabelV1]) -> Optional[LabelV1]: for label in annotation_specs_labels: if self.__get_label_name_en(label) == label_name: return label return None - def __get_additional_data_from_attribute_name( - self, attribute_name: str, label_info: LabelV1 - ) -> Optional[AdditionalDataDefinitionV1]: + def __get_additional_data_from_attribute_name(self, attribute_name: str, label_info: LabelV1) -> Optional[AdditionalDataDefinitionV1]: for additional_data in label_info["additional_data_definitions"]: if self.__get_additional_data_definition_name_en(additional_data) == attribute_name: return additional_data @@ -550,7 +536,9 @@ def __to_additional_data_list(self, attributes: Dict[str, Any], label_info: Labe specs_additional_data = self.__get_additional_data_from_attribute_name(key, label_info) if specs_additional_data is None: logger.warning( - "アノテーション仕様の '%s' ラベルに、attribute_name='%s' である属性が存在しません。", self.__get_label_name_en(label_info), key + "アノテーション仕様の '%s' ラベルに、attribute_name='%s' である属性が存在しません。", + self.__get_label_name_en(label_info), + key, ) continue @@ -647,15 +635,11 @@ def __to_annotation_detail_for_request( f"アップロードした外部アノテーションファイル'{outer_file_path}'のMD5ハッシュ値('{e.uploaded_data_hash}')が、" f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" ) - raise CheckSumError( - message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag - ) from e + raise CheckSumError(message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag) from e return dest_obj - def __convert_annotation_specs_labels_v2_to_v1( - self, labels_v2: List[Dict[str, Any]], additionals_v2: List[Dict[str, Any]] - ) -> List[LabelV1]: + def __convert_annotation_specs_labels_v2_to_v1(self, labels_v2: List[Dict[str, Any]], additionals_v2: List[Dict[str, Any]]) -> List[LabelV1]: """アノテーション仕様のV2版からV1版に変換する。V1版の方が扱いやすいので。 Args: @@ -667,9 +651,7 @@ def __convert_annotation_specs_labels_v2_to_v1( """ def get_additional(additional_data_definition_id: str) -> Optional[Dict[str, Any]]: - return more_itertools.first_true( - additionals_v2, pred=lambda e: e["additional_data_definition_id"] == additional_data_definition_id - ) + return more_itertools.first_true(additionals_v2, pred=lambda e: e["additional_data_definition_id"] == additional_data_definition_id) def to_label_v1(label_v2) -> LabelV1: additional_data_definition_id_list = label_v2["additional_data_definitions"] @@ -736,9 +718,7 @@ def put_annotation_for_simple_annotation_json( else annotation_specs_labels ) for detail in details: - request_detail = self.__to_annotation_detail_for_request( - project_id, parser, detail, annotation_specs_labels_v1 - ) + request_detail = self.__to_annotation_detail_for_request(project_id, parser, detail, annotation_specs_labels_v1) if request_detail is not None: request_details.append(request_detail) if len(request_details) == 0: @@ -809,15 +789,13 @@ def __get_dest_additional( break dest_label = more_itertools.first_true( - dest_labels, pred=lambda e: e["label_id"] == dest_label_id # pylint: disable=cell-var-from-loop + dest_labels, + pred=lambda e: e["label_id"] == dest_label_id, # pylint: disable=cell-var-from-loop ) if dest_label is None: dest_label_contains_dest_additional = False break - if ( - dest_additional["additional_data_definition_id"] - not in dest_label["additional_data_definitions"] - ): + if dest_additional["additional_data_definition_id"] not in dest_label["additional_data_definitions"]: dest_label_contains_dest_additional = False break @@ -869,22 +847,19 @@ def get_annotation_specs_relation(self, src_project_id: str, dest_project_id: st if dest_additional is None: continue - dict_additional_data_definition_id[src_additional["additional_data_definition_id"]] = dest_additional[ - "additional_data_definition_id" - ] + dict_additional_data_definition_id[src_additional["additional_data_definition_id"]] = dest_additional["additional_data_definition_id"] dest_choices = dest_additional["choices"] for src_choice in src_additional["choices"]: src_choice_name_en = self.__get_choice_name_en(src_choice) dest_choice = more_itertools.first_true( dest_choices, - pred=lambda e: self.__get_choice_name_en(e) - == src_choice_name_en, # pylint: disable=cell-var-from-loop + pred=lambda e: self.__get_choice_name_en(e) == src_choice_name_en, # pylint: disable=cell-var-from-loop ) if dest_choice is not None: - dict_choice_id[ - ChoiceKey(src_additional["additional_data_definition_id"], src_choice["choice_id"]) - ] = ChoiceKey(dest_additional["additional_data_definition_id"], dest_choice["choice_id"]) + dict_choice_id[ChoiceKey(src_additional["additional_data_definition_id"], src_choice["choice_id"])] = ChoiceKey( + dest_additional["additional_data_definition_id"], dest_choice["choice_id"] + ) return AnnotationSpecsRelation( label_id=dict_label_id, @@ -915,9 +890,7 @@ def get_input_data_or_none(self, project_id: str, input_data_id: str) -> Optiona _raise_for_status(response) return content - def get_all_input_data_list( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None - ) -> List[InputData]: + def get_all_input_data_list(self, project_id: str, query_params: Optional[Dict[str, Any]] = None) -> List[InputData]: """ すべての入力データを取得する。 @@ -928,9 +901,7 @@ def get_all_input_data_list( Returns: 入力データ一覧 """ - return self._get_all_objects( - self.api.get_input_data_list, limit=200, project_id=project_id, query_params=query_params - ) + return self._get_all_objects(self.api.get_input_data_list, limit=200, project_id=project_id, query_params=query_params) def upload_file_to_s3(self, project_id: str, file_path: str, content_type: Optional[str] = None) -> str: """ @@ -959,9 +930,7 @@ def upload_file_to_s3(self, project_id: str, file_path: str, content_type: Optio f"アップロードしたファイル'{file_path}'のMD5ハッシュ値('{e.uploaded_data_hash}')が、" f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" ) - raise CheckSumError( - message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag - ) from e + raise CheckSumError(message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag) from e def upload_data_to_s3(self, project_id: str, data: Any, content_type: str) -> str: """ @@ -998,9 +967,7 @@ def get_md5_value_from_file(fp): s3_url = content["url"].split("?")[0] # アップロード - res_put = self.api._execute_http_request( - http_method="put", url=s3_url, params=query_dict, data=data, headers={"content-type": content_type} - ) + res_put = self.api._execute_http_request(http_method="put", url=s3_url, params=query_dict, data=data, headers={"content-type": content_type}) # アップロードしたファイルが破損していなかをチェックする if hasattr(data, "read"): @@ -1185,9 +1152,7 @@ def wrapper(*args, **kwargs): return wrapper - dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi( - project_id, from_date=from_date, to_date=to_date - ) + dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi(project_id, from_date=from_date, to_date=to_date) func = decorator(self.api.get_account_daily_statistics, project_id) result = self._get_statistics_daily_xxx(func, dt_from_date=dt_from_date, dt_to_date=dt_to_date) @@ -1221,15 +1186,11 @@ def wrapper(*args, **kwargs): return wrapper - dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi( - project_id, from_date=from_date, to_date=to_date - ) + dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi(project_id, from_date=from_date, to_date=to_date) func = decorator(self.api.get_inspection_daily_statistics, project_id) return self._get_statistics_daily_xxx(func, dt_from_date=dt_from_date, dt_to_date=dt_to_date) - def get_phase_daily_statistics( - self, project_id: str, *, from_date: Optional[str] = None, to_date: Optional[str] = None - ) -> List[Dict[str, Any]]: + def get_phase_daily_statistics(self, project_id: str, *, from_date: Optional[str] = None, to_date: Optional[str] = None) -> List[Dict[str, Any]]: """指定した期間の フェーズ別タスク集計データ を取得します。 Args: @@ -1250,15 +1211,11 @@ def wrapper(*args, **kwargs): return wrapper - dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi( - project_id, from_date=from_date, to_date=to_date - ) + dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi(project_id, from_date=from_date, to_date=to_date) func = decorator(self.api.get_phase_daily_statistics, project_id) return self._get_statistics_daily_xxx(func, dt_from_date=dt_from_date, dt_to_date=dt_to_date) - def get_task_daily_statistics( - self, project_id: str, *, from_date: Optional[str] = None, to_date: Optional[str] = None - ) -> List[Dict[str, Any]]: + def get_task_daily_statistics(self, project_id: str, *, from_date: Optional[str] = None, to_date: Optional[str] = None) -> List[Dict[str, Any]]: """指定した期間の タスク集計データ を取得します。 Args: @@ -1279,15 +1236,11 @@ def wrapper(*args, **kwargs): return wrapper - dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi( - project_id, from_date=from_date, to_date=to_date - ) + dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi(project_id, from_date=from_date, to_date=to_date) func = decorator(self.api.get_task_daily_statistics, project_id) return self._get_statistics_daily_xxx(func, dt_from_date=dt_from_date, dt_to_date=dt_to_date) - def get_worktime_daily_statistics( - self, project_id: str, *, from_date: Optional[str] = None, to_date: Optional[str] = None - ) -> Dict[str, Any]: + def get_worktime_daily_statistics(self, project_id: str, *, from_date: Optional[str] = None, to_date: Optional[str] = None) -> Dict[str, Any]: """プロジェクト全体のタスク作業時間集計データを取得します。 Args: @@ -1307,9 +1260,7 @@ def wrapper(*args, **kwargs): return wrapper - dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi( - project_id, from_date=from_date, to_date=to_date - ) + dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi(project_id, from_date=from_date, to_date=to_date) func = decorator(self.api.get_worktime_daily_statistics, project_id) result = self._get_statistics_daily_xxx(func, dt_from_date=dt_from_date, dt_to_date=dt_to_date) return {"project_id": project_id, "data_series": result} @@ -1337,9 +1288,7 @@ def wrapper(*args, **kwargs): return wrapper - dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi( - project_id, from_date=from_date, to_date=to_date - ) + dt_from_date, dt_to_date = self._get_from_and_to_date_for_statistics_webapi(project_id, from_date=from_date, to_date=to_date) func = decorator(self.api.get_worktime_daily_statistics_by_account, project_id, account_id) result = self._get_statistics_daily_xxx(func, dt_from_date=dt_from_date, dt_to_date=dt_to_date) return {"project_id": project_id, "account_id": account_id, "data_series": result} @@ -1348,9 +1297,7 @@ def wrapper(*args, **kwargs): # Public Method : Supplementary ######################################### - def get_supplementary_data_list_or_none( - self, project_id: str, input_data_id: str - ) -> Optional[List[Dict[str, Any]]]: + def get_supplementary_data_list_or_none(self, project_id: str, input_data_id: str) -> Optional[List[Dict[str, Any]]]: """ 補助情報一覧を取得する。存在しない場合(HTTP 404 Error)はNoneを返す。 @@ -1417,9 +1364,7 @@ def put_supplementary_data_from_file( raise AnnofabApiException(f"File type not supported. Content-Type={new_content_type}") copied_request_body["supplementary_data_type"] = supplementary_data_type - return self.api.put_supplementary_data( - project_id, input_data_id, supplementary_data_id, request_body=copied_request_body - )[0] + return self.api.put_supplementary_data(project_id, input_data_id, supplementary_data_id, request_body=copied_request_body)[0] ######################################### # Public Method : Inspection @@ -1461,9 +1406,7 @@ def get_organization_or_none(self, organization_name: str) -> Optional[Organizat _raise_for_status(response) return content - def get_all_projects_of_organization( - self, organization_name: str, query_params: Optional[Dict[str, Any]] = None - ) -> List[Project]: + def get_all_projects_of_organization(self, organization_name: str, query_params: Optional[Dict[str, Any]] = None) -> List[Project]: """ 組織配下のすべてのプロジェクト一覧を取得する @@ -1726,9 +1669,7 @@ def get_project_member_or_none(self, project_id: str, user_id: str) -> Optional[ _raise_for_status(response) return content - def get_all_project_members( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None - ) -> List[ProjectMember]: + def get_all_project_members(self, project_id: str, query_params: Optional[Dict[str, Any]] = None) -> List[ProjectMember]: """ すべてのプロジェクトメンバを取得する. @@ -1819,9 +1760,7 @@ def get_all_tasks(self, project_id: str, query_params: Optional[Dict[str, Any]] """ return self._get_all_objects(self.api.get_tasks, limit=200, project_id=project_id, query_params=query_params) - def change_task_status_to_working( - self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None - ) -> Task: + def change_task_status_to_working(self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None) -> Task: """ タスクのステータスを「作業中」に変更します。 @@ -1848,9 +1787,7 @@ def change_task_status_to_working( updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body) return updated_task - def change_task_status_to_break( - self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None - ) -> Task: + def change_task_status_to_break(self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None) -> Task: """ タスクのステータスを「休憩中」に変更します。 @@ -1878,9 +1815,7 @@ def change_task_status_to_break( updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body) return updated_task - def change_task_status_to_on_hold( - self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None - ) -> Task: + def change_task_status_to_on_hold(self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None) -> Task: """ タスクのステータスを「保留」に変更します。 @@ -1939,9 +1874,7 @@ def complete_task(self, project_id: str, task_id: str, *, last_updated_datetime: updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body) return updated_task - def cancel_submitted_task( - self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None - ) -> Task: + def cancel_submitted_task(self, project_id: str, task_id: str, *, last_updated_datetime: Optional[str] = None) -> Task: """ タスクの提出を取り消します。 「提出されたタスク」とは、以下の状態のタスクのことです。 @@ -2047,9 +1980,7 @@ def change_task_operator( updated_task, _ = self.api.operate_task(project_id, task_id, request_body=request_body) return updated_task - def reject_task( - self, project_id: str, task_id: str, *, force: bool = False, last_updated_datetime: Optional[str] = None - ) -> Dict[str, Any]: + def reject_task(self, project_id: str, task_id: str, *, force: bool = False, last_updated_datetime: Optional[str] = None) -> Dict[str, Any]: """ タスクを差し戻します。 このメソッドを実行すると、`phase`は`annotation`になります。 @@ -2105,9 +2036,7 @@ def get_latest_instruction(self, project_id: str) -> Optional[Instruction]: latest_history_id = histories[0]["history_id"] 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: + def upload_instruction_image(self, project_id: str, image_id: str, file_path: str, content_type: Optional[str] = None) -> str: """ 作業ガイドの画像をアップロードする。 @@ -2148,9 +2077,7 @@ def upload_data_as_instruction_image(self, project_id: str, image_id: str, data: s3_url = content["url"].split("?")[0] # アップロード - self.api._execute_http_request( - http_method="put", url=s3_url, params=query_dict, data=data, headers={"content-type": content_type} - ) + self.api._execute_http_request(http_method="put", url=s3_url, params=query_dict, data=data, headers={"content-type": content_type}) return content["path"] ######################################### @@ -2176,9 +2103,7 @@ def delete_all_succeeded_job(self, project_id: str, job_type: ProjectJobType) -> return deleted_jobs - def get_all_project_job( - self, project_id: str, query_params: Optional[Dict[str, Any]] = None - ) -> List[ProjectJobInfo]: + def get_all_project_job(self, project_id: str, query_params: Optional[Dict[str, Any]] = None) -> List[ProjectJobInfo]: """ すべてのバックグランドジョブを取得する。 @@ -2239,9 +2164,7 @@ def wait_for_completion( Falseならば、ジョブが失敗 or ``max_job_access`` 回アクセスしても、ジョブが完了しなかった。 """ - job_status = self.wait_until_job_finished( - project_id, job_type, job_access_interval=job_access_interval, max_job_access=max_job_access - ) + job_status = self.wait_until_job_finished(project_id, job_type, job_access_interval=job_access_interval, max_job_access=max_job_access) if job_status is None: # 実行中のジョブが存在しない return True @@ -2292,13 +2215,20 @@ def get_job_from_job_id(arg_job_id: str) -> Optional[ProjectJobInfo]: # 初回のみ job = get_latest_job() if job is None or job["job_status"] != JobStatus.PROGRESS.value: - logger.info("project_id='%s', job_type='%s' である進行中のジョブは存在しません。", project_id, job_type.value) + logger.info( + "project_id='%s', job_type='%s' である進行中のジョブは存在しません。", + project_id, + job_type.value, + ) return None job_id = job["job_id"] if job is None: logger.info( - "project_id='%s', job_id='%s', job_type='%s' のジョブは存在しません。", project_id, job_type.value, job_id + "project_id='%s', job_id='%s', job_type='%s' のジョブは存在しません。", + project_id, + job_type.value, + job_id, ) return None @@ -2306,7 +2236,10 @@ def get_job_from_job_id(arg_job_id: str) -> Optional[ProjectJobInfo]: if job["job_status"] == JobStatus.SUCCEEDED.value: logger.info( - "project_id='%s', job_id='%s', job_type='%s' のジョブが成功しました。", project_id, job_id, job_type.value + "project_id='%s', job_id='%s', job_type='%s' のジョブが成功しました。", + project_id, + job_id, + job_type.value, ) return JobStatus.SUCCEEDED @@ -2354,9 +2287,7 @@ async def _wait_until_job_finished_async( max_job_access: int, ) -> Optional[JobStatus]: loop = asyncio.get_event_loop() - return await loop.run_in_executor( - None, self.wait_until_job_finished, project_id, job_type, job_id, job_access_interval, max_job_access - ) + return await loop.run_in_executor(None, self.wait_until_job_finished, project_id, job_type, job_id, job_access_interval, max_job_access) def can_execute_job(self, project_id: str, job_type: ProjectJobType) -> bool: """ diff --git a/pyproject.toml b/pyproject.toml index 530d2754..9995a93c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,7 @@ plugins = ["numpy.typing.mypy_plugin"] [tool.ruff] target-version = "py38" -line-length = 120 +line-length = 150 [tool.ruff.lint] ignore = [ diff --git a/tests/create_test_project.py b/tests/create_test_project.py index 7fb574ae..824e3ea3 100644 --- a/tests/create_test_project.py +++ b/tests/create_test_project.py @@ -94,19 +94,13 @@ def create_input_data(self, project_id: str, input_data_id: str, image_path: str "input_data_name": "Annofab Logo Image", "input_data_path": "https://annofab.com/images/logo.png", } - self.service.wrapper.put_input_data_from_file( - project_id, input_data_id=input_data_id, file_path=image_path, request_body=request_body - ) + self.service.wrapper.put_input_data_from_file(project_id, input_data_id=input_data_id, file_path=image_path, request_body=request_body) logger.debug(f"入力データを登録しました。input_data_id={input_data_id}") return - def create_supplementary_data( - self, project_id: str, input_data_id: str, supplementary_data_id: str, supplementary_data_path: str - ): + def create_supplementary_data(self, project_id: str, input_data_id: str, supplementary_data_id: str, supplementary_data_path: str): supplementary_data_list, _ = self.service.api.get_supplementary_data_list(project_id, input_data_id) - old_supplementary_data = first_true( - supplementary_data_list, pred=lambda e: e["supplementary_data_id"] == supplementary_data_id - ) + old_supplementary_data = first_true(supplementary_data_list, pred=lambda e: e["supplementary_data_id"] == supplementary_data_id) if old_supplementary_data is not None: logger.debug(f"補助情報はすでに存在していたので、登録しません。supplementary_data_id={supplementary_data_id}") return @@ -145,9 +139,7 @@ def upload_instruction(self, project_id: str): logger.debug("作業ガイドはすでに登録されているので、登録しません。") return - image_url = self.service.wrapper.upload_instruction_image( - project_id, image_id=str(uuid.uuid4()), file_path="tests/data/lenna.png" - ) + image_url = self.service.wrapper.upload_instruction_image(project_id, image_id=str(uuid.uuid4()), file_path="tests/data/lenna.png") html_data = f"Test Instruction " last_updated_datetime = histories[0]["updated_datetime"] if len(histories) > 0 else None put_request_body = {"html": html_data, "last_updated_datetime": last_updated_datetime} @@ -218,9 +210,7 @@ def add_inspection_comment( } ] - return self.service.api.batch_update_inspections( - project_id, task["task_id"], input_data_id, request_body=req_inspection - )[0] + return self.service.api.batch_update_inspections(project_id, task["task_id"], input_data_id, request_body=req_inspection)[0] def create_inspection_comment(self, project_id: str, task_id: str, input_data_id: str): """ @@ -237,9 +227,7 @@ def create_inspection_comment(self, project_id: str, task_id: str, input_data_id task, _ = self.service.api.get_task(project_id, task_id) if task["phase"] != TaskPhase.ACCEPTANCE.value: # 受け入れフェーズに移行する - self.service.wrapper.change_task_operator( - project_id, task_id, operator_account_id=self.service.api.account_id - ) + self.service.wrapper.change_task_operator(project_id, task_id, operator_account_id=self.service.api.account_id) self.service.wrapper.change_task_status_to_working(project_id, task_id) self.service.wrapper.complete_task(project_id, task_id) @@ -292,11 +280,17 @@ def main(self, organization_name: str, project_title: Optional[str] = None) -> N def parse_args(): parser = ArgumentParser( - description="annofabapiのテスト用プロジェクトを生成します。", formatter_class=argparse.ArgumentDefaultsHelpFormatter + description="annofabapiのテスト用プロジェクトを生成します。", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument("-org", "--organization", type=str, required=True, help="プロジェクトを作成する対象の組織を指定してください。") - parser.add_argument("--project_title", type=str, default=DEFAULT_PROJECT_TITLE, help="作成するプロジェクトのタイトルを指定してください。") + parser.add_argument( + "--project_title", + type=str, + default=DEFAULT_PROJECT_TITLE, + help="作成するプロジェクトのタイトルを指定してください。", + ) return parser.parse_args() diff --git a/tests/test_api.py b/tests/test_api.py index e6038832..571f6f0a 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -2,6 +2,7 @@ AnnofabApi, Wrapperのテストコード """ + from __future__ import annotations import configparser @@ -73,9 +74,7 @@ def test_get_annotation(self): SimpleAnnotation.from_dict(annotation) def test_get_editor_annotation(self): - editor_annotation, _ = api.get_editor_annotation( - project_id, task_id, self.input_data_id, query_params={"v": "2"} - ) + editor_annotation, _ = api.get_editor_annotation(project_id, task_id, self.input_data_id, query_params={"v": "2"}) assert type(editor_annotation) == dict # dataclassに変換できることの確認 AnnotationV2Output.from_dict(editor_annotation) @@ -391,14 +390,10 @@ def test_wrapper_download_project_tasks_url(self): assert wrapper.download_project_tasks_url(project_id, f"{out_dir}/tasks.json").startswith("https://") def test_wrapper_download_project_task_history_events_url(self): - assert wrapper.download_project_task_history_events_url( - project_id, f"{out_dir}/task_history_events.json" - ).startswith("https://") + assert wrapper.download_project_task_history_events_url(project_id, f"{out_dir}/task_history_events.json").startswith("https://") def test_wrapper_download_project_task_histories_url(self): - assert wrapper.download_project_task_histories_url(project_id, f"{out_dir}/task_histories.json").startswith( - "https://" - ) + assert wrapper.download_project_task_histories_url(project_id, f"{out_dir}/task_histories.json").startswith("https://") def test_wrapper_download_project_comments_url(self): assert wrapper.download_project_comments_url(project_id, f"{out_dir}/comments.json").startswith("https://") @@ -477,15 +472,11 @@ def test_wrapper_get_worktime_daily_statistics(self): assert type(actual) == dict def test_wrapper_get_worktime_daily_statistics_by_account(self): - actual = wrapper.get_worktime_daily_statistics_by_account( - project_id, account_id=api.account_id, from_date="2021-04-01", to_date="2021-06-30" - ) + actual = wrapper.get_worktime_daily_statistics_by_account(project_id, account_id=api.account_id, from_date="2021-04-01", to_date="2021-06-30") assert type(actual) == dict # 最大取得期間の3ヶ月を超えている場合 - actual = wrapper.get_worktime_daily_statistics_by_account( - project_id, account_id=api.account_id, from_date="2021-04-01", to_date="2021-07-01" - ) + actual = wrapper.get_worktime_daily_statistics_by_account(project_id, account_id=api.account_id, from_date="2021-04-01", to_date="2021-07-01") assert type(actual) == dict # 開始日と終了日を指定しない場合 @@ -646,9 +637,7 @@ def test_scenario(self): assert first_true(webhook_list, pred=lambda e: e["webhook_id"] == test_webhook_id) is not None # Webhookのテスト実行 - test_webhook_response, _ = api.test_webhook( - project_id, test_webhook_id, request_body={"placeholders": {"PROJECT_ID": "foo"}} - ) + test_webhook_response, _ = api.test_webhook(project_id, test_webhook_id, request_body={"placeholders": {"PROJECT_ID": "foo"}}) assert test_webhook_response["result"] == "success" assert test_webhook_response["response_status"] == 200 diff --git a/tests/test_api2.py b/tests/test_api2.py index 9958d971..698fea3a 100644 --- a/tests/test_api2.py +++ b/tests/test_api2.py @@ -2,6 +2,7 @@ AnnofabApi2のテストメソッド """ + import configparser import os diff --git a/tests/test_local_parser.py b/tests/test_local_parser.py index f8f28431..04e807d9 100644 --- a/tests/test_local_parser.py +++ b/tests/test_local_parser.py @@ -87,13 +87,9 @@ def test_SimpleAnnotationDirParserByTask(self): assert str(annotation_dir / "sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json") in json_file_path_list assert str(annotation_dir / "sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json") in json_file_path_list - input_data_parser = task_parser.get_parser( - str(annotation_dir / "sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json") - ) + input_data_parser = task_parser.get_parser(str(annotation_dir / "sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json")) assert input_data_parser.input_data_id == "c6e1c2ec-6c7c-41c6-9639-4244c2ed2839" - assert input_data_parser.json_file_path == str( - test_dir / "simple-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json" - ) + assert input_data_parser.json_file_path == str(test_dir / "simple-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json") def test_SimpleAnnotationZipParserByTask(self): with zipfile.ZipFile(test_dir / "simple-annotation.zip") as zip_file: @@ -106,7 +102,7 @@ def test_SimpleAnnotationZipParserByTask(self): input_data_parser = task_parser.get_parser("sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json") assert input_data_parser.input_data_id == "c6e1c2ec-6c7c-41c6-9639-4244c2ed2839" - assert input_data_parser.json_file_path == str("sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json") + assert input_data_parser.json_file_path == "sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json" class TestSimpleAnnotation: @@ -208,9 +204,7 @@ def test_full_annotation_dir(self): assert index == 4 - parser_full = FullAnnotationDirParser( - Path(f"{test_dir}/full-annotation/sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json") - ) + parser_full = FullAnnotationDirParser(Path(f"{test_dir}/full-annotation/sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json")) assert parser_full.task_id == "sample_1" assert parser_full.input_data_id == "c86205d1-bdd4-4110-ae46-194e661d622b" diff --git a/tests/test_local_resource.py b/tests/test_local_resource.py index 945866fd..4f9c7a46 100644 --- a/tests/test_local_resource.py +++ b/tests/test_local_resource.py @@ -1,6 +1,7 @@ """ resource.pyのテストコード """ + import os import pytest diff --git a/tests/test_local_utils.py b/tests/test_local_utils.py index 03ed7d56..e07cc3ea 100644 --- a/tests/test_local_utils.py +++ b/tests/test_local_utils.py @@ -246,9 +246,7 @@ def test_get_task_history_index_skipped_inspection_検査2回_検査1回目で assert all([a == b for a, b in zip(actual, expected)]) def test_get_number_of_rejections_教師付1回目(self): - task_history_short_list: list[dict[str, Any]] = [ - {"account_id": self.ACCOUNT_ID, "phase": "annotation", "phase_stage": 1, "worked": True} - ] + task_history_short_list: list[dict[str, Any]] = [{"account_id": self.ACCOUNT_ID, "phase": "annotation", "phase_stage": 1, "worked": True}] actual = get_number_of_rejections(task_history_short_list, TaskPhase.ACCEPTANCE) assert actual == 0 diff --git a/tests/test_sandbox.py b/tests/test_sandbox.py index bdf419c7..1ad99b9e 100644 --- a/tests/test_sandbox.py +++ b/tests/test_sandbox.py @@ -1,6 +1,7 @@ """ Annofabプロジェクトやタスクに大きく依存したテストコードです。 """ + import configparser import os @@ -35,9 +36,7 @@ def test_wrapper_put_annotation_for_simple_annotation_json_v1(self): project_id=project_id, task_id="sample_0", input_data_id="0733d1e1-ef85-455e-aec0-ff05c499b711", - simple_annotation_json=str( - test_dir + "/simple-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json" - ), + simple_annotation_json=str(test_dir + "/simple-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json"), annotation_specs_labels=annotation_specs_v1["labels"], ) @@ -48,9 +47,7 @@ def test_wrapper_put_annotation_for_simple_annotation_json_v2(self): project_id=project_id, task_id="sample_0", input_data_id="0733d1e1-ef85-455e-aec0-ff05c499b711", - simple_annotation_json=str( - test_dir + "/simple-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json" - ), + simple_annotation_json=str(test_dir + "/simple-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json"), annotation_specs_labels=annotation_specs_v2["labels"], annotation_specs_additionals=annotation_specs_v2["additionals"], ) diff --git a/tests/tests_local_api.py b/tests/tests_local_api.py index 300b8d1c..bb148b05 100644 --- a/tests/tests_local_api.py +++ b/tests/tests_local_api.py @@ -27,7 +27,7 @@ def test_assert_retry(self): assert self.requestexception_connectionerror_then_true(log) is True assert 2 == len(log) print(log) - assert isinstance(type((log[0])), requests.exceptions.RequestException) + assert isinstance(type(log[0]), requests.exceptions.RequestException) assert isinstance(type(log[1]), ConnectionError) @my_backoff @@ -97,9 +97,7 @@ def test_assert_not_retry(self): class Test__create_request_body_for_logger: def test_data_dict(self): - actual = _create_request_body_for_logger( - {"foo": "1", "password": "x", "new_password": "y", "old_password": "z"} - ) + actual = _create_request_body_for_logger({"foo": "1", "password": "x", "new_password": "y", "old_password": "z"}) assert actual == {"foo": "1", "password": "***", "new_password": "***", "old_password": "***"} def test_data_dict2(self): From 813eb5c4bf1cd184f1143de37a419b30c7b59be3 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 14:21:34 +0900 Subject: [PATCH 03/13] =?UTF-8?q?lint=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- annofabapi/generated_api.py | 1 + annofabapi/models.py | 1982 ++++++++++++++++++----------------- annofabapi/wrapper.py | 80 +- pyproject.toml | 1 + 4 files changed, 1034 insertions(+), 1030 deletions(-) diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py index da3962d0..00cb920a 100644 --- a/annofabapi/generated_api.py +++ b/annofabapi/generated_api.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/models.py b/annofabapi/models.py index fe0427ca..dc465159 100644 --- a/annofabapi/models.py +++ b/annofabapi/models.py @@ -1,3 +1,5 @@ + +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace @@ -22,7 +24,7 @@ Example: ``12345678-abcd-1234-abcd-1234abcd5678`` - + """ UserId = NewType("UserId", str) @@ -169,7 +171,7 @@ Kyes of Dict * token: str - [inviteOrganizationMember](#operation/inviteOrganizationMember) APIで送信された招待メールに記載されているトークンです。 メールに記載されているURLの`invitation-token`クエリパラメータの値が、トークンになります。 + [inviteOrganizationMember](#operation/inviteOrganizationMember) APIで送信された招待メールに記載されているトークンです。 メールに記載されているURLの`invitation-token`クエリパラメータの値が、トークンになります。 """ @@ -180,23 +182,23 @@ Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * email: str メールアドレス * lang: Lang - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * keylayout: KeyLayout - + * authority: str システム内部用のプロパティ * account_type: str - アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント + アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント * updated_datetime: str 更新日時 @@ -209,7 +211,7 @@ Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * by_tasks: List[WorktimeStatisticsItem] タスクごとに計算した「画像1枚あたりの作業時間平均」の統計(動画プロジェクトの場合は空リスト) * by_inputs: List[WorktimeStatisticsItem] @@ -226,7 +228,7 @@ Kyes of Dict * inspection: Inspection - + * type: str ActionRequired @@ -234,7 +236,7 @@ AdditionalDataDefaultType = Dict[str, Any] """ -属性の初期値です。 初期値を設定する場合、属性の種類に応じて次の値を指定してください。 属性の種類に対して有効でない初期値を指定した場合、その初期値は無視されます。 |属性の種類(`type`) | 指定できる初期値| |-----------------|----------| | flag | 真偽値(`true` or `false`)| | integer | 整数値 | | text | 文字列 | | comment | 文字列| | choice | 選択肢(`choices`)の `choice_id` | | select | 選択肢(`choices`)の`choice_id`| 属性の種類が`tracking`または`link`の場合、初期値を設定できません。 初期値を設定しない場合は、nullまたは空文字を指定してください。 +属性の初期値です。 初期値を設定する場合、属性の種類に応じて次の値を指定してください。 属性の種類に対して有効でない初期値を指定した場合、その初期値は無視されます。 |属性の種類(`type`) | 指定できる初期値| |-----------------|----------| | flag | 真偽値(`true` or `false`)| | integer | 整数値 | | text | 文字列 | | comment | 文字列| | choice | 選択肢(`choices`)の `choice_id` | | select | 選択肢(`choices`)の`choice_id`| 属性の種類が`tracking`または`link`の場合、初期値を設定できません。 初期値を設定しない場合は、nullまたは空文字を指定してください。 Kyes of Dict @@ -264,17 +266,17 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * read_only: bool 読み込み専用 * name: InternationalizationMessage - + * default: AdditionalDataDefaultType - + * keybind: List[Keybind] ショートカットキー * type: AdditionalDataDefinitionType - + * choices: List[AdditionalDataDefinitionV1Choices] ドロップダウンまたはラジオボタンの選択肢 * regex: str @@ -284,7 +286,7 @@ class AdditionalDataDefinitionType(Enum): * required: bool リンク属性において、入力を必須とするかどうか * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -295,9 +297,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー @@ -310,21 +312,21 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * read_only: bool 読み込み専用 * name: InternationalizationMessage - + * default: AdditionalDataDefaultType - + * keybind: List[Keybind] ショートカットキー * type: AdditionalDataDefinitionType - + * choices: List[AdditionalDataDefinitionV1Choices] ドロップダウンまたはラジオボタンの選択肢 * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -335,30 +337,30 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * condition: AdditionalDataRestrictionCondition - + """ AdditionalDataRestrictionCondition = Dict[str, Any] """ -属性の制約 * `AdditionalDataRestrictionConditionCanInput`: 属性値の入力を許可するかどうか * `AdditionalDataRestrictionConditionEquals`: 指定した値に等しい * `AdditionalDataRestrictionConditionNotEquals`: 指定した値に等しくない * `AdditionalDataRestrictionConditionMatches`: 指定した正規表現に一致する * `AdditionalDataRestrictionConditionNotMatches`: 指定した正規表現に一致しない * `AdditionalDataRestrictionConditionHasLabel`: 指定したラベルIDに一致する(アノテーションリンク属性限定) * `AdditionalDataRestrictionConditionImply`: 指定した前提条件を満たすときのみ、制約を満たすかどうか 以下のJSONは、「属性IDが`attr2`の属性値が`true`ならば、属性IDが`attr1`の属性値は`choice1`である」という制約を表しています。 ``` { \"additional_data_definition_id\": \"attr1\", \"condition\": { \"_type\": \"Imply\", \"premise\": { \"additional_data_definition_id\": \"attr2\", \"condition\": { \"_type\": \"Equals\", \"value\": \"true\" } }, \"condition\": { \"_type\": \"Equals\", \"value\": \"choice1\" } } } ``` +属性の制約 * `AdditionalDataRestrictionConditionCanInput`: 属性値の入力を許可するかどうか * `AdditionalDataRestrictionConditionEquals`: 指定した値に等しい * `AdditionalDataRestrictionConditionNotEquals`: 指定した値に等しくない * `AdditionalDataRestrictionConditionMatches`: 指定した正規表現に一致する * `AdditionalDataRestrictionConditionNotMatches`: 指定した正規表現に一致しない * `AdditionalDataRestrictionConditionHasLabel`: 指定したラベルIDに一致する(アノテーションリンク属性限定) * `AdditionalDataRestrictionConditionImply`: 指定した前提条件を満たすときのみ、制約を満たすかどうか 以下のJSONは、「属性IDが`attr2`の属性値が`true`ならば、属性IDが`attr1`の属性値は`choice1`である」という制約を表しています。 ``` { \"additional_data_definition_id\": \"attr1\", \"condition\": { \"_type\": \"Imply\", \"premise\": { \"additional_data_definition_id\": \"attr2\", \"condition\": { \"_type\": \"Equals\", \"value\": \"true\" } }, \"condition\": { \"_type\": \"Equals\", \"value\": \"choice1\" } } } ``` Kyes of Dict * type: str - `Imply` [詳しくはこちら](#section/API-Convention/API-_type) + `Imply` [詳しくはこちら](#section/API-Convention/API-_type) * enable: bool - `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 + `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 * value: str 指定された正規表現に一致しないことを要求します。 * labels: List[str] アノテーションリンク属性において、アノテーションリンク先として指定可能なラベルIDを制限します。 * premise: AdditionalDataRestriction - + * condition: AdditionalDataRestrictionCondition - + """ @@ -369,9 +371,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `CanInput` [詳しくはこちら](#section/API-Convention/API-_type) + `CanInput` [詳しくはこちら](#section/API-Convention/API-_type) * enable: bool - `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 + `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 """ @@ -382,7 +384,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `Equals` [詳しくはこちら](#section/API-Convention/API-_type) + `Equals` [詳しくはこちら](#section/API-Convention/API-_type) * value: str 指定された値と等しいことを要求します。 @@ -395,7 +397,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `HasLabel` [詳しくはこちら](#section/API-Convention/API-_type) + `HasLabel` [詳しくはこちら](#section/API-Convention/API-_type) * labels: List[str] アノテーションリンク属性において、アノテーションリンク先として指定可能なラベルIDを制限します。 @@ -408,11 +410,11 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `Imply` [詳しくはこちら](#section/API-Convention/API-_type) + `Imply` [詳しくはこちら](#section/API-Convention/API-_type) * premise: AdditionalDataRestriction - + * condition: AdditionalDataRestrictionCondition - + """ @@ -423,7 +425,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `Matches` [詳しくはこちら](#section/API-Convention/API-_type) + `Matches` [詳しくはこちら](#section/API-Convention/API-_type) * value: str 指定された正規表現に一致することを要求します。 @@ -436,9 +438,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `NotEquals` [詳しくはこちら](#section/API-Convention/API-_type) + `NotEquals` [詳しくはこちら](#section/API-Convention/API-_type) * value: str - 指定された値と異なることを要求します。 `value`に`\"\"`を指定することで、入力を必須とすることができます。 + 指定された値と異なることを要求します。 `value`に`\"\"`を指定することで、入力を必須とすることができます。 """ @@ -449,7 +451,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `NotMatches` [詳しくはこちら](#section/API-Convention/API-_type) + `NotMatches` [詳しくはこちら](#section/API-Convention/API-_type) * value: str 指定された正規表現に一致しないことを要求します。 @@ -462,15 +464,15 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * flag: bool - `additional_data_definition`の`type`が`flag`のときの属性値。 + `additional_data_definition`の`type`が`flag`のときの属性値。 * integer: int - `additional_data_definition`の`type`が`integer`のときの属性値。 + `additional_data_definition`の`type`が`integer`のときの属性値。 * comment: str - `additional_data_definition`の`type`が`text`,`comment`,`link` または `tracking`のときの属性値。 + `additional_data_definition`の`type`が`text`,`comment`,`link` または `tracking`のときの属性値。 * choice: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -481,26 +483,26 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * value: AdditionalDataValue - + """ AdditionalDataValue = Dict[str, Any] """ -属性値 +属性値 Kyes of Dict * type: str - + * value: str トラッキングID属性の属性値 * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 """ @@ -511,9 +513,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -524,7 +526,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: str 自由記述(1行)の属性値 @@ -537,7 +539,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: bool ON/OFF属性の属性値。 ONの時trueとなります @@ -550,7 +552,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: int 整数属性の属性値 @@ -563,9 +565,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 """ @@ -576,9 +578,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -589,7 +591,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: str 自由記述(複数行)の属性値 @@ -602,7 +604,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: str トラッキングID属性の属性値 @@ -629,7 +631,7 @@ class AnnotationDataHoldingType(Enum): AnnotationDataV1 = Dict[str, Any] """ -アノテーションの座標値や区間などのデータ。 APIのレスポンスから参照される場合は、`FullAnnotationDataString`形式です。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディは、`FullAnnotationDataString`形式または`FullAnnotationData`形式に対応しています。 +アノテーションの座標値や区間などのデータ。 APIのレスポンスから参照される場合は、`FullAnnotationDataString`形式です。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディは、`FullAnnotationDataString`形式または`FullAnnotationData`形式に対応しています。 Kyes of Dict @@ -638,14 +640,14 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailContentInput = Dict[str, Any] """ -- **AnnotationDetailContentInputInner** - アノテーションのデータ部をJSON内部に保持する場合、この型を利用します - **AnnotationDetailContentInputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持する場合、この型を利用します +- **AnnotationDetailContentInputInner** - アノテーションのデータ部をJSON内部に保持する場合、この型を利用します - **AnnotationDetailContentInputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持する場合、この型を利用します Kyes of Dict * type: str - + * data: FullAnnotationData - + * path: str 外部ファイルの位置を示す文字列。 [createTempPath](#operation/createTempPath) APIによって取得したpathを指定します。 @@ -658,9 +660,9 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * data: FullAnnotationData - + """ @@ -671,7 +673,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * path: str 外部ファイルの位置を示す文字列。 [createTempPath](#operation/createTempPath) APIによって取得したpathを指定します。 @@ -679,14 +681,14 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailContentOutput = Dict[str, Any] """ -- **AnnotationDetailContentOutputInner** - アノテーションのデータ部をJSON内部に保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputInnerUnknown** - アノテーションのデータ部をJSON内部に保持しており、且つ、AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります - 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します - **AnnotationDetailContentOutputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputOuterUnresolved** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持しており、且つ、Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります +- **AnnotationDetailContentOutputInner** - アノテーションのデータ部をJSON内部に保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputInnerUnknown** - アノテーションのデータ部をJSON内部に保持しており、且つ、AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります - 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します - **AnnotationDetailContentOutputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputOuterUnresolved** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持しており、且つ、Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります Kyes of Dict * type: str - + * data: str - アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
+ アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
* url: str 外部ファイルに保存されたアノテーションの認証済み一時URL * etag: str @@ -701,22 +703,22 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * data: FullAnnotationData - + """ AnnotationDetailContentOutputInnerUnknown = Dict[str, Any] """ -アノテーションのデータ部をJSON内部に保持します。 AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります。 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します。 +アノテーションのデータ部をJSON内部に保持します。 AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります。 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します。 Kyes of Dict * type: str - + * data: str - アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
+ アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
""" @@ -727,7 +729,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * url: str 外部ファイルに保存されたアノテーションの認証済み一時URL * etag: str @@ -737,12 +739,12 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailContentOutputOuterUnresolved = Dict[str, Any] """ -アノテーションのデータ部を外部ファイルの形式(画像など)で保持します。 Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります。 +アノテーションのデータ部を外部ファイルの形式(画像など)で保持します。 Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります。 Kyes of Dict * type: str - + """ @@ -753,25 +755,25 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * is_protected: bool - `true`の場合、アノテーションをアノテーションエディタ上での削除から保護できます。 外部から取り込んだアノテーションに属性を追加するときなどに指定すると、データの削除を防げます。 + `true`の場合、アノテーションをアノテーションエディタ上での削除から保護できます。 外部から取り込んだアノテーションに属性を追加するときなどに指定すると、データの削除を防げます。 * data_holding_type: AnnotationDataHoldingType - + * data: AnnotationDataV1 - + * path: str - 外部ファイルに保存されたアノテーションのパス。`data_holding_type`が`inner`の場合は未指定です。 レスポンスの場合は`annotation_id`と同じ値が格納されます。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は、[createTempPath](#operation/createTempPath) APIで取得できる一時データ保存先S3パスを格納してください。 更新しない場合は、[getEditorAnnotation](#operation/getEditorAnnotation) APIで取得した`path`をそのまま渡せます。 外部ファイルのフォーマットは下表の通りです。
annotation_type形式
segmentation / segmentation_v2 PNG画像。塗りつぶした部分はrgba(255, 255, 255, 1) 、塗りつぶしていない部分はrgba(0, 0, 0, 0)
+ 外部ファイルに保存されたアノテーションのパス。`data_holding_type`が`inner`の場合は未指定です。 レスポンスの場合は`annotation_id`と同じ値が格納されます。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は、[createTempPath](#operation/createTempPath) APIで取得できる一時データ保存先S3パスを格納してください。 更新しない場合は、[getEditorAnnotation](#operation/getEditorAnnotation) APIで取得した`path`をそのまま渡せます。 外部ファイルのフォーマットは下表の通りです。
annotation_type形式
segmentation / segmentation_v2 PNG画像。塗りつぶした部分はrgba(255, 255, 255, 1) 、塗りつぶしていない部分はrgba(0, 0, 0, 0)
* etag: str 外部ファイルに保存されたアノテーションのETag。`data_holding_type`が`inner`の場合、または[putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は未指定です。 * url: str 外部ファイルに保存されたアノテーションの認証済み一時URL。`data_holding_type`が`inner`の場合、または[putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は未指定です。 * additional_data_list: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * created_datetime: str 作成日時 * updated_datetime: str @@ -786,17 +788,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + """ @@ -807,19 +809,19 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentOutput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + * created_datetime: str 作成日時 * updated_datetime: str @@ -834,19 +836,19 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + * created_datetime: str 作成日時 * updated_datetime: str @@ -856,24 +858,24 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailV2Input = Dict[str, Any] """ -- **AnnotationDetailV2Create** - 新規にアノテーションを作成する場合にこの型を利用します。 - **AnnotationDetailV2Import** - 過去にAnnofab内外で作成したアノテーションをそのままインポートする場合にこの型を利用します。 - **AnnotationDetailV2Update** - 既に存在するアノテーションを更新する場合にこの型を利用します +- **AnnotationDetailV2Create** - 新規にアノテーションを作成する場合にこの型を利用します。 - **AnnotationDetailV2Import** - 過去にAnnofab内外で作成したアノテーションをそのままインポートする場合にこの型を利用します。 - **AnnotationDetailV2Update** - 既に存在するアノテーションを更新する場合にこの型を利用します Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * created_datetime: str 作成日時 * updated_datetime: str @@ -897,23 +899,23 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + """ AnnotationEditorFeature = Dict[str, Any] """ -塗りつぶしの作図機能に関する情報 +塗りつぶしの作図機能に関する情報 Kyes of Dict @@ -939,17 +941,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Input] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 + 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 * format_version: str - + """ @@ -970,7 +972,7 @@ class AnnotationDataHoldingType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 + [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 """ @@ -981,23 +983,23 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Output] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 + 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 * format_version: str - + """ AnnotationPropsForEditor = Dict[str, Any] """ -アノテーションエディタ用のアノテーション毎のプロパティです。
ここに含まれているデータはアノテーション結果に反映されず、エディタが利用するために存在します。 エディタ用のデータであるため、たとえば`can_delete`や`can_edit_data`が`false`でも、APIによる編集は妨げません。
ここで定義されているデータを利用して動作を変えるかどうかは、エディタによって異なります。 +アノテーションエディタ用のアノテーション毎のプロパティです。
ここに含まれているデータはアノテーション結果に反映されず、エディタが利用するために存在します。 エディタ用のデータであるため、たとえば`can_delete`や`can_edit_data`が`false`でも、APIによる編集は妨げません。
ここで定義されているデータを利用して動作を変えるかどうかは、エディタによって異なります。 Kyes of Dict @@ -1018,26 +1020,26 @@ class AnnotationDataHoldingType(Enum): AnnotationQuery = Dict[str, Any] """ -アノテーションの絞り込み条件 +アノテーションの絞り込み条件 Kyes of Dict * task_id: str - タスクIDで絞り込みます。 + タスクIDで絞り込みます。 * exact_match_task_id: bool - タスクIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 + タスクIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 * input_data_id: str - 入力データID絞り込みます。 + 入力データID絞り込みます。 * exact_match_input_data_id: bool - 入力データIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 + 入力データIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * attributes: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * updated_from: str - 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、開始日(ISO 8601 拡張形式または基本形式)。 `updated_to` より後の日付が指定された場合、期間指定は開始日・終了日を含む区間[updated_to, updated_from]となる。未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 + 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、開始日(ISO 8601 拡張形式または基本形式)。 `updated_to` より後の日付が指定された場合、期間指定は開始日・終了日を含む区間[updated_to, updated_from]となる。未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 * updated_to: str - 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、終了日(ISO 8601 拡張形式または基本形式)。 未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 + 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、終了日(ISO 8601 拡張形式または基本形式)。 未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 """ @@ -1048,17 +1050,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV3] ラベル * inspection_phrases: List[InspectionPhrase] 定型指摘 * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 * additionals: List[AdditionalDataDefinitionV2] 属性 * restrictions: List[AdditionalDataRestriction] @@ -1066,7 +1068,7 @@ class AnnotationDataHoldingType(Enum): * format_version: str アノテーション仕様のフォーマットのバージョン * annotation_type_version: str - アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 + アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 """ @@ -1079,13 +1081,13 @@ class AnnotationDataHoldingType(Enum): * history_id: str アノテーション仕様の履歴ID * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * updated_datetime: str 更新日時 * url: str アノテーション仕様が格納されたJSONのURL。URLにアクセスするには認証認可が必要です。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment: str 変更内容のコメント @@ -1098,13 +1100,13 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * can_overwrap: bool - 動画プロジェクトのアノテーションに重複配置を許すか否か。 + 動画プロジェクトのアノテーションに重複配置を許すか否か。 """ AnnotationSpecsOption = Dict[str, Any] """ -アノテーション仕様のオプション設定。 現時点では動画プロジェクトでのみ利用・指定可能。動画以外のプロジェクトでは値なし。 動画プロジェクトで値が未指定の場合、AnnotationSpecsOption内の値はすべてデフォルト値が指定されたものとして扱われる。 +アノテーション仕様のオプション設定。 現時点では動画プロジェクトでのみ利用・指定可能。動画以外のプロジェクトでは値なし。 動画プロジェクトで値が未指定の場合、AnnotationSpecsOption内の値はすべてデフォルト値が指定されたものとして扱われる。 Kyes of Dict @@ -1124,13 +1126,13 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 * additionals: List[AdditionalDataDefinitionV2] 属性 * restrictions: List[AdditionalDataRestriction] @@ -1155,13 +1157,13 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1182,15 +1184,15 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * format_version: str アノテーション仕様のフォーマットのバージョン * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1211,17 +1213,17 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * annotation_type_version: str アノテーション種別のバージョン。拡張仕様プラグインを利用している場合に、プラグインに設定されている値が転写されます。 プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 * format_version: str アノテーション仕様のフォーマットのバージョン * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1232,17 +1234,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV1] ラベル * inspection_phrases: List[InspectionPhrase] 定型指摘 * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1253,7 +1255,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV2] ラベル * additionals: List[AdditionalDataDefinitionV2] @@ -1265,11 +1267,11 @@ class AnnotationDataHoldingType(Enum): * format_version: str アノテーション仕様のフォーマットのバージョン * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1280,7 +1282,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV3] ラベル * additionals: List[AdditionalDataDefinitionV2] @@ -1290,15 +1292,15 @@ class AnnotationDataHoldingType(Enum): * inspection_phrases: List[InspectionPhrase] 定型指摘 * annotation_type_version: str - アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 + アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 * format_version: str アノテーション仕様のフォーマットのバージョン * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1313,139 +1315,139 @@ class AnnotationDataHoldingType(Enum): AnnotationTypeFieldDefinitionAnnotationEditorFeature = Dict[str, Any] """ -作図ツール・作図モードのフィールドの定義 +作図ツール・作図モードのフィールドの定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionDisplayLineDirection = Dict[str, Any] """ -線の向き表示/非表示の設定のフィールド定義 +線の向き表示/非表示の設定のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMarginOfErrorTolerance = Dict[str, Any] """ -誤差許容範囲のフィールド定義 +誤差許容範囲のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMinimumArea2d = Dict[str, Any] """ -最小の面積のフィールド定義 +最小の面積のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMinimumSize2d = Dict[str, Any] """ -アノテーションの最小サイズに関する設定のフィールド定義 +アノテーションの最小サイズに関する設定のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMinimumSize2dWithDefaultInsertPosition = Dict[str, Any] """ -アノテーションの最小サイズに関する設定、および最小矩形の挿入位置のフィールド定義 +アノテーションの最小サイズに関する設定、および最小矩形の挿入位置のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionOneBooleanField = Dict[str, Any] """ -真偽値の値をひとつだけ持つフィールドの定義 +真偽値の値をひとつだけ持つフィールドの定義 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * description: InternationalizationMessage - + * initial_value: bool - フィールドの初期値 + フィールドの初期値 * label: InternationalizationMessage - + """ AnnotationTypeFieldDefinitionOneIntegerField = Dict[str, Any] """ -数値の値をひとつだけ持つフィールドの定義 +数値の値をひとつだけ持つフィールドの定義 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * prefix: str - フィールドの前に付与する文字列。 + フィールドの前に付与する文字列。 * postfix: str - フィールドの後に付与する文字列 + フィールドの後に付与する文字列 * description: InternationalizationMessage - + * initial_value: int - フィールドの初期値 + フィールドの初期値 """ AnnotationTypeFieldDefinitionOneStringField = Dict[str, Any] """ -文字列の値をひとつだけ持つフィールドの定義 +文字列の値をひとつだけ持つフィールドの定義 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * prefix: str - フィールドの前に付与する文字列。 + フィールドの前に付与する文字列。 * postfix: str - フィールドの後に付与する文字列 + フィールドの後に付与する文字列 * description: InternationalizationMessage - + * initial_value: str - フィールドの初期値 + フィールドの初期値 """ AnnotationTypeFieldDefinitionVertexCountMinMax = Dict[str, Any] """ -頂点数の最大・最小のフィールド定義 +頂点数の最大・最小のフィールド定義 Kyes of Dict * type: str - + """ @@ -1461,80 +1463,80 @@ class AnnotationTypeFieldMinWarnRule(Enum): AnnotationTypeFieldValue = Dict[str, Any] """ -ユーザー定義アノテーション種別のフィールドに設定される値です。 アノテーション種別のフィールド定義と対応するフィールド値のみ登録を許可されます。 +ユーザー定義アノテーション種別のフィールドに設定される値です。 アノテーション種別のフィールド定義と対応するフィールド値のみ登録を許可されます。 Kyes of Dict * type: str - + * min_warn_rule: AnnotationTypeFieldMinWarnRule - + * min_width: int - + * min_height: int - + * position_for_minimum_bounding_box_insertion: List[int] - 最小矩形の挿入位置を、要素が2の配列で指定します。 + 最小矩形の挿入位置を、要素が2の配列で指定します。 * max_pixel: int - + * min: int - + * max: int - + * min_area: int - + * has_direction: bool - + * append: bool - + * erase: bool - + * freehand: bool - + * rectangle_fill: bool - + * polygon_fill: bool - + * fill_near: bool - + * value: bool - + """ AnnotationTypeFieldValueAnnotationEditorFeature = Dict[str, Any] """ -作図ツール・作図モード +作図ツール・作図モード Kyes of Dict * type: str - + * append: bool - + * erase: bool - + * freehand: bool - + * rectangle_fill: bool - + * polygon_fill: bool - + * fill_near: bool - + """ AnnotationTypeFieldValueDisplayLineDirection = Dict[str, Any] """ -線の向き表示/非表示の設定 +線の向き表示/非表示の設定 Kyes of Dict * type: str - + * has_direction: bool - + """ @@ -1545,7 +1547,7 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + """ @@ -1556,22 +1558,22 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * max_pixel: int - + """ AnnotationTypeFieldValueMinimumArea2d = Dict[str, Any] """ -最小の面積 +最小の面積 Kyes of Dict * type: str - + * min_area: int - + """ @@ -1582,13 +1584,13 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * min_warn_rule: AnnotationTypeFieldMinWarnRule - + * min_width: int - + * min_height: int - + """ @@ -1599,15 +1601,15 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * min_warn_rule: AnnotationTypeFieldMinWarnRule - + * min_width: int - + * min_height: int - + * position_for_minimum_bounding_box_insertion: List[int] - 最小矩形の挿入位置を、要素が2の配列で指定します。 + 最小矩形の挿入位置を、要素が2の配列で指定します。 """ @@ -1618,9 +1620,9 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * value: bool - + """ @@ -1631,9 +1633,9 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * value: int - + """ @@ -1644,24 +1646,24 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * value: str - + """ AnnotationTypeFieldValueVertexCountMinMax = Dict[str, Any] """ -頂点数の最大・最小 +頂点数の最大・最小 Kyes of Dict * type: str - + * min: int - + * max: int - + """ @@ -1672,11 +1674,11 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV1] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str @@ -1691,17 +1693,17 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Input] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 + 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 * format_version: str - + """ @@ -1712,17 +1714,17 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Output] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 + 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 * format_version: str - + """ @@ -1743,17 +1745,17 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: BatchAnnotationV2 - + * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * updated_datetime: str 更新日時 @@ -1766,17 +1768,17 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * updated_datetime: str 更新日時 * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1787,9 +1789,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: BatchAnnotationV1 - + * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1800,9 +1802,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: BatchAnnotationV2 - + * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1813,19 +1815,19 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * additional_data_list: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * updated_datetime: str - アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 + アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 """ @@ -1836,19 +1838,19 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * additional_data_list: List[AdditionalDataV2] - + * updated_datetime: str - アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 + アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 """ @@ -1859,25 +1861,25 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int コメントを作成したときのフェーズのステージ。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_type: str - コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 + コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 * phrases: List[str] - `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) + `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) * comment: str - コメント本文。 + コメント本文。 * comment_node: CommentNode - + * datetime_for_sorting: str - コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 + コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1888,9 +1890,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1901,25 +1903,25 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int コメントを作成したときのフェーズのステージ。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_type: str - コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 + コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 * phrases: List[str] - `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) + `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) * comment: str - コメント本文。 + コメント本文。 * comment_node: CommentNode - + * datetime_for_sorting: str - コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 + コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 * type: str - `Put` [詳しくはこちら](#section/API-Convention/API-_type) + `Put` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1939,11 +1941,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1954,17 +1956,17 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: Inspection - + * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -1975,15 +1977,15 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1994,9 +1996,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: Inspection - + * type: str - `Put` [詳しくはこちら](#section/API-Convention/API-_type) + `Put` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -2016,11 +2018,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -2035,7 +2037,7 @@ class AssigneeRuleOfResubmittedTask(Enum): * min_height: int 高さの最小値[ピクセル] * min_warn_rule: str - サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 + サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 * min_area: int 面積の最小値[平方ピクセル] * max_vertices: int @@ -2043,11 +2045,11 @@ class AssigneeRuleOfResubmittedTask(Enum): * min_vertices: int 頂点数の最小値 * position_for_minimum_bounding_box_insertion: PositionForMinimumBoundingBoxInsertion - + * tolerance: int 許容誤差[ピクセル] * has_direction: bool - `annotation_type` が `polyline` の場合、アノテーションに向きを持たせるかどうかを指定できます。 この値が `true` の場合、Annofabの標準画像エディタ上ではポリラインの向きを示す矢印が描画されるようになります。 `annotationType` が `polyline` 以外の場合は必ず `false` となります。 + `annotation_type` が `polyline` の場合、アノテーションに向きを持たせるかどうかを指定できます。 この値が `true` の場合、Annofabの標準画像エディタ上ではポリラインの向きを示す矢印が描画されるようになります。 `annotationType` が `polyline` 以外の場合は必ず `false` となります。 """ @@ -2058,11 +2060,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * old_password: str - + * new_password: str - + """ @@ -2073,11 +2075,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * red: int - + * green: int - + * blue: int - + """ @@ -2088,29 +2090,29 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int コメントを作成したときのフェーズのステージ。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_type: CommentType - + * phrases: List[str] - `comment_type` の値によって扱いが異なります。 * `onhold` の場合 * 使用しません(空配列) * `inspection` の場合 * 参照している定型指摘のIDリスト + `comment_type` の値によって扱いが異なります。 * `onhold` の場合 * 使用しません(空配列) * `inspection` の場合 * 参照している定型指摘のIDリスト * comment: str - コメント本文。 + コメント本文。 * comment_node: CommentNode - + * datetime_for_sorting: str - コメントのソート順を決める日時。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 + コメントのソート順を決める日時。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 * created_datetime: str コメントの作成日時。 * updated_datetime: str @@ -2120,22 +2122,22 @@ class AssigneeRuleOfResubmittedTask(Enum): CommentNode = Dict[str, Any] """ -コメントのノード固有のデータ。 * `RootComment` - スレッドの先頭のコメント(ルートコメント)。 * `ReplyComment` - あるコメントへの返信コメント。 +コメントのノード固有のデータ。 * `RootComment` - スレッドの先頭のコメント(ルートコメント)。 * `ReplyComment` - あるコメントへの返信コメント。 Kyes of Dict * data: InspectionData - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * status: CommentStatus - + * type: str - `Reply` [詳しくはこちら](#section/API-Convention/API-_type) + `Reply` [詳しくはこちら](#section/API-Convention/API-_type) * root_comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -2166,7 +2168,7 @@ class CommentType(Enum): Kyes of Dict * token: str - + """ @@ -2177,7 +2179,7 @@ class CommentType(Enum): Kyes of Dict * token: str - + """ @@ -2188,11 +2190,11 @@ class CommentType(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * confirmation_code: str - + * new_password: str - + """ @@ -2203,19 +2205,19 @@ class CommentType(Enum): Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * password: str - + * username: str - + * lang: str - + * keylayout: str - + * confirmation_code: str - + """ @@ -2226,9 +2228,9 @@ class CommentType(Enum): Kyes of Dict * token: Token - + * confirmation_code: str - + """ @@ -2239,11 +2241,11 @@ class CommentType(Enum): Kyes of Dict * key: str - 集約対象の `field` の値です。 + 集約対象の `field` の値です。 * count: int - 集約対象 `field` の値が `key` の値と等しかったリソースの件数です。 + 集約対象 `field` の値が `key` の値と等しかったリソースの件数です。 * aggregations: List[AggregationResult] - この集約のサブ集約です。サブ集約がないときは空の配列になります。 + この集約のサブ集約です。サブ集約がないときは空の配列になります。 """ @@ -2254,15 +2256,15 @@ class CommentType(Enum): Kyes of Dict * type: str - `CountResult` [詳しくはこちら](#section/API-Convention/API-_type) + `CountResult` [詳しくはこちら](#section/API-Convention/API-_type) * name: str - 複数の集約を区別するための名前です。 `(フィールド名)_(集約内容)` のように命名されます。例えば `account_id` フィールドを `count` する場合、`account_id_count` となります。 + 複数の集約を区別するための名前です。 `(フィールド名)_(集約内容)` のように命名されます。例えば `account_id` フィールドを `count` する場合、`account_id_count` となります。 * field: str - 集約に使われたリソースのフィールド名です。 リソースの属性のさらに属性を参照するときは、`foo.bar.buz` のようにドット区切りになります。 + 集約に使われたリソースのフィールド名です。 リソースの属性のさらに属性を参照するときは、`foo.bar.buz` のようにドット区切りになります。 * doc_count: int - 集約の件数です。 + 集約の件数です。 * items: List[Count] - 集約結果の値です。 + 集約結果の値です。 """ @@ -2275,7 +2277,7 @@ class CommentType(Enum): * url: str ファイルアップロード用の一時URLです。このURLにファイルをアップロードします。 * path: str - [putInputData](#operation/putInputData) APIや[putSupplementaryData](#operation/putSupplementaryData) APIのリクエストボディに指定するパスです。 + [putInputData](#operation/putInputData) APIや[putSupplementaryData](#operation/putSupplementaryData) APIのリクエストボディに指定するパスです。 """ @@ -2316,9 +2318,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * job: ProjectJobInfo - + * project: Project - + """ @@ -2329,9 +2331,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * label_id: str - + * annotation_ids: List[str] - + * type: str DuplicatedSegmentationV2 @@ -2344,13 +2346,13 @@ class DefaultAnnotationType(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data: AdditionalDataV1 - + * type: str - + """ @@ -2361,13 +2363,13 @@ class DefaultAnnotationType(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str - + """ @@ -2378,7 +2380,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * editor_name: str - エディタ名です。 | editor_nameの値 | エディタ名 | |-----------------|--------------| | image_editor | 画像エディタ | | video_editor | 動画エディタ | | 3d_editor | 3Dエディタ | + エディタ名です。 | editor_nameの値 | エディタ名 | |-----------------|--------------| | image_editor | 画像エディタ | | video_editor | 動画エディタ | | 3d_editor | 3Dエディタ | * value: float エディタ利用時間。単位は時 @@ -2391,7 +2393,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * error_code: str - + * message: str エラーの概要 * ext: __DictStrKeyAnyValue__ @@ -2406,7 +2408,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * errors: List[ErrorItem] - + * context: __DictStrKeyAnyValue__ 内部補足情報 @@ -2419,17 +2421,17 @@ class DefaultAnnotationType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_phase: TaskPhase - + * task_phase_stage: int タスクのフェーズのステージ番号 * task_status: TaskStatus - + * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name: str 入力データ名 * details: List[FullAnnotationDetail] @@ -2437,24 +2439,24 @@ class DefaultAnnotationType(Enum): * updated_datetime: str 更新日時。アノテーションが一つもない場合(教師付作業が未着手のときなど)は、未指定。 * annotation_format_version: str - アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 + アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """ FullAnnotationAdditionalData = Dict[str, Any] """ -属性情報 +属性情報 Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * additional_data_definition_name: InternationalizationMessage - + * type: AdditionalDataDefinitionType - + * value: FullAnnotationAdditionalDataValue - + """ @@ -2465,15 +2467,15 @@ class DefaultAnnotationType(Enum): Kyes of Dict * id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * name: InternationalizationMessage - + """ FullAnnotationAdditionalDataValue = Dict[str, Any] """ -属性値 +属性値 Kyes of Dict @@ -2491,9 +2493,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Choice` + `Choice` * value: FullAnnotationAdditionalDataChoiceValue - + """ @@ -2504,7 +2506,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Comment` + `Comment` * value: str 自由記述 @@ -2517,7 +2519,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Flag` + `Flag` * value: bool フラグのON(true)またはOFF(false) @@ -2530,7 +2532,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Integer` + `Integer` * value: int 整数値 @@ -2564,22 +2566,22 @@ class DefaultAnnotationType(Enum): FullAnnotationData = Dict[str, Any] """ -アノテーションのデータが格納されます。 * `FullAnnotationDataClassification`: 入力データ全体アノテーション * `FullAnnotationDataSegmentation`: 塗りつぶしアノテーション * `FullAnnotationDataSegmentationV2`: 塗りつぶしv2アノテーション * `FullAnnotationDataBoundingBox`: 矩形アノテーション * `FullAnnotationDataPoints`: ポリゴンまたはポリラインアノテーション * `FullAnnotationDataSinglePoint`: 点アノテーション * `FullAnnotationDataRange`: 動画区間アノテーション * `FullAnnotationDataUnknown`: カスタムアノテーション +アノテーションのデータが格納されます。 * `FullAnnotationDataClassification`: 入力データ全体アノテーション * `FullAnnotationDataSegmentation`: 塗りつぶしアノテーション * `FullAnnotationDataSegmentationV2`: 塗りつぶしv2アノテーション * `FullAnnotationDataBoundingBox`: 矩形アノテーション * `FullAnnotationDataPoints`: ポリゴンまたはポリラインアノテーション * `FullAnnotationDataSinglePoint`: 点アノテーション * `FullAnnotationDataRange`: 動画区間アノテーション * `FullAnnotationDataUnknown`: カスタムアノテーション Kyes of Dict * type: str - `Unknown` + `Unknown` * data_uri: str - 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 + 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 * left_top: Point - + * right_bottom: Point - + * points: List[Point] 頂点の座標値 * point: Point - + * begin: float 開始時間(ミリ秒) * end: float @@ -2596,11 +2598,11 @@ class DefaultAnnotationType(Enum): Kyes of Dict * left_top: Point - + * right_bottom: Point - + * type: str - `BoundingBox` + `BoundingBox` """ @@ -2611,7 +2613,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Classification` + `Classification` """ @@ -2624,7 +2626,7 @@ class DefaultAnnotationType(Enum): * points: List[Point] 頂点の座標値 * type: str - `Points` + `Points` """ @@ -2639,7 +2641,7 @@ class DefaultAnnotationType(Enum): * end: float 終了時間(ミリ秒) * type: str - `Range` + `Range` """ @@ -2650,9 +2652,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * data_uri: str - 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 + 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 * type: str - `Segmentation` + `Segmentation` """ @@ -2663,9 +2665,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * data_uri: str - 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 + 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 * type: str - `SegmentationV2` + `SegmentationV2` """ @@ -2676,9 +2678,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * point: Point - + * type: str - `SinglePoint` + `SinglePoint` """ @@ -2691,7 +2693,7 @@ class DefaultAnnotationType(Enum): * data: str アノテーションデータを文字列で表現した値 * type: str - `Unknown` + `Unknown` """ @@ -2702,21 +2704,21 @@ class DefaultAnnotationType(Enum): Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * annotation_type: AnnotationType - + * data_holding_type: AnnotationDataHoldingType - + * data: FullAnnotationData - + * additional_data_list: List[FullAnnotationAdditionalData] - 属性情報。 + 属性情報。 """ @@ -2744,11 +2746,11 @@ class GraphType(Enum): Kyes of Dict * begin: float - + * end: float - + * count: int - + """ @@ -2770,7 +2772,7 @@ class GraphType(Enum): Kyes of Dict * access_token: str - アクセストークン。[login](#operation/login) APIで取得します。 + アクセストークン。[login](#operation/login) APIで取得します。 """ @@ -2781,9 +2783,9 @@ class GraphType(Enum): Kyes of Dict * secret_code: str - TOTPアルゴリズムでワンタイムコードを生成するために使用される、一意に生成された共有秘密コードです。 + TOTPアルゴリズムでワンタイムコードを生成するために使用される、一意に生成された共有秘密コードです。 * qr_code_data: str - MFAを有効化する際、認証アプリで読み込むQRコードに埋め込むデータです。Google AuthenticatorとIIJ SmartKeyに対応しています。 + MFAを有効化する際、認証アプリで読み込むQRコードに埋め込むデータです。Google AuthenticatorとIIJ SmartKeyに対応しています。 """ @@ -2794,31 +2796,31 @@ class GraphType(Enum): Kyes of Dict * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_set_id: str - 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name: str 入力データ名 * input_data_path: str - 入力データの実体が保存されたパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 + 入力データの実体が保存されたパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 * url: str システム内部用のプロパティ * etag: str - [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 + [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 * original_input_data_path: str - システム内部用のプロパティ + システム内部用のプロパティ * updated_datetime: str 更新日時 * sign_required: bool - CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか + CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 * system_metadata: SystemMetadata - + """ @@ -2839,7 +2841,7 @@ class GraphType(Enum): * over_limit: bool 検索結果の件数が1万件を超えた場合は`true`になります。 * aggregations: List[AggregationResult] - システム内部用のプロパティ。 + システム内部用のプロパティ。 """ @@ -2863,13 +2865,13 @@ class InputDataOrder(Enum): * input_data_name: str 入力データ名。ZIPファイルをアップロードする際は、入力データ名のプレフィックスを指定してください。 * input_data_path: str - 入力データの実体が存在するURLです。 Annofabにファイルをアップロードして入力データを作成する場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 入力データの実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 S3プライベートストレージに存在するファイルを入力データとして登録する場合は、事前に[認可の設定](/docs/faq/#m0b240)が必要です。 + 入力データの実体が存在するURLです。 Annofabにファイルをアップロードして入力データを作成する場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 入力データの実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 S3プライベートストレージに存在するファイルを入力データとして登録する場合は、事前に[認可の設定](/docs/faq/#m0b240)が必要です。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * sign_required: bool - CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか。 `true`を指定する場合は,`input_data_path`にAnnofabのAWS IDをTrusted Signerとして登録したCloudFrontのURLを指定してください。 + CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか。 `true`を指定する場合は,`input_data_path`にAnnofabのAWS IDをTrusted Signerとして登録したCloudFrontのURLを指定してください。 * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -2880,15 +2882,15 @@ class InputDataOrder(Enum): Kyes of Dict * input_data_set_id: str - 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_set_name: str 入力データセットの名前 * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_type: InputDataType - + * private_storage_arn: str - AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 + AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 * updated_datetime: str 入力データセットの最終更新日時 @@ -2901,11 +2903,11 @@ class InputDataOrder(Enum): Kyes of Dict * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_summary: InspectionSummary - + * annotation_summaries: List[ValidationError] - + """ @@ -2927,60 +2929,60 @@ class InputDataType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int 検査コメントを付与したときのフェーズのステージ * commenter_account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data: InspectionData - + * parent_inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phrases: List[str] 参照している定型指摘のID。 * comment: str - 検査コメントの中身 + 検査コメントの中身 * status: InspectionStatus - + * created_datetime: str - + * updated_datetime: str - + """ InspectionData = Dict[str, Any] """ -##### スレッドの先頭のコメントである(`parent_inspection_id` に値がない)場合 検査コメントの座標値や区間。 * `InspectionDataPoint`:点で検査コメントを付与したときの座標値 * `InspectionDataPolyline`:ポリラインで検査コメントを付与したときの座標値 * `InspectionDataTime`:検査コメントを付与した区間(動画プロジェクトの場合) * `InspectionDataCustom`:カスタム ##### 返信コメントである(`parent_inspection_id` に値がある)場合 現在は使用しておらず、レスポンスに含まれる値は不定です。APIのレスポンスにこの値を含む場合でも、「スレッドの先頭のコメント」の値を利用してください。 リクエストボディに指定する場合は、スレッドの先頭のコメントと同じ値を指定します。 +##### スレッドの先頭のコメントである(`parent_inspection_id` に値がない)場合 検査コメントの座標値や区間。 * `InspectionDataPoint`:点で検査コメントを付与したときの座標値 * `InspectionDataPolyline`:ポリラインで検査コメントを付与したときの座標値 * `InspectionDataTime`:検査コメントを付与した区間(動画プロジェクトの場合) * `InspectionDataCustom`:カスタム ##### 返信コメントである(`parent_inspection_id` に値がある)場合 現在は使用しておらず、レスポンスに含まれる値は不定です。APIのレスポンスにこの値を含む場合でも、「スレッドの先頭のコメント」の値を利用してください。 リクエストボディに指定する場合は、スレッドの先頭のコメントと同じ値を指定します。 Kyes of Dict * x: int - + * y: int - + * type: str - `Custom` [詳しくはこちら](#section/API-Convention/API-_type) + `Custom` [詳しくはこちら](#section/API-Convention/API-_type) * coordinates: List[InspectionDataPolylineCoordinates] - ポリラインを構成する頂点の配列 + ポリラインを構成する頂点の配列 * start: float 開始時間(ミリ秒)。小数点以下はミリ秒以下を表します。 * end: float 終了時間(ミリ秒)。小数点以下はミリ秒以下を表します。 * data: str - + """ @@ -2991,37 +2993,37 @@ class InputDataType(Enum): Kyes of Dict * data: str - + * type: str - `Custom` [詳しくはこちら](#section/API-Convention/API-_type) + `Custom` [詳しくはこちら](#section/API-Convention/API-_type) """ InspectionDataPoint = Dict[str, Any] """ -問題のある部分を示す座標 +問題のある部分を示す座標 Kyes of Dict * x: int - + * y: int - + * type: str - `Point` [詳しくはこちら](#section/API-Convention/API-_type) + `Point` [詳しくはこちら](#section/API-Convention/API-_type) """ InspectionDataPolyline = Dict[str, Any] """ -問題のある部分を示すポリライン +問題のある部分を示すポリライン Kyes of Dict * coordinates: List[InspectionDataPolylineCoordinates] - ポリラインを構成する頂点の配列 + ポリラインを構成する頂点の配列 * type: str - `Polyline` [詳しくはこちら](#section/API-Convention/API-_type) + `Polyline` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -3032,15 +3034,15 @@ class InputDataType(Enum): Kyes of Dict * x: int - + * y: int - + """ InspectionDataTime = Dict[str, Any] """ -問題のある時間帯を表す区間 +問題のある時間帯を表す区間 Kyes of Dict @@ -3049,7 +3051,7 @@ class InputDataType(Enum): * end: float 終了時間(ミリ秒)。小数点以下はミリ秒以下を表します。 * type: str - `Time` [詳しくはこちら](#section/API-Convention/API-_type) + `Time` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -3073,7 +3075,7 @@ class InputDataType(Enum): * id: str 定型指摘ID * text: InternationalizationMessage - + """ @@ -3084,11 +3086,11 @@ class InputDataType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str 集計日 * breakdown: InspectionStatisticsBreakdown - + """ @@ -3101,7 +3103,7 @@ class InputDataType(Enum): * labels: dict(str, InspectionStatisticsPhrases) ラベルに紐付いている検査コメントの集計結果。キーは`label_id`です。 * no_label: InspectionStatisticsPhrases - + """ @@ -3139,7 +3141,7 @@ class InspectionSummary(Enum): Kyes of Dict * inspection: Inspection - + * type: str IllegalState @@ -3180,13 +3182,13 @@ class InspectionSummary(Enum): Kyes of Dict * image_id: str - 作業ガイド画像ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 作業ガイド画像ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * path: str - 作業ガイド画像の実体が保存されたパスです。 + 作業ガイド画像の実体が保存されたパスです。 * url: str 作業ガイド画像を取得するためのシステム内部用のURLです。 * etag: str - [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 + [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 """ @@ -3210,7 +3212,7 @@ class InspectionSummary(Enum): Kyes of Dict * messages: List[InternationalizationMessageMessages] - 言語コードとメッセージ(テキスト)のリスト。 * アノテーションエディタなどでは、Annofabの表示言語(各ユーザーが個人設定で選んだ言語)のメッセージが使われます * 以下の名前は、[Simple Annotation](#section/Simple-Annotation-ZIP) では `en-US` のメッセージが使われます * ラベル名 * 属性名 * 選択肢名 * いずれの場合でも、表示しようとした言語が `messages` に含まれない場合、 `default_lang` に指定した言語のメッセージが使われます + 言語コードとメッセージ(テキスト)のリスト。 * アノテーションエディタなどでは、Annofabの表示言語(各ユーザーが個人設定で選んだ言語)のメッセージが使われます * 以下の名前は、[Simple Annotation](#section/Simple-Annotation-ZIP) では `en-US` のメッセージが使われます * ラベル名 * 属性名 * 選択肢名 * いずれの場合でも、表示しようとした言語が `messages` に含まれない場合、 `default_lang` に指定した言語のメッセージが使われます * default_lang: str 希望された言語のメッセージが存在しない場合に、フォールバック先として使われる言語コード @@ -3236,11 +3238,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * message: str - + * type: str InvalidAnnotationData @@ -3253,11 +3255,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str InvalidChoice @@ -3270,11 +3272,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str InvalidLinkTarget @@ -3287,11 +3289,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str InvalidValue @@ -3304,7 +3306,7 @@ class InspectionSummary(Enum): Kyes of Dict * role: OrganizationMemberRole - + """ @@ -3321,9 +3323,9 @@ class InspectionSummary(Enum): * project_token: str [issueProjectToken](#operation/issueProjectToken)で発行されたトークン文字列 * role: str - ゲストユーザーのプロジェクト上でのロール * `worker` - アノテーター * `accepter` - チェッカー + ゲストユーザーのプロジェクト上でのロール * `worker` - アノテーター * `accepter` - チェッカー * profile: ProjectGuestUserProfile - + """ @@ -3368,7 +3370,7 @@ class KeyLayout(Enum): Kyes of Dict * code: str - [KeyboardEvent.code](https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent/code)に相当する値です。 + [KeyboardEvent.code](https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent/code)に相当する値です。 * shift: bool Shiftキーを押しているかどうか * ctrl: bool @@ -3385,7 +3387,7 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * completed: int ラベルごとの受入が完了したアノテーション数 * wip: int @@ -3400,25 +3402,25 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー * annotation_type: AnnotationType - + * bounding_box_metadata: BoundingBoxMetadata - + * segmentation_metadata: SegmentationMetadata - + * additional_data_definitions: List[AdditionalDataDefinitionV1] 属性 * color: Color - + * annotation_editor_feature: AnnotationEditorFeature - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -3429,25 +3431,25 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー * annotation_type: AnnotationType - + * bounding_box_metadata: BoundingBoxMetadata - + * segmentation_metadata: SegmentationMetadata - + * additional_data_definitions: List[str] ラベルに所属する属性のID * color: Color - + * annotation_editor_feature: AnnotationEditorFeature - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -3458,21 +3460,21 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー * annotation_type: AnnotationType - + * field_values: dict(str, AnnotationTypeFieldValue) - KeyがフィールドIdであるDictionaryです。 カスタムの[組織プラグイン](#operation/putOrganizationPlugin)で利用される[UserDefinedAnnotationTypeDefinition](#section/UserDefinedAnnotationTypeDefinition).`field_definitions`で定義されます。 + KeyがフィールドIdであるDictionaryです。 カスタムの[組織プラグイン](#operation/putOrganizationPlugin)で利用される[UserDefinedAnnotationTypeDefinition](#section/UserDefinedAnnotationTypeDefinition).`field_definitions`で定義されます。 * additional_data_definitions: List[str] ラベルに所属する属性のID * color: Color - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -3505,7 +3507,7 @@ class Lang(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * password: str パスワード @@ -3520,7 +3522,7 @@ class Lang(Enum): * mfa_code: str MFAコード。Time-based One-time Password (TOTP) のみ対応している * session: str - [login API](#operation/login)が返したセッション + [login API](#operation/login)が返したセッション """ @@ -3531,7 +3533,7 @@ class Lang(Enum): Kyes of Dict * token: Token - + * session: str セッション @@ -3544,7 +3546,7 @@ class Lang(Enum): Kyes of Dict * token: Token - + """ @@ -3555,11 +3557,11 @@ class Lang(Enum): Kyes of Dict * marker_id: str - マーカーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + マーカーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str マーカーのタイトル * graph_type: GraphType - + * marked_at: str グラフ上のマーカー位置(x軸) @@ -3572,7 +3574,7 @@ class Lang(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * markers: List[Marker] マーカー一覧 * updated_datetime: str @@ -3604,19 +3606,19 @@ class Lang(Enum): * message_id: str システム内部用のプロパティ * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_type: ProjectJobType - + * job_id: str - ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_status: JobStatus - + * job_execution: __DictStrKeyAnyValue__ ジョブの内部情報 * job_detail: __DictStrKeyAnyValue__ ジョブ結果の内部情報 * errors: Errors - + * created_datetime: str 作成日時 * updated_datetime: str @@ -3642,23 +3644,23 @@ class Lang(Enum): Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * email: str メールアドレス * lang: Lang - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * keylayout: KeyLayout - + * authority: str システム内部用のプロパティ * account_type: str - アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント + アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント * updated_datetime: str 更新日時 * reset_requested_email: str @@ -3688,17 +3690,17 @@ class Lang(Enum): Kyes of Dict * messages: List[MyNotificationMessage] - + * opened: int - 開封済みの通知メッセージの数。 over_limitがtrueの場合、メッセージのタイムスタンプが新しい順から10000件のメッセージをもとに集計される + 開封済みの通知メッセージの数。 over_limitがtrueの場合、メッセージのタイムスタンプが新しい順から10000件のメッセージをもとに集計される * total: int - 通知メッセージの総数 + 通知メッセージの総数 * page: int - messagesに含まれる通知メッセージが何ページ目のものか + messagesに含まれる通知メッセージが何ページ目のものか * page_total: int - ページ数の総数 + ページ数の総数 * over_limit: bool - 通知メッセージの取得上限を超えているか + 通知メッセージの取得上限を超えているか """ @@ -3709,19 +3711,19 @@ class Lang(Enum): Kyes of Dict * message_id: str - 通知メッセージID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 通知メッセージID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str - メッセージ通知のタイトル + メッセージ通知のタイトル * body: str - メッセージ通知の本文 + メッセージ通知の本文 * content_type: str - メッセージのコンテンツタイプ。 メッセージを表示する際のマークアップのヒントとして使われることを想定しています。 + メッセージのコンテンツタイプ。 メッセージを表示する際のマークアップのヒントとして使われることを想定しています。 * opened: bool - 自身がメッセージを開封したか(開封済みの場合true) + 自身がメッセージを開封したか(開封済みの場合true) * timestamp: str - 最後に通知メッセージ内容を更新した日時。更新がない場合はメッセージ作成日時 + 最後に通知メッセージ内容を更新した日時。更新がない場合はメッセージ作成日時 * created_datetime: str - メッセージ作成日時 + メッセージ作成日時 """ @@ -3743,23 +3745,23 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * name: str - + * email: str - + * price_plan: PricePlan - + * summary: __DictStrKeyAnyValue__ - 廃止予定のプロパティです。常に中身は空です。 + 廃止予定のプロパティです。常に中身は空です。 * created_datetime: str 作成日時 * updated_datetime: str 更新日時 * my_role: OrganizationMemberRole - + * my_status: OrganizationMemberStatus - + """ @@ -3780,7 +3782,7 @@ class Lang(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ。 + システム内部用のプロパティ。 """ @@ -3791,7 +3793,7 @@ class Lang(Enum): Kyes of Dict * inspection: Inspection - + * type: str NoCommentInspection @@ -3804,15 +3806,15 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_name: str - 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) * email: str メールアドレス * price_plan: PricePlan - + * summary: __DictStrKeyAnyValue__ - 廃止予定のプロパティです。常に中身は空です。 + 廃止予定のプロパティです。常に中身は空です。 * created_datetime: str 作成日時 * updated_datetime: str @@ -3827,7 +3829,7 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * created_datetime: str 作成日時 * storage_usage_bytes: int @@ -3842,13 +3844,13 @@ class Lang(Enum): Kyes of Dict * input: str - + * members: str - + * statistics: str - + * organization: str - + """ @@ -3859,23 +3861,23 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_type: str - ジョブの同時実行制御のために用いる、ジョブの種別。 (現在はまだ、この種別に該当するものはありません) + ジョブの同時実行制御のために用いる、ジョブの種別。 (現在はまだ、この種別に該当するものはありません) * job_id: str - ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_status: JobStatus - + * job_execution: __DictStrKeyAnyValue__ ジョブの内部情報 * job_detail: __DictStrKeyAnyValue__ ジョブ結果の内部情報 * errors: Errors - + * created_datetime: str - + * updated_datetime: str - + """ @@ -3899,19 +3901,19 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * role: OrganizationMemberRole - + * status: OrganizationMemberStatus - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * created_datetime: str 作成日時 * updated_datetime: str @@ -3936,7 +3938,7 @@ class Lang(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ + システム内部用のプロパティ """ @@ -3968,21 +3970,21 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * plugin_name: str - プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * description: str - プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * detail: PluginDetail - + * is_builtin: bool trueの場合、プラグインはAnnofab組み込みのプラグインであり、更新や削除を行うことはできません。 * created_datetime: str - + * updated_datetime: str - + """ @@ -3993,22 +3995,22 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * input: OrganizationPluginCompatibilityType - + * output: OrganizationPluginCompatibilityType - + """ OrganizationPluginCompatibilityType = Dict[str, Any] """ -プラグインの入力/出力を表す型です。 +プラグインの入力/出力を表す型です。 Kyes of Dict * type: str - Constant型で、かつidの値が一致している場合に互換性があることを示します。 + Constant型で、かつidの値が一致している場合に互換性があることを示します。 * id: str - + """ @@ -4019,7 +4021,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * type: str - inputに指定した場合、いずれのプラグインも前段になれないことを示します。 outputに指定した場合、いずれのプラグインも後段になれないことを示します。 + inputに指定した場合、いずれのプラグインも前段になれないことを示します。 outputに指定した場合、いずれのプラグインも後段になれないことを示します。 """ @@ -4030,9 +4032,9 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * type: str - Constant型で、かつidの値が一致している場合に互換性があることを示します。 + Constant型で、かつidの値が一致している場合に互換性があることを示します。 * id: str - + """ @@ -4043,7 +4045,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * type: str - inputに指定した場合、あらゆるプラグインの後段になれることを示します。 outputに指定した場合、入力がTopであるプラグインだけが後段になれることを示します。 + inputに指定した場合、あらゆるプラグインの後段になれることを示します。 outputに指定した場合、入力がTopであるプラグインだけが後段になれることを示します。 """ @@ -4064,7 +4066,7 @@ class OrganizationMemberStatus(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[__DictStrKeyAnyValue__] - システム内部用のプロパティ。 + システム内部用のプロパティ。 """ @@ -4075,7 +4077,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * organization_name: str - 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_email: str メールアドレス @@ -4088,9 +4090,9 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * type: str OverlappedRangeAnnotation @@ -4103,7 +4105,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * email: str - + """ @@ -4114,7 +4116,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * phase: TaskPhase - + * worktime: str 累積作業時間(ISO 8601 duration) @@ -4122,90 +4124,90 @@ class OrganizationMemberStatus(Enum): PluginDetail = Dict[str, Any] """ -* `PluginDetailAnnotationEditor` - カスタムアノテーションエディタ用のプラグインを表します。 * `PluginDetailTaskAssignment` - カスタムタスク割当用のプラグインを表します。 * `PluginDetailAnnotationSpecs` - カスタムアノテーション仕様用のプラグインを表します。 * `PluginDetailExtendedAnnotationSpecs` - カスタムのアノテーション種別を作成するプラグインを表します。 +* `PluginDetailAnnotationEditor` - カスタムアノテーションエディタ用のプラグインを表します。 * `PluginDetailTaskAssignment` - カスタムタスク割当用のプラグインを表します。 * `PluginDetailAnnotationSpecs` - カスタムアノテーション仕様用のプラグインを表します。 * `PluginDetailExtendedAnnotationSpecs` - カスタムのアノテーション種別を作成するプラグインを表します。 Kyes of Dict * url: str - カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` + カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * auth_redirect_url: str - 認証後のリダイレクト先 + 認証後のリダイレクト先 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) + `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) * plugin_compatibility: OrganizationPluginCompatibility - + * annotation_types: List[AnnotationType] - プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 + プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 * user_defined_annotation_type_definitions: dict(str, UserDefinedAnnotationTypeDefinition) - Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 + Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 """ PluginDetailAnnotationEditor = Dict[str, Any] """ -カスタムアノテーションエディタ用のプラグインを表します。 +カスタムアノテーションエディタ用のプラグインを表します。 Kyes of Dict * url: str - カスタムアノテーションエディタでタスクを開くための URL です。 プラグインを使用するプロジェクトのタスク一覧などで使用されます。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 この URL には、タスクを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * `{taskId}` 以下のパラメーターは任意で指定します。 * `{inputDataId}`: アノテーション一覧などから、特定の入力データにフォーカスした状態でタスクを開くときなどに指定します。 * `{annotationId}`: アノテーション一覧などから、特定のアノテーションにフォーカスした状態でタスクを開くときなどに指定します。 + カスタムアノテーションエディタでタスクを開くための URL です。 プラグインを使用するプロジェクトのタスク一覧などで使用されます。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 この URL には、タスクを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * `{taskId}` 以下のパラメーターは任意で指定します。 * `{inputDataId}`: アノテーション一覧などから、特定の入力データにフォーカスした状態でタスクを開くときなどに指定します。 * `{annotationId}`: アノテーション一覧などから、特定のアノテーションにフォーカスした状態でタスクを開くときなどに指定します。 * auth_redirect_url: str - 認証後のリダイレクト先。このURLに `?code=xxx` をつけてリダイレクトされます。 url プロパティとは異なり、 `{projectId}` や `{taskId}` といったパラメータの置換は行われません。 詳しくは [requestPluginToken API](#operation/requestPluginToken) を参照してください。 + 認証後のリダイレクト先。このURLに `?code=xxx` をつけてリダイレクトされます。 url プロパティとは異なり、 `{projectId}` や `{taskId}` といったパラメータの置換は行われません。 詳しくは [requestPluginToken API](#operation/requestPluginToken) を参照してください。 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `AnnotationEditor` [詳しくはこちら](#section/API-Convention/API-_type) + `AnnotationEditor` [詳しくはこちら](#section/API-Convention/API-_type) """ PluginDetailAnnotationSpecs = Dict[str, Any] """ -カスタムアノテーション仕様用のプラグインを表します。 +カスタムアノテーション仕様用のプラグインを表します。 Kyes of Dict * url: str - カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` + カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * auth_redirect_url: str - 認証後のリダイレクト先 + 認証後のリダイレクト先 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `AnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) + `AnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) """ PluginDetailExtendedAnnotationSpecs = Dict[str, Any] """ -カスタムのアノテーション種別を作成するプラグインを表します。 なお、このプラグインが設定されているプロジェクトでは、ここで指定したアノテーション種別以外は使用できなくなります。 +カスタムのアノテーション種別を作成するプラグインを表します。 なお、このプラグインが設定されているプロジェクトでは、ここで指定したアノテーション種別以外は使用できなくなります。 Kyes of Dict * plugin_compatibility: OrganizationPluginCompatibility - + * annotation_types: List[AnnotationType] - プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 + プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 * user_defined_annotation_type_definitions: dict(str, UserDefinedAnnotationTypeDefinition) - Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 + Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) + `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) """ PluginDetailTaskAssignment = Dict[str, Any] """ -カスタムタスク割当用のプラグインを表します。 +カスタムタスク割当用のプラグインを表します。 Kyes of Dict * url: str - 「カスタムタスク割当API」のURLです。 プラグイン種別がカスタムタスク割当の場合のみ有効です。 #### カスタムタスク割当APIについて。 * 独自のアルゴリズムで作業者にタスクを割当するAPIです。 * Annofabから提供されるものではなく、第三者 (ユーザー様) が用意します。 * 作業者がタスク一覧やアノテーションエディタのタスク取得ボタンを押すと、指定したURLに複数の情報 (※1) と共にHTTPリクエスト (POST) が送られます。 * カスタムタスク割当APIでは、Annofabで提供しているAPI (※2) を使用して作業者にタスクを割当してください。 * タスクの割当に成功した場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: 割当した単一のタスク * ステータスコード: 200 * 作業者に割当できるタスクがない場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"MISSING_RESOURCE\"}]}` * ステータスコード: 404 * 作業者の認証トークンの期限が切れている場合があります。その場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"EXPIRED_TOKEN\"}]}` * ステータスコード: 401 #### Preflightリクエストについて。 * Annofabからカスタムタスク割当APIへCross-OriginなHTTPリクエストを送信するより前に、ブラウザの仕様により「Preflightリクエスト」と呼ばれるHTTPリクエストが送られます。 * カスタムタスク割当を利用するためには、カスタムタスク割当APIとは別に「Preflightリクエスト対応API」を用意する必要があります。 * 以下の要件を満たす「Preflightリクエスト対応API」を用意してください。 * URL: カスタムタスク割当APIと同じURL * HTTPメソッド: OPTIONS * レスポンスヘッダ: * `Access-Control-Allow-Origin: https://annofab.com` * `Access-Control-Allow-Headers: Content-Type` * レスポンスボディ: 空(から) * ステータスコード: 200 ※1 以下の情報が送られます。 * HTTPボディ (JSON形式) * `authorization_token` : タスク割当専用の認証トークン。AnnofabのAPIを利用する際に使用します。 * `project_id` : タスクの割当リクエストが行われたプロジェクトのID。 * `phase` : 作業者が割当を要求したタスクフェーズ。このフェーズのタスクを割当してください。 ※2 例えば以下のAPIがあります。(詳しい情報はAPIドキュメントを参照してください) * `getMyAccount` : 作業者のアカウント情報を取得できます。 * `getTasks` : プロジェクトのタスクを取得できます。 * `assignTasks` : 作業者にタスクを割当することができます。 + 「カスタムタスク割当API」のURLです。 プラグイン種別がカスタムタスク割当の場合のみ有効です。 #### カスタムタスク割当APIについて。 * 独自のアルゴリズムで作業者にタスクを割当するAPIです。 * Annofabから提供されるものではなく、第三者 (ユーザー様) が用意します。 * 作業者がタスク一覧やアノテーションエディタのタスク取得ボタンを押すと、指定したURLに複数の情報 (※1) と共にHTTPリクエスト (POST) が送られます。 * カスタムタスク割当APIでは、Annofabで提供しているAPI (※2) を使用して作業者にタスクを割当してください。 * タスクの割当に成功した場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: 割当した単一のタスク * ステータスコード: 200 * 作業者に割当できるタスクがない場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"MISSING_RESOURCE\"}]}` * ステータスコード: 404 * 作業者の認証トークンの期限が切れている場合があります。その場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"EXPIRED_TOKEN\"}]}` * ステータスコード: 401 #### Preflightリクエストについて。 * Annofabからカスタムタスク割当APIへCross-OriginなHTTPリクエストを送信するより前に、ブラウザの仕様により「Preflightリクエスト」と呼ばれるHTTPリクエストが送られます。 * カスタムタスク割当を利用するためには、カスタムタスク割当APIとは別に「Preflightリクエスト対応API」を用意する必要があります。 * 以下の要件を満たす「Preflightリクエスト対応API」を用意してください。 * URL: カスタムタスク割当APIと同じURL * HTTPメソッド: OPTIONS * レスポンスヘッダ: * `Access-Control-Allow-Origin: https://annofab.com` * `Access-Control-Allow-Headers: Content-Type` * レスポンスボディ: 空(から) * ステータスコード: 200 ※1 以下の情報が送られます。 * HTTPボディ (JSON形式) * `authorization_token` : タスク割当専用の認証トークン。AnnofabのAPIを利用する際に使用します。 * `project_id` : タスクの割当リクエストが行われたプロジェクトのID。 * `phase` : 作業者が割当を要求したタスクフェーズ。このフェーズのタスクを割当してください。 ※2 例えば以下のAPIがあります。(詳しい情報はAPIドキュメントを参照してください) * `getMyAccount` : 作業者のアカウント情報を取得できます。 * `getTasks` : プロジェクトのタスクを取得できます。 * `assignTasks` : 作業者にタスクを割当することができます。 * type: str - `TaskAssignment` [詳しくはこちら](#section/API-Convention/API-_type) + `TaskAssignment` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -4261,7 +4263,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * access_token: str - APIアクセスに用いるトークン。 リクエストヘッダにおいて `Authorization: Bearer {access_token}` の形で指定します。 + APIアクセスに用いるトークン。 リクエストヘッダにおいて `Authorization: Bearer {access_token}` の形で指定します。 * refresh_token: str トークンの更新に用いるトークン @@ -4282,14 +4284,14 @@ class OrganizationMemberStatus(Enum): PositionForMinimumBoundingBoxInsertion = Dict[str, Any] """ -`annotation_type` が `bounding_box` かつ `min_warn_rule` が `and` または `or` の場合のみ、挿入する最小矩形アノテーションの原点を指定できます。 画像左上の座標が「x=0, y=0」です。 未指定、もしくは「画像外に飛び出たアノテーション」を許可していないにも関わらず飛び出してしまう場合は、表示範囲の中央に挿入されます。 「スキャンした帳票の記入欄」や「定点カメラで撮影した製品ラベル」など、アノテーションしたい位置やサイズが多くの画像で共通している場合に便利です。 `annotation_type` が `bounding_box` 以外の場合は必ず未指定となります。 +`annotation_type` が `bounding_box` かつ `min_warn_rule` が `and` または `or` の場合のみ、挿入する最小矩形アノテーションの原点を指定できます。 画像左上の座標が「x=0, y=0」です。 未指定、もしくは「画像外に飛び出たアノテーション」を許可していないにも関わらず飛び出してしまう場合は、表示範囲の中央に挿入されます。 「スキャンした帳票の記入欄」や「定点カメラで撮影した製品ラベル」など、アノテーションしたい位置やサイズが多くの画像で共通している場合に便利です。 `annotation_type` が `bounding_box` 以外の場合は必ず未指定となります。 Kyes of Dict * x: int - + * y: int - + """ @@ -4300,7 +4302,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * job: ProjectJobInfo - + """ @@ -4315,7 +4317,7 @@ class OrganizationMemberStatus(Enum): * message_id: str システム内部用のプロパティ * job: ProjectJobInfo - + """ @@ -4328,7 +4330,7 @@ class OrganizationMemberStatus(Enum): * enabled: bool MFAをONにするか * mfa_code: str - [initiateMfaSetup](#operation/initiateMfaSetup)が返したシークレットコードを元に生成したTOTP。enabledがtrueの場合に設定する + [initiateMfaSetup](#operation/initiateMfaSetup)が返したシークレットコードを元に生成したTOTP。enabledがtrueの場合に設定する * access_token: str アクセストークン。enabledがtrueの場合に設定する @@ -4341,7 +4343,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * job: ProjectJobInfo - + """ @@ -4362,25 +4364,25 @@ class PricePlan(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str プロジェクトのタイトル * overview: str プロジェクトの概要 * project_status: ProjectStatus - + * input_data_type: InputDataType - + * configuration: ProjectConfiguration - + * created_datetime: str 作成日時 * updated_datetime: str 更新日時 * summary: ProjectSummary - + """ @@ -4391,9 +4393,9 @@ class PricePlan(Enum): Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * histories: List[ProjectAccountStatisticsHistory] - + """ @@ -4404,11 +4406,11 @@ class PricePlan(Enum): Kyes of Dict * date: str - + * tasks_completed: int - 教師付フェーズのタスクを提出した回数、または検査/受入フェーズのタスクを合格/差戻にした回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_completed`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 2
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 合格にする 2020-04-01 12:00
+ 教師付フェーズのタスクを提出した回数、または検査/受入フェーズのタスクを合格/差戻にした回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_completed`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 2
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 合格にする 2020-04-01 12:00
* tasks_rejected: int - 教師付フェーズを担当したタスクが差し戻された回数、または受入フェーズを担当したタスクが受入完了を取り消された回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_rejected`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 1
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 差し戻す 2020-04-01 12:00
Bob 教師付 提出する 2020-04-01 13:00
Chris 受入 合格にする 2020-04-01 14:00
Dave 受入 受入完了状態を取り消して、再度合格にする 2020-04-01 15:00
+ 教師付フェーズを担当したタスクが差し戻された回数、または受入フェーズを担当したタスクが受入完了を取り消された回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_rejected`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 1
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 差し戻す 2020-04-01 12:00
Bob 教師付 提出する 2020-04-01 13:00
Chris 受入 合格にする 2020-04-01 14:00
Dave 受入 受入完了状態を取り消して、再度合格にする 2020-04-01 15:00
* worktime: str 作業時間(ISO 8601 duration) @@ -4421,21 +4423,21 @@ class PricePlan(Enum): Kyes of Dict * input: str - + * members: str - + * project: str - + * instruction: str - + * specs: str - + * statistics: str - + * organization: str - + * supplementary: str - + """ @@ -4446,39 +4448,39 @@ class PricePlan(Enum): Kyes of Dict * number_of_inspections: int - 検査回数。 * 0回:教師付け -> 受入 * 1回:教師付け -> 検査 -> 受入 * n回(n >= 2):教師付け -> 検査1 -> ... -> 検査n -> 受入 + 検査回数。 * 0回:教師付け -> 受入 * 1回:教師付け -> 検査 -> 受入 * n回(n >= 2):教師付け -> 検査1 -> ... -> 検査n -> 受入 * assignee_rule_of_resubmitted_task: AssigneeRuleOfResubmittedTask - + * task_assignment_type: TaskAssignmentType - + * task_assignment_property: TaskAssignmentProperty - + * max_tasks_per_member: int - 保留中のタスクを除き、1人(オーナー以外)に割り当てられるタスク数の上限。 + 保留中のタスクを除き、1人(オーナー以外)に割り当てられるタスク数の上限。 * max_tasks_per_member_including_hold: int - 保留中のタスクを含めて、1人(オーナー以外)に割り当てられるタスク数上限の保留分。 割り当て時の上限チェックは、max_tasks_per_memberとこの数字の合計で行われます。 例えばmax_tasks_per_memberが10、max_tasks_per_member_including_holdが20の場合、保留中を含むタスク数の割り当て上限は30になります。 + 保留中のタスクを含めて、1人(オーナー以外)に割り当てられるタスク数上限の保留分。 割り当て時の上限チェックは、max_tasks_per_memberとこの数字の合計で行われます。 例えばmax_tasks_per_memberが10、max_tasks_per_member_including_holdが20の場合、保留中を含むタスク数の割り当て上限は30になります。 * input_data_set_id_list: List[str] - システム内部用のプロパティ。 [putProject](#operation/putProject) APIでプロジェクトを更新する際は、[getProject](#operation/getProject) APIで取得した値を指定してください。 + システム内部用のプロパティ。 [putProject](#operation/putProject) APIでプロジェクトを更新する際は、[getProject](#operation/getProject) APIで取得した値を指定してください。 * input_data_max_long_side_length: int - 入力データ画像の長辺の最大値(未指定時は4096px)。 画像をアップロードすると、長辺がこの値になるように画像が自動で圧縮されます。 アノテーションの座標は、もとの解像度の画像でつけたものに復元されます。 大きな数値を設定すると入力データ画像のサイズが大きくなり、生産性低下やブラウザで画像を表示できない懸念があります。注意して設定してください。 + 入力データ画像の長辺の最大値(未指定時は4096px)。 画像をアップロードすると、長辺がこの値になるように画像が自動で圧縮されます。 アノテーションの座標は、もとの解像度の画像でつけたものに復元されます。 大きな数値を設定すると入力データ画像のサイズが大きくなり、生産性低下やブラウザで画像を表示できない懸念があります。注意して設定してください。 * sampling_inspection_rate: int 抜取検査率[%]。未指定の場合は100%として扱う。 * sampling_acceptance_rate: int 抜取受入率[%]。未指定の場合は100%として扱う。 * private_storage_aws_iam_role_arn: str - AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 + AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 * plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * custom_task_assignment_plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * custom_specs_plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * extended_specs_plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * editor_version: str - 標準アノテーションエディタのバージョン。 * `stable` * 安定版。通常はこちらを利用してください。 * `preview` * 最新版。新機能やUI変更の先行リリース版。 プロジェクト更新時に未指定の場合は `stable` が指定されたものとみなします。 + 標準アノテーションエディタのバージョン。 * `stable` * 安定版。通常はこちらを利用してください。 * `preview` * 最新版。新機能やUI変更の先行リリース版。 プロジェクト更新時に未指定の場合は `stable` が指定されたものとみなします。 * use_beginner_navigation: bool - true の場合、プロジェクトの画面でナビゲーションUIを表示します(ログインユーザーがプロジェクトオーナーの場合のみ)。 + true の場合、プロジェクトの画面でナビゲーションUIを表示します(ログインユーザーがプロジェクトオーナーの場合のみ)。 """ @@ -4489,9 +4491,9 @@ class PricePlan(Enum): Kyes of Dict * list: List[Project] - + * has_next: bool - + """ @@ -4502,23 +4504,23 @@ class PricePlan(Enum): Kyes of Dict * dest_project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * dest_title: str コピー先プロジェクトのタイトル * dest_overview: str コピー先プロジェクトの概要 * copy_inputs: bool - 「入力データ」をコピーするかどうかを指定します。 + 「入力データ」をコピーするかどうかを指定します。 * copy_tasks: bool - 「タスク」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする + 「タスク」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * copy_annotations: bool - 「アノテーション」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * `copy_tasks`の値を`true`とする + 「アノテーション」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * `copy_tasks`の値を`true`とする * copy_webhooks: bool - 「Webhook」をコピーするかどうかを指定します。 + 「Webhook」をコピーするかどうかを指定します。 * copy_supplementary_data: bool - 「補助情報」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする + 「補助情報」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * copy_instructions: bool - 「作業ガイド」をコピーするかどうかを指定します。 + 「作業ガイド」をコピーするかどうかを指定します。 """ @@ -4529,9 +4531,9 @@ class PricePlan(Enum): Kyes of Dict * job: ProjectJobInfo - + * dest_project: Project - + """ @@ -4548,7 +4550,7 @@ class PricePlan(Enum): * lang: str ゲストユーザーのUIの表示言語です * key_layout: KeyLayout - + """ @@ -4559,7 +4561,7 @@ class PricePlan(Enum): Kyes of Dict * job: ProjectJobInfo - + """ @@ -4570,19 +4572,19 @@ class PricePlan(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_type: ProjectJobType - + * job_id: str - ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_status: JobStatus - + * job_execution: __DictStrKeyAnyValue__ ジョブの内部情報 * job_detail: __DictStrKeyAnyValue__ ジョブ結果の内部情報 * errors: Errors - + * created_datetime: str 作成日時 * updated_datetime: str @@ -4637,7 +4639,7 @@ class ProjectJobType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ + システム内部用のプロパティ """ @@ -4648,19 +4650,19 @@ class ProjectJobType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * member_status: ProjectMemberStatus - + * member_role: ProjectMemberRole - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * updated_datetime: str 更新日時 * created_datetime: str @@ -4689,7 +4691,7 @@ class ProjectJobType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ + システム内部用のプロパティ """ @@ -4700,15 +4702,15 @@ class ProjectJobType(Enum): Kyes of Dict * member_status: ProjectMemberStatus - + * member_role: ProjectMemberRole - + * sampling_inspection_rate: int 抜取検査率(パーセント) * sampling_acceptance_rate: int 抜取受入率(パーセント) * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4761,7 +4763,7 @@ class ProjectStatus(Enum): Kyes of Dict * task_counts: List[ProjectTaskCountsTaskCounts] - + """ @@ -4772,9 +4774,9 @@ class ProjectStatus(Enum): Kyes of Dict * phase: TaskPhase - + * status: TaskStatus - + * count: float 該当するタスクの数 @@ -4787,9 +4789,9 @@ class ProjectStatus(Enum): Kyes of Dict * phase: TaskPhase - + * status: TaskStatus - + * count: int タスク数 * work_timespan: int @@ -4821,7 +4823,7 @@ class ProjectStatus(Enum): * token: str プロジェクトトークン文字列。 [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)への入力となります。 * info: ProjectTokenInfo - + """ @@ -4847,15 +4849,15 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV1] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4868,11 +4870,11 @@ class ProjectStatus(Enum): * input_data_set_name: str 入力データセットの名前 * input_data_type: InputDataType - + * private_storage_arn: str - AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 + AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4885,7 +4887,7 @@ class ProjectStatus(Enum): * html: str 作業ガイドのHTML * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4898,7 +4900,7 @@ class ProjectStatus(Enum): * markers: List[Marker] マーカー一覧 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4909,17 +4911,17 @@ class ProjectStatus(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * lang: Lang - + * keylayout: KeyLayout - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4930,7 +4932,7 @@ class ProjectStatus(Enum): Kyes of Dict * opened: bool - メッセージの開封状態に対するアクション。 trueが指定された場合は開封済みの状態、falseが指定された場合は未開封の状態にします。 + メッセージの開封状態に対するアクション。 trueが指定された場合は開封済みの状態、falseが指定された場合は未開封の状態にします。 """ @@ -4941,9 +4943,9 @@ class ProjectStatus(Enum): Kyes of Dict * role: OrganizationMemberRole - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4954,13 +4956,13 @@ class ProjectStatus(Enum): Kyes of Dict * plugin_name: str - プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * description: str - プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * detail: PluginDetail - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4971,9 +4973,9 @@ class ProjectStatus(Enum): Kyes of Dict * organization_name: str - 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4988,15 +4990,15 @@ class ProjectStatus(Enum): * overview: str プロジェクトの概要 * status: ProjectStatus - + * input_data_type: InputDataType - + * organization_name: str - プロジェクトの所属組織を変更する場合は、ここに変更先の組織名を指定します。 * 所属組織を変更する前にプロジェクトを停止する必要があります。 * APIを呼び出すアカウントは、変更先組織の管理者またはオーナーである必要があります。 * 変更後の組織に所属していないプロジェクトメンバーも残りますが、作業はできません。あらためて組織に招待してください。 + プロジェクトの所属組織を変更する場合は、ここに変更先の組織名を指定します。 * 所属組織を変更する前にプロジェクトを停止する必要があります。 * APIを呼び出すアカウントは、変更先組織の管理者またはオーナーである必要があります。 * 変更後の組織に所属していないプロジェクトメンバーも残りますが、作業はできません。あらためて組織に招待してください。 * configuration: ProjectConfiguration - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * force_suspend: bool 作業中タスクがあるプロジェクトを停止する時trueにして下さい @@ -5009,9 +5011,9 @@ class ProjectStatus(Enum): Kyes of Dict * job: ProjectJobInfo - + * project: Project - + """ @@ -5022,15 +5024,15 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * event_type: WebhookEventType - + * webhook_id: str - WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) + WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) * webhook_status: WebhookStatus - + * method: WebhookHttpMethod - + * headers: List[WebhookHeader] Webhookが送信するHTTPリクエストのヘッダー * body: str @@ -5051,7 +5053,7 @@ class ProjectStatus(Enum): Kyes of Dict * refresh_token: str - リフレッシュトークン。[login](#operation/login) APIで取得します。 + リフレッシュトークン。[login](#operation/login) APIで取得します。 """ @@ -5062,9 +5064,9 @@ class ProjectStatus(Enum): Kyes of Dict * root_comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Reply` [詳しくはこちら](#section/API-Convention/API-_type) + `Reply` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5075,7 +5077,7 @@ class ProjectStatus(Enum): Kyes of Dict * inspection: Inspection - + * type: str ReplyRequired @@ -5088,7 +5090,7 @@ class ProjectStatus(Enum): Kyes of Dict * email: str - + """ @@ -5125,15 +5127,15 @@ class ProjectStatus(Enum): Kyes of Dict * data: InspectionData - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * status: CommentStatus - + * type: str - `Root` [詳しくはこちら](#section/API-Convention/API-_type) + `Root` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5148,7 +5150,7 @@ class ProjectStatus(Enum): * min_height: int 高さの最小値[ピクセル] * min_warn_rule: str - サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 + サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 * tolerance: int 許容誤差[ピクセル] @@ -5161,7 +5163,7 @@ class ProjectStatus(Enum): Kyes of Dict * email: str - + """ @@ -5172,19 +5174,19 @@ class ProjectStatus(Enum): Kyes of Dict * annotation_format_version: str - アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 + アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_phase: TaskPhase - + * task_phase_stage: int タスクのフェーズのステージ番号 * task_status: TaskStatus - + * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name: str 入力データ名 * details: List[SimpleAnnotationDetail] @@ -5201,13 +5203,13 @@ class ProjectStatus(Enum): Kyes of Dict * label: str - アノテーション仕様で設定したラベル名 (英語) です。 + アノテーション仕様で設定したラベル名 (英語) です。 * annotation_id: str - 個々のアノテーションにつけられたIDです。 + 個々のアノテーションにつけられたIDです。 * data: FullAnnotationData - + * attributes: __DictStrKeyAnyValue__ - キーと値が以下のようになっている辞書構造です。 * キー: アノテーション仕様で設定した属性名 (英語) * 値: 各属性の値 * 選択肢を定義している場合、その選択肢の表示名 (英語) * それ以外は属性値そのまま (文字列、数値、論理値) + キーと値が以下のようになっている辞書構造です。 * キー: アノテーション仕様で設定した属性名 (英語) * 値: 各属性の値 * 選択肢を定義している場合、その選択肢の表示名 (英語) * それ以外は属性値そのまま (文字列、数値、論理値) """ @@ -5218,13 +5220,13 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * detail: SingleAnnotationDetailV2 - + * updated_datetime: str 更新日時 @@ -5232,26 +5234,26 @@ class ProjectStatus(Enum): SingleAnnotationDetailV1 = Dict[str, Any] """ -アノテーション情報 +アノテーション情報 Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data_holding_type: AnnotationDataHoldingType - + * data: FullAnnotationData - + * etag: str data_holding_typeがouterの場合のみ存在し、データのETagが格納される * url: str data_holding_typeがouterの場合のみ存在し、データへの一時URLが格納される * additional_data_list: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * created_datetime: str 作成日時 * updated_datetime: str @@ -5261,20 +5263,20 @@ class ProjectStatus(Enum): SingleAnnotationDetailV2 = Dict[str, Any] """ -アノテーション情報 +アノテーション情報 Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentOutput - + * additional_data_list: List[AdditionalDataV2] - + * created_datetime: str 作成日時 * updated_datetime: str @@ -5289,13 +5291,13 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * detail: SingleAnnotationDetailV1 - + * updated_datetime: str 更新日時 @@ -5308,13 +5310,13 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * detail: SingleAnnotationDetailV2 - + * updated_datetime: str 更新日時 @@ -5327,25 +5329,25 @@ class ProjectStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_set_id: str - 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * supplementary_data_id: str - 補助情報ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 補助情報ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * supplementary_data_name: str 補助情報の名前 * supplementary_data_path: str - 補助情報の実体が存在するパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 + 補助情報の実体が存在するパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 * url: str システム内部用のプロパティ * etag: str - [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 + [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 * supplementary_data_type: SupplementaryDataType - + * supplementary_data_number: int 補助情報の表示順を表す数値。 * updated_datetime: str @@ -5362,13 +5364,13 @@ class ProjectStatus(Enum): * supplementary_data_name: str 補助情報の名前 * supplementary_data_path: str - 補助情報の実体が存在するURLです。 補助情報の実体をAnnofabにアップロードする場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 補助情報の実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 補助情報の実体が、S3プライベートストレージに存在するファイルを補助情報として登録する場合は、[事前に認可の設定](/docs/faq/#m0b240)が必要です。 + 補助情報の実体が存在するURLです。 補助情報の実体をAnnofabにアップロードする場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 補助情報の実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 補助情報の実体が、S3プライベートストレージに存在するファイルを補助情報として登録する場合は、[事前に認可の設定](/docs/faq/#m0b240)が必要です。 * supplementary_data_type: SupplementaryDataType - + * supplementary_data_number: int 補助情報の表示順を表す数値。同じ入力データに対して複数の補助情報で表示順が重複する場合、順序不定になります。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -5385,24 +5387,24 @@ class SupplementaryDataType(Enum): SystemMetadata = Dict[str, Any] """ -Annofabが設定したメタデータです。 `metadata`プロパティとは違い、ユーザー側では値を編集できません。 * `SystemMetadataImage`: 画像プロジェクト用のメタデータ * `SystemMetadataMovie`: 動画プロジェクト用のメタデータ * `SystemMetadataCustom`: カスタムプロジェクト用のメタデータ +Annofabが設定したメタデータです。 `metadata`プロパティとは違い、ユーザー側では値を編集できません。 * `SystemMetadataImage`: 画像プロジェクト用のメタデータ * `SystemMetadataMovie`: 動画プロジェクト用のメタデータ * `SystemMetadataCustom`: カスタムプロジェクト用のメタデータ Kyes of Dict * original_resolution: Resolution - + * resized_resolution: Resolution - + * type: str `Custom` * input_duration: float - 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 + 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 """ SystemMetadataCustom = Dict[str, Any] """ -カスタムデータ用システムメタデータ。 現行はプロパティがない形式的なオブジェクトです。 +カスタムデータ用システムメタデータ。 現行はプロパティがない形式的なオブジェクトです。 Kyes of Dict @@ -5413,14 +5415,14 @@ class SupplementaryDataType(Enum): SystemMetadataImage = Dict[str, Any] """ -画像データ用システムメタデータ。 +画像データ用システムメタデータ。 Kyes of Dict * original_resolution: Resolution - + * resized_resolution: Resolution - + * type: str `Image` @@ -5428,12 +5430,12 @@ class SupplementaryDataType(Enum): SystemMetadataMovie = Dict[str, Any] """ -動画データ用システムメタデータ。 +動画データ用システムメタデータ。 Kyes of Dict * input_duration: float - 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 + 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 * type: str `Movie` @@ -5446,25 +5448,25 @@ class SupplementaryDataType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int タスクのフェーズのステージ番号 * status: TaskStatus - + * input_data_id_list: List[str] タスクに含まれる入力データのID * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * histories_by_phase: List[TaskHistoryShort] 簡易的なタスク履歴(あるフェーズを誰が担当したか) * work_time_span: int 累計実作業時間(ミリ秒) * number_of_rejections: int - このタスクが差戻しされた回数(すべてのフェーズでの差戻し回数の合計 このフィールドは、どのフェーズで何回差戻されたかを区別できないため、廃止予定です。 `histories_by_phase` で各フェーズの回数を計算することで、差戻し回数が分かります。 例)`acceptance`フェーズが3回ある場合、`acceptance`フェーズで2回差し戻しされたことになります。 + このタスクが差戻しされた回数(すべてのフェーズでの差戻し回数の合計 このフィールドは、どのフェーズで何回差戻されたかを区別できないため、廃止予定です。 `histories_by_phase` で各フェーズの回数を計算することで、差戻し回数が分かります。 例)`acceptance`フェーズが3回ある場合、`acceptance`フェーズで2回差し戻しされたことになります。 * started_datetime: str 現在のフェーズが開始された日時 * updated_datetime: str @@ -5472,9 +5474,9 @@ class SupplementaryDataType(Enum): * operation_updated_datetime: str タスクのステータスやフェーズ、担当者などが更新されたときの日時 * sampling: str - 検査抜取検査/抜取受入によって、どのフェーズがスキップされたか * `inspection_skipped` - 抜取検査の対象外となり、検査フェーズがスキップされた * `inspection_stages_skipped` - 抜取検査の対象外となり、検査フェーズのステージの一部がスキップされた * `acceptance_skipped` - 抜取受入の対象外となり、受入フェーズがスキップされた * `inspection_and_acceptance_skipped` - 抜取検査・抜取受入の対象外となり、検査・受入フェーズがスキップされた 未指定ならば、どのフェーズもスキップされていません。 + 検査抜取検査/抜取受入によって、どのフェーズがスキップされたか * `inspection_skipped` - 抜取検査の対象外となり、検査フェーズがスキップされた * `inspection_stages_skipped` - 抜取検査の対象外となり、検査フェーズのステージの一部がスキップされた * `acceptance_skipped` - 抜取受入の対象外となり、受入フェーズがスキップされた * `inspection_and_acceptance_skipped` - 抜取検査・抜取受入の対象外となり、検査・受入フェーズがスキップされた 未指定ならば、どのフェーズもスキップされていません。 * metadata: dict(str, __DictStrKeyAnyValue__) - ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 + ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 """ @@ -5485,22 +5487,22 @@ class SupplementaryDataType(Enum): Kyes of Dict * request_type: TaskAssignRequestType - + """ TaskAssignRequestType = Dict[str, Any] """ -* `TaskAssignRequestTypeRandom`: 自分自身にランダムにタスクを割り当てます。プロジェクト設定でタスクのランダム割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeSelection`: メンバーに指定したタスクを割り当てます。ただし、メンバーはプロジェクトオーナーもしくはチェッカーロールを持つ必要があります。プロジェクト設定でタスクの選択割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeTaskProperty`: タスクプロパティ割当の設定に基づいて、タスクを自分自身に割り当てます。プロジェクト設定でタスクプロパティ割当を有効にした場合のみ利用できます。 +* `TaskAssignRequestTypeRandom`: 自分自身にランダムにタスクを割り当てます。プロジェクト設定でタスクのランダム割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeSelection`: メンバーに指定したタスクを割り当てます。ただし、メンバーはプロジェクトオーナーもしくはチェッカーロールを持つ必要があります。プロジェクト設定でタスクの選択割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeTaskProperty`: タスクプロパティ割当の設定に基づいて、タスクを自分自身に割り当てます。プロジェクト設定でタスクプロパティ割当を有効にした場合のみ利用できます。 Kyes of Dict * phase: TaskPhase - + * type: str - `TaskProperty` + `TaskProperty` * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_ids: List[str] 割り当てるタスクのID @@ -5513,9 +5515,9 @@ class SupplementaryDataType(Enum): Kyes of Dict * phase: TaskPhase - + * type: str - `Random` + `Random` """ @@ -5526,11 +5528,11 @@ class SupplementaryDataType(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_ids: List[str] 割り当てるタスクのID * type: str - `Selection` + `Selection` """ @@ -5541,9 +5543,9 @@ class SupplementaryDataType(Enum): Kyes of Dict * phase: TaskPhase - + * type: str - `TaskProperty` + `TaskProperty` """ @@ -5559,14 +5561,14 @@ class TaskAssignmentOrder(Enum): TaskAssignmentProperty = Dict[str, Any] """ -プロジェクト設定でタスクプロパティ割当を有効にしている場合のみ指定してください。 +プロジェクト設定でタスクプロパティ割当を有効にしている場合のみ指定してください。 Kyes of Dict * name: str - タスクの割当優先度を決定するためのタスクプロパティ。 指定できるプロパティは次のいずれかです。 * `task_id` * `updated_datetime` * `metadata` (`metadata.{メタデータ名}` の形式で指定してください) + タスクの割当優先度を決定するためのタスクプロパティ。 指定できるプロパティは次のいずれかです。 * `task_id` * `updated_datetime` * `metadata` (`metadata.{メタデータ名}` の形式で指定してください) * order: TaskAssignmentOrder - + """ @@ -5590,7 +5592,7 @@ class TaskAssignmentType(Enum): Kyes of Dict * task_generate_rule: TaskGenerateRule - + * project_last_updated_datetime: str プロジェクトの最終更新日時([getProject](#operation/getProject) APIのレスポンス `updated_datetime`)。タスク生成の排他制御に使用。 @@ -5603,9 +5605,9 @@ class TaskAssignmentType(Enum): Kyes of Dict * job: ProjectJobInfo - + * project: Project - + """ @@ -5616,52 +5618,52 @@ class TaskAssignmentType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str プロジェクトのタイトル * overview: str プロジェクトの概要 * project_status: ProjectStatus - + * input_data_type: InputDataType - + * configuration: ProjectConfiguration - + * created_datetime: str 作成日時 * updated_datetime: str 更新日時 * summary: ProjectSummary - + * job: ProjectJobInfo - + * project: Project - + """ TaskGenerateRule = Dict[str, Any] """ -タスク生成のルール * `TaskGenerateRuleByCount`: 1つのタスクに割り当てる入力データの個数を指定してタスクを生成します。 * `TaskGenerateRuleByDirectory`: 入力データ名をファイルパスに見立てて、ディレクトリ単位でタスクを生成します。 * `TaskGenerateRuleByInputDataCsv`: 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパスを指定してタスクを生成します。 +タスク生成のルール * `TaskGenerateRuleByCount`: 1つのタスクに割り当てる入力データの個数を指定してタスクを生成します。 * `TaskGenerateRuleByDirectory`: 入力データ名をファイルパスに見立てて、ディレクトリ単位でタスクを生成します。 * `TaskGenerateRuleByInputDataCsv`: 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパスを指定してタスクを生成します。 Kyes of Dict * task_id_prefix: str - タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) * allow_duplicate_input_data: bool - `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 + `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 * input_data_count: int - 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 + 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 * input_data_order: InputDataOrder - + * type: str - `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) + `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) * input_data_name_prefix: str タスク生成対象の入力データ名のプレフィックス * csv_data_path: str - 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 + 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 """ @@ -5672,15 +5674,15 @@ class TaskAssignmentType(Enum): Kyes of Dict * task_id_prefix: str - タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) * allow_duplicate_input_data: bool - `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 + `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 * input_data_count: int - 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 + 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 * input_data_order: InputDataOrder - + * type: str - `ByCount` [詳しくはこちら](#section/API-Convention/API-_type) + `ByCount` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5691,24 +5693,24 @@ class TaskAssignmentType(Enum): Kyes of Dict * task_id_prefix: str - タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name_prefix: str タスク生成対象の入力データ名のプレフィックス * type: str - `ByDirectory` [詳しくはこちら](#section/API-Convention/API-_type) + `ByDirectory` [詳しくはこちら](#section/API-Convention/API-_type) """ TaskGenerateRuleByInputDataCsv = Dict[str, Any] """ -各タスクへの入力データへの割当を記入したCSVへのS3上のパスを指定してタスクを生成します。 1つのタスクに対する入力データの個数は最大200です。200を超えるタスクが1つでもある場合にはタスク生成に失敗します。 +各タスクへの入力データへの割当を記入したCSVへのS3上のパスを指定してタスクを生成します。 1つのタスクに対する入力データの個数は最大200です。200を超えるタスクが1つでもある場合にはタスク生成に失敗します。 Kyes of Dict * csv_data_path: str - 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 + 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 * type: str - `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) + `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5719,11 +5721,11 @@ class TaskAssignmentType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_history_id: str - タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * started_datetime: str 開始日時 * ended_datetime: str @@ -5731,11 +5733,11 @@ class TaskAssignmentType(Enum): * accumulated_labor_time_milliseconds: str 累計実作業時間(ISO 8601 duration) * phase: TaskPhase - + * phase_stage: int タスクのフェーズのステージ番号 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -5746,23 +5748,23 @@ class TaskAssignmentType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_history_id: str - タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * created_datetime: str 作成日時 * phase: TaskPhase - + * phase_stage: int タスクのフェーズのステージ番号 * status: TaskStatus - + * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * request: TaskOperation - + """ @@ -5773,11 +5775,11 @@ class TaskAssignmentType(Enum): Kyes of Dict * phase: TaskPhase - + * phase_stage: int - + * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * worked: bool そのフェーズでタスクの作業を行ったかどうか(行った場合はtrue) @@ -5790,11 +5792,11 @@ class TaskAssignmentType(Enum): Kyes of Dict * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_errors: List[ValidationError] - + * inspection_errors: List[InspectionValidationError] - + """ @@ -5815,7 +5817,7 @@ class TaskAssignmentType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 + [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 """ @@ -5826,13 +5828,13 @@ class TaskAssignmentType(Enum): Kyes of Dict * status: TaskStatus - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * force: bool - タスクの強制操作を行うかどうか。 `status`が`rejected`のときのみ、`true`を指定できます。 + タスクの強制操作を行うかどうか。 `status`が`rejected`のときのみ、`true`を指定できます。 """ @@ -5854,7 +5856,7 @@ class TaskPhase(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str 日付 * phases: List[PhaseStatistics] @@ -5871,7 +5873,7 @@ class TaskPhase(Enum): * input_data_id_list: List[str] タスクに割り当てる入力データのID。タスクに割り当てることができる入力データの個数は最大200です。 * metadata: dict(str, __DictStrKeyAnyValue__) - ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 + ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 """ @@ -5897,11 +5899,11 @@ class TaskStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inputs: List[InputDataSummary] - + """ @@ -5912,7 +5914,7 @@ class TaskStatus(Enum): Kyes of Dict * url: str - このURLは発行から1時間経過すると無効になります。 + このURLは発行から1時間経過すると無効になります。 """ @@ -5938,11 +5940,11 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str UnknownAdditionalData @@ -5955,9 +5957,9 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * type: str UnknownLabel @@ -5970,11 +5972,11 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str UnknownLinkTarget @@ -5987,7 +5989,7 @@ class TaskStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * year_month: str 対象月。年月のフォーマットは YYYY-MM です。 * aggregation_period_from: str @@ -6008,7 +6010,7 @@ class TaskStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str 対象日。日付のフォーマットはISO 8601 拡張形式です。 * aggregation_period_from: str @@ -6040,13 +6042,13 @@ class TaskStatus(Enum): Kyes of Dict * account: str - + * members: str - + * projects: str - + * organizations: str - + """ @@ -6057,7 +6059,7 @@ class TaskStatus(Enum): Kyes of Dict * type: str - ユーザー定義アノテーション種別の型を指定します。 指定可能な値と、その意味は下記の通りです。 * `BoundingBox2d` - 2次元の矩形 * `Polygon2d` - 2次元のポリゴン * `Polyline2d` - 2次元のポリライン * `SinglePoint2d` - 2次元の点 * `SemanticSegmentation2d` - 2次元のセマンティックセグメンテーション * `InstanceSegmentation2d` - 2次元のインスタンスセグメンテーション * `Range1d` - 1次元の範囲 * `Classification` - 全体アノテーション * `Unknown` - その他のアノテーション種別 下記のフィールド定義は、すべてのアノテーション種別の型に対して使用可能です。 * `OneIntegerField` * `OneStringField` * `OneBooleanField` その他のフィールド定義は、使用可能なアノテーション種別の型に制限があります。 ユーザー定義アノテーション種別の型ごとの、使用可能なフィールド定義を下記の表で示します。 |ユーザー定義アノテーション種別の型 | 使用可能なフィールド定義 | |-----------------|:----------:| | BoundingBox2d | MinimumSize2dWithDefaultInsertPosition, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polygon2d | MinimumSize2d, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polyline2d | VertexCountMinMax, DisplayLineDirection, MarginOfErrorTolerance | | SinglePoint2d | MarginOfErrorTolerance | | SemanticSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | InstanceSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | Range1d | MarginOfErrorTolerance | | Classification | MarginOfErrorTolerance | | Unknown | - | + ユーザー定義アノテーション種別の型を指定します。 指定可能な値と、その意味は下記の通りです。 * `BoundingBox2d` - 2次元の矩形 * `Polygon2d` - 2次元のポリゴン * `Polyline2d` - 2次元のポリライン * `SinglePoint2d` - 2次元の点 * `SemanticSegmentation2d` - 2次元のセマンティックセグメンテーション * `InstanceSegmentation2d` - 2次元のインスタンスセグメンテーション * `Range1d` - 1次元の範囲 * `Classification` - 全体アノテーション * `Unknown` - その他のアノテーション種別 下記のフィールド定義は、すべてのアノテーション種別の型に対して使用可能です。 * `OneIntegerField` * `OneStringField` * `OneBooleanField` その他のフィールド定義は、使用可能なアノテーション種別の型に制限があります。 ユーザー定義アノテーション種別の型ごとの、使用可能なフィールド定義を下記の表で示します。 |ユーザー定義アノテーション種別の型 | 使用可能なフィールド定義 | |-----------------|:----------:| | BoundingBox2d | MinimumSize2dWithDefaultInsertPosition, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polygon2d | MinimumSize2d, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polyline2d | VertexCountMinMax, DisplayLineDirection, MarginOfErrorTolerance | | SinglePoint2d | MarginOfErrorTolerance | | SemanticSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | InstanceSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | Range1d | MarginOfErrorTolerance | | Classification | MarginOfErrorTolerance | | Unknown | - | """ @@ -6068,13 +6070,13 @@ class TaskStatus(Enum): Kyes of Dict * annotation_type_name: InternationalizationMessage - + * field_definitions: List[UserDefinedAnnotationTypeDefinitionFieldDefinitions] - ユーザーが定義するアノテーション種別のフィールド定義です。 フィールドIDをキー、フィールド定義を値とするオブジェクトを設定します。 + ユーザーが定義するアノテーション種別のフィールド定義です。 フィールドIDをキー、フィールド定義を値とするオブジェクトを設定します。 * metadata: dict(str, str) - アノテーション種別を設定した際に、ラベルのメタデータとしてデフォルトで設定される値です。 + アノテーション種別を設定した際に、ラベルのメタデータとしてデフォルトで設定される値です。 * annotation_data_type: UserDefinedAnnotationDataType - + """ @@ -6087,30 +6089,30 @@ class TaskStatus(Enum): * field_id: str フィールドID。任意の文字列を設定できます。 * definition: UserDefinedAnnotationTypeFieldDefinition - + """ UserDefinedAnnotationTypeFieldDefinition = Dict[str, Any] """ -ユーザー定義のアノテーション種別に設定可能なフィールドについての定義です。 +ユーザー定義のアノテーション種別に設定可能なフィールドについての定義です。 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * prefix: str - フィールドの前に付与する文字列。 + フィールドの前に付与する文字列。 * postfix: str - フィールドの後に付与する文字列 + フィールドの後に付与する文字列 * description: InternationalizationMessage - + * initial_value: bool - フィールドの初期値 + フィールドの初期値 * label: InternationalizationMessage - + """ @@ -6121,19 +6123,19 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * message: str - + * type: str UnknownLabel * annotation_ids: List[str] - + * additional_data_definition_id: str - + * additional_data: AdditionalDataV1 - + """ @@ -6144,7 +6146,7 @@ class TaskStatus(Enum): Kyes of Dict * token: Token - + """ @@ -6155,15 +6157,15 @@ class TaskStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * event_type: WebhookEventType - + * webhook_id: str - WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) + WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) * webhook_status: WebhookStatus - + * method: WebhookHttpMethod - + * headers: List[WebhookHeader] Webhookが送信するHTTPリクエストのヘッダー * body: str @@ -6241,7 +6243,7 @@ class WebhookStatus(Enum): Kyes of Dict * result: str - * success: 通知先から正常なレスポンス(2xx系)を受け取った * failure: 通知先からエラーレスポンス(2xx系以外)を受け取った * error: リクエスト送信に失敗した、もしくはレスポンスを受信できなかった + * success: 通知先から正常なレスポンス(2xx系)を受け取った * failure: 通知先からエラーレスポンス(2xx系以外)を受け取った * error: リクエスト送信に失敗した、もしくはレスポンスを受信できなかった * request_body: str 実際に送信されたリクエストボディ * response_status: int @@ -6260,9 +6262,9 @@ class WebhookStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str - + * by_tasks: List[WorktimeStatisticsItem] タスクごとに計算した「画像1枚あたりの作業時間平均」の統計(動画プロジェクトの場合は空リスト) * by_inputs: List[WorktimeStatisticsItem] @@ -6281,9 +6283,9 @@ class WebhookStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data_series: List[WorktimeStatisticsData] プロジェクトメンバーの日毎の作業時間統計データ @@ -6296,7 +6298,7 @@ class WebhookStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data_series: List[WorktimeStatisticsData] プロジェクトの日毎の作業時間統計データ @@ -6326,7 +6328,7 @@ class WebhookStatus(Enum): Kyes of Dict * phase: TaskPhase - + * histogram: List[HistogramItem] ヒストグラム情報 * average: str diff --git a/annofabapi/wrapper.py b/annofabapi/wrapper.py index 0cb6620e..8bdec972 100644 --- a/annofabapi/wrapper.py +++ b/annofabapi/wrapper.py @@ -129,7 +129,7 @@ class Wrapper: """ - def __init__(self, api: AnnofabApi): + def __init__(self, api: AnnofabApi) -> None: self.api = api ######################################### @@ -218,7 +218,7 @@ def execute_http_get(self, url: str) -> requests.Response: * HTTPステータスコードが4XX,5XXならば、HTTPErrorがスローされます - """ + """ # noqa: E501 return self.api._execute_http_request(http_method="get", url=url) def download(self, url: str, dest_path: Union[str, Path]) -> requests.Response: @@ -242,7 +242,7 @@ def download(self, url: str, dest_path: Union[str, Path]) -> requests.Response: * 必要に応じてリトライします * HTTPステータスコードが4XX,5XXならば、HTTPErrorがスローされます - """ + """ # noqa: E501 response = self.api._execute_http_request(http_method="get", url=url) p = dest_path if isinstance(dest_path, Path) else Path(dest_path) @@ -401,7 +401,7 @@ def __to_dest_annotation_detail( Raises: CheckSumError: アップロードした外部アノテーションファイルのMD5ハッシュ値が、S3にアップロードしたときのレスポンスのETagに一致しない - """ + """ # noqa: E501 dest_detail = detail dest_detail["account_id"] = account_id if detail["data_holding_type"] == AnnotationDataHoldingType.OUTER.value: @@ -416,7 +416,7 @@ def __to_dest_annotation_detail( except CheckSumError as e: message = ( f"外部アノテーションファイル {outer_file_url} のレスポンスのMD5ハッシュ値('{e.uploaded_data_hash}')が、" - f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" + f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" # noqa: E501 ) raise CheckSumError(message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag) from e @@ -440,7 +440,7 @@ def _create_request_body_for_copy_annotation( tmp_detail = self.__replace_annotation_specs_id(src_detail, annotation_specs_relation) if tmp_detail is None: continue - src_detail = tmp_detail + src_detail = tmp_detail # noqa: PLW2901 dest_detail = self.__to_dest_annotation_detail(project_id, src_detail, account_id=account_id) dest_details.append(dest_detail) @@ -633,7 +633,7 @@ def __to_annotation_detail_for_request( except CheckSumError as e: message = ( f"アップロードした外部アノテーションファイル'{outer_file_path}'のMD5ハッシュ値('{e.uploaded_data_hash}')が、" - f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" + f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" # noqa: E501 ) raise CheckSumError(message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag) from e @@ -653,7 +653,7 @@ def __convert_annotation_specs_labels_v2_to_v1(self, labels_v2: List[Dict[str, A def get_additional(additional_data_definition_id: str) -> Optional[Dict[str, Any]]: return more_itertools.first_true(additionals_v2, pred=lambda e: e["additional_data_definition_id"] == additional_data_definition_id) - def to_label_v1(label_v2) -> LabelV1: + def to_label_v1(label_v2: Dict[str, Any]) -> LabelV1: additional_data_definition_id_list = label_v2["additional_data_definitions"] new_additional_data_definitions = [] for additional_data_definition_id in additional_data_definition_id_list: @@ -753,19 +753,19 @@ def put_annotation_for_simple_annotation_json( def __get_label_name_en(label: Dict[str, Any]) -> str: """label情報から英語名を取得する""" label_name_messages = label["label_name"]["messages"] - return [e["message"] for e in label_name_messages if e["lang"] == "en-US"][0] + return next(e["message"] for e in label_name_messages if e["lang"] == "en-US") @staticmethod def __get_additional_data_definition_name_en(additional_data_definition: Dict[str, Any]) -> str: """additional_data_definitionから英語名を取得する""" messages = additional_data_definition["name"]["messages"] - return [e["message"] for e in messages if e["lang"] == "en-US"][0] + return next(e["message"] for e in messages if e["lang"] == "en-US") @staticmethod def __get_choice_name_en(choice: Dict[str, Any]) -> str: """choiceから英語名を取得する""" messages = choice["name"]["messages"] - return [e["message"] for e in messages if e["lang"] == "en-US"][0] + return next(e["message"] for e in messages if e["lang"] == "en-US") def __get_dest_additional( self, @@ -790,7 +790,7 @@ def __get_dest_additional( dest_label = more_itertools.first_true( dest_labels, - pred=lambda e: e["label_id"] == dest_label_id, # pylint: disable=cell-var-from-loop + pred=lambda e: e["label_id"] == dest_label_id, # pylint: disable=cell-var-from-loop # noqa: B023 ) if dest_label is None: dest_label_contains_dest_additional = False @@ -829,7 +829,7 @@ def get_annotation_specs_relation(self, src_project_id: str, dest_project_id: st src_label_name_en = self.__get_label_name_en(src_label) dest_label = more_itertools.first_true( dest_labels, - pred=lambda e: self.__get_label_name_en(e) == src_label_name_en, # pylint: disable=cell-var-from-loop + pred=lambda e: self.__get_label_name_en(e) == src_label_name_en, # pylint: disable=cell-var-from-loop # noqa: B023 ) if dest_label is not None: dict_label_id[src_label["label_id"]] = dest_label["label_id"] @@ -854,7 +854,7 @@ def get_annotation_specs_relation(self, src_project_id: str, dest_project_id: st src_choice_name_en = self.__get_choice_name_en(src_choice) dest_choice = more_itertools.first_true( dest_choices, - pred=lambda e: self.__get_choice_name_en(e) == src_choice_name_en, # pylint: disable=cell-var-from-loop + pred=lambda e: self.__get_choice_name_en(e) == src_choice_name_en, # pylint: disable=cell-var-from-loop # noqa: B023 ) if dest_choice is not None: dict_choice_id[ChoiceKey(src_additional["additional_data_definition_id"], src_choice["choice_id"])] = ChoiceKey( @@ -928,11 +928,11 @@ def upload_file_to_s3(self, project_id: str, file_path: str, content_type: Optio except CheckSumError as e: message = ( f"アップロードしたファイル'{file_path}'のMD5ハッシュ値('{e.uploaded_data_hash}')が、" - f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" + f"AWS S3にアップロードしたときのレスポンスのETag('{e.response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" # noqa: E501 ) raise CheckSumError(message=message, uploaded_data_hash=e.uploaded_data_hash, response_etag=e.response_etag) from e - def upload_data_to_s3(self, project_id: str, data: Any, content_type: str) -> str: + def upload_data_to_s3(self, project_id: str, data: Any, content_type: str) -> str: # noqa: ANN401 """ createTempPath APIを使ってアップロード用のURLとS3パスを取得して、"data" をアップロードする。 @@ -946,9 +946,9 @@ def upload_data_to_s3(self, project_id: str, data: Any, content_type: str) -> st Raises: CheckSumError: アップロードしたデータのMD5ハッシュ値が、S3にアップロードしたときのレスポンスのETagと一致しない - """ + """ # noqa: E501 - def get_md5_value_from_file(fp): + def get_md5_value_from_file(fp): # noqa: ANN001 md5_obj = hashlib.md5() while True: chunk = fp.read(2048 * md5_obj.block_size) @@ -983,7 +983,7 @@ def get_md5_value_from_file(fp): if f'"{uploaded_data_hash}"' != response_etag: message = ( f"アップロードしたデータのMD5ハッシュ値('{uploaded_data_hash}')が、" - f"AWS S3にアップロードしたときのレスポンスのETag('{response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" + f"AWS S3にアップロードしたときのレスポンスのETag('{response_etag}')に一致しませんでした。アップロード時にデータが破損した可能性があります。" # noqa: E501 ) raise CheckSumError(message=message, uploaded_data_hash=uploaded_data_hash, response_etag=response_etag) @@ -1026,7 +1026,7 @@ def put_input_data_from_file( ######################################### # Public Method : Statistics ######################################### - def _get_statistics_content(self, content: Any, response: requests.Response) -> Optional[Any]: + def _get_statistics_content(self, content: Any, response: requests.Response) -> Optional[Any]: # noqa: ANN401 """ 統計情報webapiのレスポンス情報に格納されているURLにアクセスして、統計情報の中身を取得する。 統計情報webapiのレスポンス'url'にアクセスする。 @@ -1115,7 +1115,7 @@ def _get_from_and_to_date_for_statistics_webapi( project, _ = self.api.get_project(project_id) from_date = project["created_datetime"][0:10] # "YYYY-MM-DD"の部分を抽出 if to_date is None: - to_date = str(datetime.datetime.today().date()) + to_date = str(datetime.datetime.now(tz=datetime.timezone(datetime.timedelta(hours=9))).date()) if from_date is None or to_date is None: dates, _ = self.api.get_statistics_available_dates(project_id) @@ -1126,8 +1126,8 @@ def _get_from_and_to_date_for_statistics_webapi( to_date = dates[-1]["to"] DATE_FORMAT = "%Y-%m-%d" - dt_from_date = datetime.datetime.strptime(from_date, DATE_FORMAT).date() - dt_to_date = datetime.datetime.strptime(to_date, DATE_FORMAT).date() + dt_from_date = datetime.datetime.strptime(from_date, DATE_FORMAT).date() # noqa: DTZ007 + dt_to_date = datetime.datetime.strptime(to_date, DATE_FORMAT).date() # noqa: DTZ007 return dt_from_date, dt_to_date def get_account_daily_statistics( @@ -1144,7 +1144,7 @@ def get_account_daily_statistics( ユーザ別タスク集計データ """ - def decorator(f, project_id: str): + def decorator(f, project_id: str): # noqa: ANN001 @functools.wraps(f) def wrapper(*args, **kwargs): content, _ = f(project_id, *args, **kwargs) @@ -1178,7 +1178,7 @@ def get_inspection_daily_statistics( """ - def decorator(f, project_id: str): + def decorator(f, project_id: str): # noqa: ANN001 @functools.wraps(f) def wrapper(*args, **kwargs): content, _ = f(project_id, *args, **kwargs) @@ -1203,7 +1203,7 @@ def get_phase_daily_statistics(self, project_id: str, *, from_date: Optional[str """ - def decorator(f, project_id: str): + def decorator(f, project_id: str): # noqa: ANN001 @functools.wraps(f) def wrapper(*args, **kwargs): content, _ = f(project_id, *args, **kwargs) @@ -1228,7 +1228,7 @@ def get_task_daily_statistics(self, project_id: str, *, from_date: Optional[str] """ - def decorator(f, project_id: str): + def decorator(f, project_id: str): # noqa: ANN001 @functools.wraps(f) def wrapper(*args, **kwargs): content, _ = f(project_id, *args, **kwargs) @@ -1252,7 +1252,7 @@ def get_worktime_daily_statistics(self, project_id: str, *, from_date: Optional[ プロジェクト全体のタスク作業時間集計データ """ - def decorator(f, project_id: str): + def decorator(f, project_id: str): # noqa: ANN001 @functools.wraps(f) def wrapper(*args, **kwargs): content, _ = f(project_id, *args, **kwargs) @@ -1280,7 +1280,7 @@ def get_worktime_daily_statistics_by_account( プロジェクトメンバーのタスク作業時間集計データ """ - def decorator(f, project_id: str, account_id: str): + def decorator(f, project_id: str, account_id: str): # noqa: ANN001 @functools.wraps(f) def wrapper(*args, **kwargs): content, _ = f(project_id, account_id, *args, **kwargs) @@ -1318,7 +1318,7 @@ def get_supplementary_data_list_or_none(self, project_id: str, input_data_id: st def put_supplementary_data_from_file( self, - project_id, + project_id:str, input_data_id: str, supplementary_data_id: str, file_path: str, @@ -1605,7 +1605,7 @@ def download_project_task_history_events_url(self, project_id: str, dest_path: U """ with warnings.catch_warnings(): - # `get_project_task_history_events_url`関数は非推奨だが、タスク履歴イベントでしか取得できない情報があるため、annofab-cliなどではよく利用する + # `get_project_task_history_events_url`関数は非推奨だが、タスク履歴イベントでしか取得できない情報があるため、annofab-cliなどではよく利用する # noqa: E501 # `get_project_task_history_events_url`関数がいつ廃止さるのかは未定なので、`get_project_task_history_events_url`関数実行時の警告を無視する warnings.simplefilter("ignore", category=FutureWarning) content, _ = self.api.get_project_task_history_events_url(project_id) @@ -1775,7 +1775,7 @@ def change_task_status_to_working(self, project_id: str, task_id: str, *, last_u Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -1802,7 +1802,7 @@ def change_task_status_to_break(self, project_id: str, task_id: str, *, last_upd Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -1830,7 +1830,7 @@ def change_task_status_to_on_hold(self, project_id: str, task_id: str, *, last_u Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -1861,7 +1861,7 @@ def complete_task(self, project_id: str, task_id: str, *, last_updated_datetime: Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -1894,7 +1894,7 @@ def cancel_submitted_task(self, project_id: str, task_id: str, *, last_updated_d Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -1931,7 +1931,7 @@ def cancel_completed_task( Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -1967,7 +1967,7 @@ def change_task_operator( Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -2002,7 +2002,7 @@ def reject_task(self, project_id: str, task_id: str, *, force: bool = False, las Returns: 変更後のタスク - """ + """ # noqa: E501 if last_updated_datetime is None: task, _ = self.api.get_task(project_id, task_id) last_updated_datetime = task["updated_datetime"] @@ -2054,7 +2054,7 @@ def upload_instruction_image(self, project_id: str, image_id: str, file_path: st with open(file_path, "rb") as f: return self.upload_data_as_instruction_image(project_id, image_id, data=f, content_type=new_content_type) - def upload_data_as_instruction_image(self, project_id: str, image_id: str, data: Any, content_type: str) -> str: + def upload_data_as_instruction_image(self, project_id: str, image_id: str, data: Any, content_type: str) -> str: # noqa: ANN401 """ data を作業ガイドの画像としてアップロードする。 diff --git a/pyproject.toml b/pyproject.toml index 9995a93c..60530f82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,6 +81,7 @@ line-length = 150 [tool.ruff.lint] ignore = [ # "G004", # `logging-f-string` : loggingでf-stringを使いたいので無視する + "FA100", # `future-rewritable-type-annotation` : Python3.8をサポートしている間は無視する。 "PD002", #すでにpandasで`inplace=True`はいろんなところで使っているため "RUF001", # 全角記号など`ambiguous unicode character`も使いたいため "RUF002",# 全角記号など`ambiguous unicode character`も使いたいため From 27fe9e51e5507cdb4f6e73d7384029b86f5541b8 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 14:39:18 +0900 Subject: [PATCH 04/13] =?UTF-8?q?ruff=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- annofabapi/models.py | 1 - annofabapi/parser.py | 38 +++++++++++++++++++------------------- annofabapi/resource.py | 2 +- annofabapi/segmentation.py | 4 ++-- annofabapi/wrapper.py | 2 +- 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/annofabapi/models.py b/annofabapi/models.py index dc465159..0de98f3b 100644 --- a/annofabapi/models.py +++ b/annofabapi/models.py @@ -1,4 +1,3 @@ - # ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/parser.py b/annofabapi/parser.py index ae497a10..fd2eac5c 100644 --- a/annofabapi/parser.py +++ b/annofabapi/parser.py @@ -3,7 +3,7 @@ import os import zipfile from pathlib import Path -from typing import Any, Callable, Dict, Iterator, List, Optional +from typing import Any, Callable, Dict, Iterator, List, Optional, Type, Union from annofabapi.dataclass.annotation import FullAnnotation, SimpleAnnotation from annofabapi.exceptions import AnnotationOuterFileNotFoundError @@ -32,7 +32,7 @@ class SimpleAnnotationParser(abc.ABC): """ - def __init__(self, json_file_path: str): + def __init__(self, json_file_path: str) -> None: p = Path(json_file_path) self.__json_file_path = json_file_path self.__task_id = p.parent.name @@ -92,7 +92,7 @@ def parse(self, convert_detail_data_func: Optional[CONVERT_ANNOTATION_DETAIL_DAT return simple_annotation @abc.abstractmethod - def load_json(self) -> Any: + def load_json(self) -> Any: # noqa: ANN401 """ JSONファイルをloadします。 """ @@ -115,7 +115,7 @@ class FullAnnotationParser(abc.ABC): """ - def __init__(self, json_file_path: str): + def __init__(self, json_file_path: str) -> None: p = Path(json_file_path) self.__json_file_path = json_file_path self.__task_id = p.parent.name @@ -157,7 +157,7 @@ def open_outer_file(self, data_uri: str): """ @abc.abstractmethod - def load_json(self) -> Any: + def load_json(self) -> Any: # noqa: ANN401 """ JSONファイルをloadします。 """ @@ -198,11 +198,11 @@ class SimpleAnnotationZipParser(SimpleAnnotationParser): """ - def __init__(self, zip_file: zipfile.ZipFile, json_file_path: str): + def __init__(self, zip_file: zipfile.ZipFile, json_file_path: str) -> None: self.__zip_file = zip_file super().__init__(json_file_path) - def load_json(self) -> Any: + def load_json(self) -> Any: # noqa: ANN401 with self.__zip_file.open(self.json_file_path) as entry: return json.load(entry) @@ -230,10 +230,10 @@ class SimpleAnnotationDirParser(SimpleAnnotationParser): """ - def __init__(self, json_file_path: Path): + def __init__(self, json_file_path: Path) -> None: super().__init__(str(json_file_path)) - def load_json(self) -> Any: + def load_json(self) -> Any: # noqa: ANN401 with open(self.json_file_path, encoding="utf-8") as f: return json.load(f) @@ -263,11 +263,11 @@ class FullAnnotationZipParser(FullAnnotationParser): """ - def __init__(self, zip_file: zipfile.ZipFile, json_file_path: str): + def __init__(self, zip_file: zipfile.ZipFile, json_file_path: str) -> None: self.__zip_file = zip_file super().__init__(json_file_path) - def load_json(self) -> Any: + def load_json(self) -> Any: # noqa: ANN401 with self.__zip_file.open(self.json_file_path) as entry: return json.load(entry) @@ -296,10 +296,10 @@ class FullAnnotationDirParser(FullAnnotationParser): """ - def __init__(self, json_file_path: Path): + def __init__(self, json_file_path: Path) -> None: super().__init__(str(json_file_path)) - def load_json(self) -> Any: + def load_json(self) -> Any: # noqa: ANN401 with open(self.json_file_path, encoding="utf-8") as f: return json.load(f) @@ -320,7 +320,7 @@ class SimpleAnnotationParserByTask(abc.ABC): task_id: タスクID """ - def __init__(self, task_id: str): + def __init__(self, task_id: str) -> None: self.__task_id = task_id @property @@ -393,7 +393,7 @@ def _match_task_id_and_contain_input_data_json(zip_info: zipfile.ZipInfo) -> boo return [zip_info.filename for zip_info in self.__zip_file.infolist() if _match_task_id_and_contain_input_data_json(zip_info)] - def __init__(self, zip_file: zipfile.ZipFile, task_id: str, json_path_list: Optional[List[str]] = None): + def __init__(self, zip_file: zipfile.ZipFile, task_id: str, json_path_list: Optional[List[str]] = None) -> None: self.__zip_file = zip_file if json_path_list is not None: self.__json_path_list = json_path_list @@ -432,7 +432,7 @@ class SimpleAnnotationDirParserByTask(SimpleAnnotationParserByTask): """ - def __init__(self, task_dir_path: Path): + def __init__(self, task_dir_path: Path) -> None: self.__task_dir_path = task_dir_path task_id = task_dir_path.name super().__init__(task_id) @@ -451,7 +451,7 @@ def get_parser(self, json_file_path: str) -> SimpleAnnotationParser: raise ValueError(f"json_file_path '{json_file_path}' は `json_file_path_list` に含まれていません。") -def __parse_annotation_dir(annotation_dir_path: Path, clazz) -> Iterator[Any]: +def __parse_annotation_dir(annotation_dir_path: Path, clazz: Type[Union[SimpleAnnotationDirParser, FullAnnotationDirParser]]) -> Iterator[Any]: for task_dir in annotation_dir_path.iterdir(): if not task_dir.is_dir(): continue @@ -573,8 +573,8 @@ def lazy_parse_simple_annotation_dir_by_task(annotation_dir_path: Path) -> Itera yield task_parser -def __parse_annotation_zip(zip_file_path: Path, clazz) -> Iterator[Any]: - def lazy_parser(zip_file: zipfile.ZipFile, info: zipfile.ZipInfo) -> Optional[Any]: +def __parse_annotation_zip(zip_file_path: Path, clazz: Type[Union[SimpleAnnotationZipParser, FullAnnotationZipParser]]) -> Iterator[Any]: + def lazy_parser(zip_file: zipfile.ZipFile, info: zipfile.ZipInfo) -> Optional[Any]: # noqa: ANN401 paths = [p for p in info.filename.split("/") if len(p) != 0] if len(paths) != 2: return None diff --git a/annofabapi/resource.py b/annofabapi/resource.py index a2a48110..fc7ef5f9 100644 --- a/annofabapi/resource.py +++ b/annofabapi/resource.py @@ -22,7 +22,7 @@ class Resource: """ - def __init__(self, login_user_id: str, login_password: str, endpoint_url: str = DEFAULT_ENDPOINT_URL): + def __init__(self, login_user_id: str, login_password: str, endpoint_url: str = DEFAULT_ENDPOINT_URL) -> None: #: AnnofabApi Instance self.api = AnnofabApi(login_user_id=login_user_id, login_password=login_password, endpoint_url=endpoint_url) diff --git a/annofabapi/segmentation.py b/annofabapi/segmentation.py index 7ca12991..b7bd0164 100644 --- a/annofabapi/segmentation.py +++ b/annofabapi/segmentation.py @@ -3,7 +3,7 @@ from PIL import Image -def read_binary_image(fp) -> numpy.ndarray: +def read_binary_image(fp) -> numpy.ndarray: # noqa: ANN001 """ アノテーションZIP(ディレクトリ)に格納されている塗りつぶし画像を読み込みます。 @@ -18,7 +18,7 @@ def read_binary_image(fp) -> numpy.ndarray: return numpy.array(image, dtype=bool) -def write_binary_image(array: npt.ArrayLike, fp) -> None: +def write_binary_image(array: npt.ArrayLike, fp) -> None: # noqa: ANN001 """ booleanの2次元配列から、Annofab用の塗りつぶし画像を書き出します。 diff --git a/annofabapi/wrapper.py b/annofabapi/wrapper.py index 8bdec972..630c3832 100644 --- a/annofabapi/wrapper.py +++ b/annofabapi/wrapper.py @@ -1318,7 +1318,7 @@ def get_supplementary_data_list_or_none(self, project_id: str, input_data_id: st def put_supplementary_data_from_file( self, - project_id:str, + project_id: str, input_data_id: str, supplementary_data_id: str, file_path: str, From 5c9decc3699738c25022275783a28e0a5d3da6e3 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 14:47:27 +0900 Subject: [PATCH 05/13] update devcontainer --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 815f1e0d..61fbdccd 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -29,7 +29,7 @@ }, "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces,type=bind,consistency=cached", "workspaceFolder": "/workspaces", - "postStartCommand": "poetry install", + "postStartCommand": "poetry install --all-extras", "customizations": { "vscode": { "extensions": [ From 18699c0d1a2f9444b68823e3afcf0e67198bffb0 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 14:49:49 +0900 Subject: [PATCH 06/13] modify ruff --- annofabapi/parser.py | 8 ++++---- annofabapi/utils.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/annofabapi/parser.py b/annofabapi/parser.py index fd2eac5c..3bf58342 100644 --- a/annofabapi/parser.py +++ b/annofabapi/parser.py @@ -85,7 +85,7 @@ def parse(self, convert_detail_data_func: Optional[CONVERT_ANNOTATION_DETAIL_DAT SimpleAnnotationインスタンス """ - simple_annotation = SimpleAnnotation.from_dict(self.load_json()) # type: ignore + simple_annotation = SimpleAnnotation.from_dict(self.load_json()) if convert_detail_data_func is not None: for detail in simple_annotation.details: detail.data = convert_detail_data_func(detail.data) @@ -173,7 +173,7 @@ def parse(self, convert_detail_data_func: Optional[CONVERT_ANNOTATION_DETAIL_DAT FullAnnotationインスタンス """ - full_annotation = FullAnnotation.from_dict(self.load_json()) # type: ignore + full_annotation = FullAnnotation.from_dict(self.load_json()) if convert_detail_data_func is not None: for detail in full_annotation.details: detail.data = convert_detail_data_func(detail.data) @@ -212,7 +212,7 @@ def open_outer_file(self, data_uri: str): return self.__zip_file.open(outer_file_path, mode="r") except KeyError as e: # mypyの `error: "ZipFile" has no attribute "filename"` という警告を無視する - raise AnnotationOuterFileNotFoundError(str(outer_file_path), self.__zip_file.filename) from e # type: ignore + raise AnnotationOuterFileNotFoundError(str(outer_file_path), self.__zip_file.filename) from e class SimpleAnnotationDirParser(SimpleAnnotationParser): @@ -277,7 +277,7 @@ def open_outer_file(self, data_uri: str): return self.__zip_file.open(outer_file_path, mode="r") except KeyError as e: # mypyの `error: "ZipFile" has no attribute "filename"` という警告を無視する - raise AnnotationOuterFileNotFoundError(str(outer_file_path), self.__zip_file.filename) from e # type: ignore + raise AnnotationOuterFileNotFoundError(str(outer_file_path), self.__zip_file.filename) from e class FullAnnotationDirParser(FullAnnotationParser): diff --git a/annofabapi/utils.py b/annofabapi/utils.py index 050bea54..0219b3ec 100644 --- a/annofabapi/utils.py +++ b/annofabapi/utils.py @@ -24,7 +24,7 @@ def str_now() -> str: ISO 8601 formatの現在日時 """ - return to_iso8601_extension(datetime.datetime.now()) + return to_iso8601_extension(datetime.datetime.now(tz=datetime.timezone(datetime.timedelta(hours=9)))) def to_iso8601_extension(d: datetime.datetime, tz: Optional[datetime.tzinfo] = None) -> str: From 097c2ab453b668ec6f946330a147fcc41cddbaac Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 14:52:11 +0900 Subject: [PATCH 07/13] update ruff --- .flake8 | 11 ----------- Makefile | 2 +- annofabapi/exceptions.py | 8 ++++---- annofabapi/generated_api.py | 2 +- annofabapi/generated_api2.py | 1 + 5 files changed, 7 insertions(+), 17 deletions(-) delete mode 100644 .flake8 diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 24609efc..00000000 --- a/.flake8 +++ /dev/null @@ -1,11 +0,0 @@ -[flake8] -max-line-length = 120 - -# formatter 'black'と競合するため、チェックを無視する -# https://black.readthedocs.io/en/stable/the_black_code_style.html#line-length -extend-ignore = E203, W503 - -exclude = test_*.py - -# Python3.12環境だとなぜか警告が出るので、一時的に無視する。将来的にflake8は捨ててruffに移行する予定なので、この設定はそのままにしておく。 -ignore = W604, E231 diff --git a/Makefile b/Makefile index f4b4c2e9..e8c642d6 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ format: poetry run ruff check ${SOURCE_FILES} ${TEST_FILES} --fix-only --exit-zero lint: - poetry run ruff ${SOURCE_FILES} + poetry run ruff check ${SOURCE_FILES} # テストコードはチェックを緩和する # pygrep-hooks, flake8-datetimez, line-too-long, flake8-annotations, unused-noqa poetry run ruff check ${TEST_FILES} --ignore PGH,DTZ,E501,ANN,RUF100 diff --git a/annofabapi/exceptions.py b/annofabapi/exceptions.py index 000a668b..b5a275fa 100644 --- a/annofabapi/exceptions.py +++ b/annofabapi/exceptions.py @@ -29,7 +29,7 @@ class AnnotationOuterFileNotFoundError(AnnofabApiException): """ - def __init__(self, outer_file_path: str, zipfile_path: Optional[str] = None): + def __init__(self, outer_file_path: str, zipfile_path: Optional[str] = None) -> None: if zipfile_path is None: message = f"No such file or directory: '{outer_file_path}'" else: @@ -48,7 +48,7 @@ class NotLoggedInError(AnnofabApiException): """ - def __init__(self, message: Optional[str] = None): + def __init__(self, message: Optional[str] = None) -> None: if message is None: message = "You are not logged in." super().__init__(message) @@ -67,7 +67,7 @@ class CheckSumError(AnnofabApiException): response_etag: アップロードしたときのレスポンスヘッダ'ETag'の値 """ - def __init__(self, message: str, uploaded_data_hash: str, response_etag: str): + def __init__(self, message: str, uploaded_data_hash: str, response_etag: str) -> None: self.uploaded_data_hash = uploaded_data_hash self.response_etag = response_etag @@ -79,6 +79,6 @@ class MfaEnabledUserExecutionError(Exception): MFAが有効化されたユーザーが実行したことを示すエラー """ - def __init__(self, user_id: str): + def __init__(self, user_id: str) -> None: message = f"User (User ID: {user_id}) cannot use annofab-api-python-client because MFA is enabled." super().__init__(message) diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py index 00cb920a..fe0e5596 100644 --- a/annofabapi/generated_api.py +++ b/annofabapi/generated_api.py @@ -1,4 +1,4 @@ -# ruff: noqa: E501 +# ruff: noqa: E501, ANN401 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/generated_api2.py b/annofabapi/generated_api2.py index 9eb93e06..759972cf 100644 --- a/annofabapi/generated_api2.py +++ b/annofabapi/generated_api2.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace From 6b80bc47e4e5f34d24c3d4b4edd4d9fc7ec36826 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 15:01:00 +0900 Subject: [PATCH 08/13] update app.py --- annofabapi/_utils.py | 16 ++++++++-------- annofabapi/api.py | 30 +++++++++++++++--------------- pyproject.toml | 2 ++ 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/annofabapi/_utils.py b/annofabapi/_utils.py index cced6385..b80548c1 100644 --- a/annofabapi/_utils.py +++ b/annofabapi/_utils.py @@ -4,7 +4,7 @@ from typing import Optional -def _issue_deprecated_warning_with_class(cls, stacklevel: int, deprecated_date: str, new_class_name: Optional[str] = None): +def _issue_deprecated_warning_with_class(cls, stacklevel: int, deprecated_date: str, new_class_name: Optional[str] = None): # noqa: ANN001 """非推奨なクラスに対する警告メッセージを出力する。""" old_class_name = f"{cls.__module__}.{cls.__name__}" message = f"deprecated: '{old_class_name}'は{deprecated_date}以降に廃止します。" @@ -13,8 +13,8 @@ def _issue_deprecated_warning_with_class(cls, stacklevel: int, deprecated_date: warnings.warn(message, FutureWarning, stacklevel=stacklevel) -def _process_class(cls, deprecated_date: str, new_class_name: Optional[str] = None): - def decorator(function): +def _process_class(cls, deprecated_date: str, new_class_name: Optional[str] = None): # noqa: ANN001 + def decorator(function): # noqa: ANN001 @wraps(function) def wrapped(*args, **kwargs): _issue_deprecated_warning_with_class(cls, stacklevel=3, deprecated_date=deprecated_date, new_class_name=new_class_name) @@ -22,12 +22,12 @@ def wrapped(*args, **kwargs): return wrapped - cls.__init__ = decorator(cls.__init__) # type: ignore + cls.__init__ = decorator(cls.__init__) return cls -def _process_enum_class(cls, deprecated_date: str, new_class_name: Optional[str] = None): - def getattribute(self, name): +def _process_enum_class(cls, deprecated_date: str, new_class_name: Optional[str] = None): # noqa: ANN001 + def getattribute(self, name): # noqa: ANN001 _issue_deprecated_warning_with_class(cls, stacklevel=4, deprecated_date=deprecated_date, new_class_name=new_class_name) return super(type(self), self).__getattribute__(name) @@ -35,10 +35,10 @@ def getattribute(self, name): return cls -def deprecated_class(_cls=None, *, deprecated_date: str, new_class_name: Optional[str] = None): +def deprecated_class(_cls=None, *, deprecated_date: str, new_class_name: Optional[str] = None): # noqa: ANN001 """クラスを非推奨にします。""" - def wrap(cls): + def wrap(cls): # noqa: ANN001 if issubclass(cls, enum.Enum): return _process_enum_class(cls, deprecated_date=deprecated_date, new_class_name=new_class_name) else: diff --git a/annofabapi/api.py b/annofabapi/api.py index f5a45009..77588c1c 100644 --- a/annofabapi/api.py +++ b/annofabapi/api.py @@ -55,7 +55,7 @@ def _log_error_response(arg_logger: logging.Logger, response: requests.Response) """ - def mask_key(d, key: str): + def mask_key(d, key: str): # noqa: ANN001 if key in d: d[key] = "***" @@ -96,7 +96,7 @@ def mask_key(d, key: str): ) -def _create_request_body_for_logger(data: Any) -> Any: +def _create_request_body_for_logger(data: Any) -> Any: # noqa: ANN401 """ ログに出力するためのreqest_bodyを生成する。 * パスワードやトークンなどの機密情報をマスクする @@ -110,7 +110,7 @@ def _create_request_body_for_logger(data: Any) -> Any: ログ出力用のrequest_body """ - def mask_key(d, key: str): + def mask_key(d, key: str): # noqa: ANN001 if key in d: d[key] = "***" @@ -145,7 +145,7 @@ def _create_query_params_for_logger(params: Dict[str, Any]) -> Dict[str, Any]: ログ出力用のparams """ - def mask_key(d, key: str): + def mask_key(d, key: str): # noqa: ANN001 if key in d: d[key] = "***" @@ -174,14 +174,14 @@ def _should_retry_with_status(status_code: int) -> bool: return False -def my_backoff(function): +def my_backoff(function): # noqa: ANN001 """ HTTP Status Codeが429 or 5XXのときはリトライする. 最大5分間リトライする。 """ @wraps(function) def wrapped(*args, **kwargs): - def fatal_code(e): + def fatal_code(e): # noqa: ANN001 """ リトライするかどうか status codeが5xxのとき、またはToo many Requests(429)のときはリトライする。429以外の4XXはリトライしない @@ -230,7 +230,7 @@ class AnnofabApi(AbstractAnnofabApi): cookies: Signed Cookie情報 """ - def __init__(self, login_user_id: str, login_password: str, endpoint_url: str = DEFAULT_ENDPOINT_URL): + def __init__(self, login_user_id: str, login_password: str, endpoint_url: str = DEFAULT_ENDPOINT_URL) -> None: if not login_user_id or not login_password: raise ValueError("login_user_id or login_password is empty.") @@ -254,10 +254,10 @@ class _MyToken(AuthBase): http://docs.python-requests.org/en/master/user/advanced/#custom-authentication """ - def __init__(self, id_token: str): + def __init__(self, id_token: str) -> None: self.id_token = id_token - def __call__(self, req): + def __call__(self, req): # noqa: ANN001, ANN204 req.headers["Authorization"] = self.id_token return req @@ -288,7 +288,7 @@ def _create_kwargs( self, params: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, + request_body: Optional[Any] = None, # noqa: ANN401 ) -> Dict[str, Any]: """ requestsモジュールのget,...メソッドに渡すkwargsを生成する。 @@ -329,7 +329,7 @@ def _create_kwargs( return kwargs @staticmethod - def _response_to_content(response: requests.Response) -> Any: + def _response_to_content(response: requests.Response) -> Any: # noqa: ANN401 """ Responseのcontentを、Content-Typeに対応した型に変換する。 @@ -364,8 +364,8 @@ def _execute_http_request( url: str, *, params: Optional[Dict[str, Any]] = None, - data: Optional[Any] = None, - json: Optional[Any] = None, # pylint: disable=redefined-outer-name + data: Optional[Any] = None, # noqa: ANN401 + json: Optional[Any] = None, # pylint: disable=redefined-outer-name # noqa: ANN401 headers: Optional[Dict[str, Any]] = None, raise_for_status: bool = True, **kwargs, @@ -455,7 +455,7 @@ def _request_wrapper( *, query_params: Optional[Dict[str, Any]] = None, header_params: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, + request_body: Optional[Any] = None, # noqa: ANN401 raise_for_status: bool = True, ) -> Tuple[Any, requests.Response]: """ @@ -557,7 +557,7 @@ def _request_wrapper( return content, response - def _get_signed_cookie(self, project_id, query_params: Optional[Dict[str, Any]] = None) -> Tuple[Dict[str, Any], requests.Response]: + def _get_signed_cookie(self, project_id, query_params: Optional[Dict[str, Any]] = None) -> Tuple[Dict[str, Any], requests.Response]: # noqa: ANN001 """ アノテーション仕様の履歴情報を取得するために、非公開APIにアクセスする。 変更される可能性あり. diff --git a/pyproject.toml b/pyproject.toml index 60530f82..3a6f943e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,6 +93,8 @@ ignore = [ "ANN002", # missing-type-args "ANN003", # missing-type-kwargs "ERA", # : 役立つこともあるが、コメントアウトしていないコードも警告されるので無視する + "TD", # flake8-todos + "FIX", # flake8-fixme # いずれ無視しないようにする "ANN201", # missing-return-type-public-function: From 6c4c9c05890382d204e750538d5edf076f2177c1 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 15:06:07 +0900 Subject: [PATCH 09/13] updat tests --- Makefile | 2 +- annofabapi/api2.py | 4 +- annofabapi/dataclass/annotation.py | 1 + annofabapi/dataclass/annotation_specs.py | 1 + annofabapi/dataclass/comment.py | 1 + annofabapi/dataclass/organization_member.py | 1 + annofabapi/dataclass/project.py | 1 + annofabapi/dataclass/project_member.py | 1 + annofabapi/dataclass/task.py | 1 + annofabapi/generated_api2.py | 2 +- tests/test_api.py | 128 ++++++++++---------- tests/test_api2.py | 2 +- tests/test_local_parser.py | 16 +-- tests/test_local_utils.py | 26 ++-- 14 files changed, 97 insertions(+), 90 deletions(-) diff --git a/Makefile b/Makefile index e8c642d6..2c4f409a 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ lint: poetry run ruff check ${SOURCE_FILES} # テストコードはチェックを緩和する # pygrep-hooks, flake8-datetimez, line-too-long, flake8-annotations, unused-noqa - poetry run ruff check ${TEST_FILES} --ignore PGH,DTZ,E501,ANN,RUF100 + poetry run ruff check ${TEST_FILES} --ignore PGH,DTZ,E501,ANN,RUF100,G004 poetry run mypy ${SOURCE_FILES} ${TEST_FILES} # テストコードはチェックを緩和するためpylintは実行しない poetry run pylint --jobs=0 ${SOURCE_FILES} diff --git a/annofabapi/api2.py b/annofabapi/api2.py index acf2f7f4..44b94cf4 100644 --- a/annofabapi/api2.py +++ b/annofabapi/api2.py @@ -31,7 +31,7 @@ class AnnofabApi2(AbstractAnnofabApi2): """ - def __init__(self, api: AnnofabApi): + def __init__(self, api: AnnofabApi) -> None: self.api = api self.url_prefix = f"{api.endpoint_url}/api/v2" @@ -50,7 +50,7 @@ def _request_wrapper( *, query_params: Optional[Dict[str, Any]] = None, header_params: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, + request_body: Optional[Any] = None, # noqa: ANN401 raise_for_status: bool = True, ) -> Tuple[Any, requests.Response]: """ diff --git a/annofabapi/dataclass/annotation.py b/annofabapi/dataclass/annotation.py index 82938772..d514b873 100644 --- a/annofabapi/dataclass/annotation.py +++ b/annofabapi/dataclass/annotation.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/annotation_specs.py b/annofabapi/dataclass/annotation_specs.py index f156aaf1..87cd29e2 100644 --- a/annofabapi/dataclass/annotation_specs.py +++ b/annofabapi/dataclass/annotation_specs.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/comment.py b/annofabapi/dataclass/comment.py index f29de6f3..b47fbb33 100644 --- a/annofabapi/dataclass/comment.py +++ b/annofabapi/dataclass/comment.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/organization_member.py b/annofabapi/dataclass/organization_member.py index 858e56f9..7caf5357 100644 --- a/annofabapi/dataclass/organization_member.py +++ b/annofabapi/dataclass/organization_member.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/project.py b/annofabapi/dataclass/project.py index b2ccf1b5..d5abd966 100644 --- a/annofabapi/dataclass/project.py +++ b/annofabapi/dataclass/project.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/project_member.py b/annofabapi/dataclass/project_member.py index 5406a5f6..e661ff27 100644 --- a/annofabapi/dataclass/project_member.py +++ b/annofabapi/dataclass/project_member.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/task.py b/annofabapi/dataclass/task.py index 2cf274a0..9b0daeff 100644 --- a/annofabapi/dataclass/task.py +++ b/annofabapi/dataclass/task.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/generated_api2.py b/annofabapi/generated_api2.py index 759972cf..d4233dab 100644 --- a/annofabapi/generated_api2.py +++ b/annofabapi/generated_api2.py @@ -27,7 +27,7 @@ def _request_wrapper( url_path: str, query_params: Optional[Dict[str, Any]] = None, header_params: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, + request_body: Optional[Any] = None, # noqa: ANN401 ) -> Tuple[Any, requests.Response]: pass diff --git a/tests/test_api.py b/tests/test_api.py index 571f6f0a..fd3bacd0 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -69,13 +69,13 @@ def test_wrapper_get_all_annotation_list(self): def test_get_annotation(self): annotation, _ = api.get_annotation(project_id, task_id, self.input_data_id) - assert type(annotation) == dict + assert type(annotation) == dict # noqa: E721 # dataclassに変換できることの確認 SimpleAnnotation.from_dict(annotation) def test_get_editor_annotation(self): editor_annotation, _ = api.get_editor_annotation(project_id, task_id, self.input_data_id, query_params={"v": "2"}) - assert type(editor_annotation) == dict + assert type(editor_annotation) == dict # noqa: E721 # dataclassに変換できることの確認 AnnotationV2Output.from_dict(editor_annotation) @@ -96,7 +96,7 @@ def test_wrapper_copy_annotation(self): src = TaskFrameKey(project_id, task_id, self.input_data_id) dest = TaskFrameKey(project_id, task_id, self.input_data_id) result = wrapper.copy_annotation(src, dest) - assert result == True + assert result == True # noqa: E712 def test_wrapper_put_annotation_for_simple_annotation_json(self): input_data_id = test_wrapper.get_first_input_data_id_in_task(project_id, task_id) @@ -114,7 +114,7 @@ def test_wrapper_put_annotation_for_simple_annotation_json(self): class TestAnnotationSpecs: def test_get_annotation_specs(self): annotation_spec, _ = api.get_annotation_specs(project_id, query_params={"v": "3"}) - assert type(annotation_spec) == dict + assert type(annotation_spec) == dict # noqa: E721 # dataclassに変換できることの確認 AnnotationSpecsV3.from_dict(annotation_spec) @@ -129,11 +129,11 @@ def test_put_annotation_specs(self): "last_updated_datetime": last_updated_datetime, } puted_annotation_spec, _ = api.put_annotation_specs(project_id, request_body=request_body) - assert type(puted_annotation_spec) == dict + assert type(puted_annotation_spec) == dict # noqa: E721 def test_get_annotation_specs_histories(self): annotation_specs_histories = api.get_annotation_specs_histories(project_id)[0] - assert type(annotation_specs_histories) == list + assert type(annotation_specs_histories) == list # noqa: E721 def test_get_annotation_specs_relation(self): result = wrapper.get_annotation_specs_relation(project_id, project_id) @@ -181,7 +181,7 @@ def test_put_get_delete_comment(self): comments, _ = api.get_comments(project_id, task_id, input_data_id) # dataclassに変換できることの確認 - dc_comments = Comment.schema().load(comments, many=True) + Comment.schema().load(comments, many=True) assert first_true(comments, pred=lambda e: e["comment_id"] == comment_id) is not None @@ -211,11 +211,11 @@ def setup_class(cls): cls.input_data_id = test_wrapper.get_first_input_data_id_in_task(project_id, task_id) def test_wrapper_get_input_data_list(self): - assert type(wrapper.get_all_input_data_list(project_id, {"input_data_name": "foo"})) == list + assert type(wrapper.get_all_input_data_list(project_id, {"input_data_name": "foo"})) == list # noqa: E721 def test_get_input_data(self): dict_input_data, _ = api.get_input_data(project_id, self.input_data_id) - assert type(dict_input_data) == dict + assert type(dict_input_data) == dict # noqa: E721 # dataclassに変換できることの確認 InputData.from_dict(dict_input_data) @@ -223,8 +223,8 @@ def test_wrapper_put_input_data_from_file_and_delete_input_data(self): test_input_data_id = str(uuid.uuid4()) print("") print(f"put_input_data: input_data_id={test_input_data_id}") - assert type(wrapper.put_input_data_from_file(project_id, test_input_data_id, f"{test_dir}/lenna.png")) == dict - assert type(api.delete_input_data(project_id, test_input_data_id)[0]) == dict + assert type(wrapper.put_input_data_from_file(project_id, test_input_data_id, f"{test_dir}/lenna.png")) == dict # noqa: E721 + assert type(api.delete_input_data(project_id, test_input_data_id)[0]) == dict # noqa: E721 def test_put_input_data_from_file_and_batch_update_inputs(self): test_input_data_id = str(uuid.uuid4()) @@ -233,12 +233,12 @@ def test_put_input_data_from_file_and_batch_update_inputs(self): wrapper.put_input_data_from_file(project_id, test_input_data_id, f"{test_dir}/lenna.png") request_body = [{"project_id": project_id, "input_data_id": test_input_data_id, "_type": "Delete"}] - assert type(api.batch_update_inputs(project_id, request_body=request_body)[0]) == list + assert type(api.batch_update_inputs(project_id, request_body=request_body)[0]) == list # noqa: E721 class TestInstruction: def test_wrapper_get_latest_instruction(self): - assert type(wrapper.get_latest_instruction(project_id)) == dict + assert type(wrapper.get_latest_instruction(project_id)) == dict # noqa: E721 def test_get_instruction_history(self): histories = api.get_instruction_history(project_id)[0] @@ -254,7 +254,7 @@ def test_wrapper_upload_instruction_image_and_delete_instruction_image(self): def test_get_instruction_images(self): image_list = api.get_instruction_images(project_id)[0] - assert type(image_list) == list + assert type(image_list) == list # noqa: E721 def test_put_instruction(self): str_now = datetime.datetime.now().isoformat() @@ -262,7 +262,7 @@ def test_put_instruction(self): histories = api.get_instruction_history(project_id)[0] put_request_body = {"html": html_data, "last_updated_datetime": histories[0]["updated_datetime"]} - assert type(api.put_instruction(project_id, request_body=put_request_body)[0]) == dict + assert type(api.put_instruction(project_id, request_body=put_request_body)[0]) == dict # noqa: E721 class TestJob: @@ -275,11 +275,11 @@ def test_scenario(self): job_id = job["job_id"] job_list = wrapper.get_all_project_job(project_id, {"type": job_type}) - assert wrapper.can_execute_job(project_id, ProjectJobType.GEN_TASKS_LIST) == False - assert wrapper.job_in_progress(project_id, ProjectJobType.GEN_TASKS_LIST) == True + assert wrapper.can_execute_job(project_id, ProjectJobType.GEN_TASKS_LIST) == False # noqa: E712 + assert wrapper.job_in_progress(project_id, ProjectJobType.GEN_TASKS_LIST) == True # noqa: E712 # dataclassに変換できることの確認 - dc_job_list = ProjectJobInfo.schema().load(job_list, many=True) + dc_job_list = ProjectJobInfo.schema().load(job_list, many=True) # noqa: F841 assert first_true(job_list, pred=lambda e: e["job_id"] == job_id) is not None # ジョブが終了するまで待つ @@ -307,7 +307,7 @@ def test_login(self): class TestMy: def test_get_my_account(self): my_account, _ = api.get_my_account() - assert type(my_account) == dict + assert type(my_account) == dict # noqa: E721 def test_get_my_project_members(self): my_project_members, _ = api.get_my_project_members() @@ -323,7 +323,7 @@ def test_get_my_projects(self): def test_get_my_member_in_project(self): my_member_in_project, _ = api.get_my_member_in_project(project_id) - assert type(my_member_in_project) == dict + assert type(my_member_in_project) == dict # noqa: E721 class TestOrganization: @@ -335,12 +335,12 @@ def setup_class(cls): def test_get_organization(self): organization, _ = api.get_organization(self.organization_name) - assert type(organization) == dict + assert type(organization) == dict # noqa: E721 # dataclassに変換できることの確認 Organization.from_dict(organization) def test_get_organization_activity(self): - assert type(api.get_organization_activity(self.organization_name)[0]) == dict + assert type(api.get_organization_activity(self.organization_name)[0]) == dict # noqa: E721 def test_wrapper_get_all_projects_of_organization(self): assert len(wrapper.get_all_projects_of_organization(self.organization_name)) > 0 @@ -361,7 +361,7 @@ def test_wrapper_get_all_organization_members(self): def test_get_organization_member(self): organization_member = api.get_organization_member(self.organization_name, api.login_user_id)[0] - assert type(organization_member) == dict + assert type(organization_member) == dict # noqa: E721 def test_update_organization_member_role(self): organization_member = api.get_organization_member(self.organization_name, api.login_user_id)[0] @@ -372,16 +372,16 @@ def test_update_organization_member_role(self): class TestProject: def test_get_project(self): dict_project, _ = api.get_project(project_id) - assert type(dict_project) == dict + assert type(dict_project) == dict # noqa: E721 # dataclassに変換できることの確認 Project.from_dict(dict_project) def test_get_organization_of_project(self): - assert type(api.get_organization_of_project(project_id)[0]) == dict + assert type(api.get_organization_of_project(project_id)[0]) == dict # noqa: E721 @pytest.mark.submitting_job def test_post_project_tasks_update(self): - assert type(api.post_project_tasks_update(project_id)[0]) == dict + assert type(api.post_project_tasks_update(project_id)[0]) == dict # noqa: E721 def test_wrapper_download_project_inputs_url(self): assert wrapper.download_project_inputs_url(project_id, f"{out_dir}/inputs.json").startswith("https://") @@ -402,7 +402,7 @@ def test_wrapper_download_project_comments_url(self): class TestProjectMember: def test_get_project_member(self): my_member = api.get_project_member(project_id, api.login_user_id)[0] - assert type(my_member) == dict + assert type(my_member) == dict # noqa: E721 def test_wrapper_get_all_project_members(self): member_list = wrapper.get_all_project_members(project_id) @@ -413,82 +413,82 @@ def test_wrapper_get_all_project_members(self): class TestStatistics: def test_wrapper_get_account_daily_statistics(self): actual = wrapper.get_account_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-06-30") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 最大取得期間の3ヶ月を超えている場合 actual = wrapper.get_account_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-07-01") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 開始日と終了日を指定しない場合 actual = wrapper.get_account_daily_statistics(project_id) - assert type(actual) == list + assert type(actual) == list # noqa: E721 def test_wrapper_get_inspection_daily_statistics(self): actual = wrapper.get_inspection_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-06-30") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 最大取得期間の3ヶ月を超えている場合 actual = wrapper.get_inspection_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-07-01") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 開始日と終了日を指定しない場合 actual = wrapper.get_inspection_daily_statistics(project_id) - assert type(actual) == list + assert type(actual) == list # noqa: E721 def test_wrapper_get_phase_daily_statistics(self): actual = wrapper.get_phase_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-06-30") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 最大取得期間の3ヶ月を超えている場合 actual = wrapper.get_phase_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-07-01") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 開始日と終了日を指定しない場合 actual = wrapper.get_phase_daily_statistics(project_id) - assert type(actual) == list + assert type(actual) == list # noqa: E721 def test_wrapper_get_task_daily_statistics(self): actual = wrapper.get_task_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-06-30") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 最大取得期間の3ヶ月を超えている場合 actual = wrapper.get_task_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-07-01") - assert type(actual) == list + assert type(actual) == list # noqa: E721 # 開始日と終了日を指定しない場合 actual = wrapper.get_task_daily_statistics(project_id) - assert type(actual) == list + assert type(actual) == list # noqa: E721 def test_wrapper_get_worktime_daily_statistics(self): actual = wrapper.get_worktime_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-06-30") - assert type(actual) == dict + assert type(actual) == dict # noqa: E721 # 最大取得期間の3ヶ月を超えている場合 actual = wrapper.get_worktime_daily_statistics(project_id, from_date="2021-04-01", to_date="2021-07-01") - assert type(actual) == dict + assert type(actual) == dict # noqa: E721 # 開始日と終了日を指定しない場合 actual = wrapper.get_worktime_daily_statistics(project_id) - assert type(actual) == dict + assert type(actual) == dict # noqa: E721 def test_wrapper_get_worktime_daily_statistics_by_account(self): actual = wrapper.get_worktime_daily_statistics_by_account(project_id, account_id=api.account_id, from_date="2021-04-01", to_date="2021-06-30") - assert type(actual) == dict + assert type(actual) == dict # noqa: E721 # 最大取得期間の3ヶ月を超えている場合 actual = wrapper.get_worktime_daily_statistics_by_account(project_id, account_id=api.account_id, from_date="2021-04-01", to_date="2021-07-01") - assert type(actual) == dict + assert type(actual) == dict # noqa: E721 # 開始日と終了日を指定しない場合 actual = wrapper.get_worktime_daily_statistics_by_account( project_id, account_id=api.account_id, ) - assert type(actual) == dict + assert type(actual) == dict # noqa: E721 def test_wrapper_get_label_statistics(self): actual = wrapper.get_label_statistics(project_id) - assert type(actual) == list + assert type(actual) == list # noqa: E721 def test_graph_marker(self): old_markers, _ = api.get_markers(project_id) @@ -514,7 +514,7 @@ def test_graph_marker(self): def test_get_statistics_available_dates(self): content, _ = api.get_statistics_available_dates(project_id) - assert type(content) == list + assert type(content) == list # noqa: E721 class Testsupplementary: @@ -554,7 +554,7 @@ def setup_class(cls): cls.input_data_id = test_wrapper.get_first_input_data_id_in_task(project_id, task_id) def test_wraper_get_all_tasks(self): - assert type(wrapper.get_all_tasks(project_id, query_params={"task_id": "foo"})) == list + assert type(wrapper.get_all_tasks(project_id, query_params={"task_id": "foo"})) == list # noqa: E721 @pytest.mark.submitting_job def test_initiate_tasks_generation_by_csv(self): @@ -562,13 +562,13 @@ def test_initiate_tasks_generation_by_csv(self): test_task_id = str(uuid.uuid4()) create_csv_for_task(csv_file_path, test_task_id, self.input_data_id) content = wrapper.initiate_tasks_generation_by_csv(project_id, csv_file_path) - assert type(content) == dict + assert type(content) == dict # noqa: E721 def test_get_task(self): dict_task, _ = api.get_task(project_id, task_id) - assert type(dict_task) == dict + assert type(dict_task) == dict # noqa: E721 # dataclassに変換できることの確認 - task = Task.from_dict(dict_task) + task = Task.from_dict(dict_task) # noqa: F841 def test_put_task_and_delete_task(self): test_task_id = str(uuid.uuid4()) @@ -576,14 +576,14 @@ def test_put_task_and_delete_task(self): print("") print(f"put_task: task_id={task_id}") test_task_data = api.put_task(project_id, test_task_id, request_body=request_body)[0] - assert type(test_task_data) == dict + assert type(test_task_data) == dict # noqa: E721 - assert type(api.delete_task(project_id, test_task_id)[0]) == dict + assert type(api.delete_task(project_id, test_task_id)[0]) == dict # noqa: E721 @pytest.mark.side_effect def test_assign_task(self): request_body = {"request_type": {"phase": "annotation", "_type": "Random"}} - assert type(api.assign_tasks(project_id, request_body=request_body)[0]) == list + assert type(api.assign_tasks(project_id, request_body=request_body)[0]) == list # noqa: E721 def test_operate_task_in_change_task_status_to_break(self): task = wrapper.change_task_status_to_break(project_id, task_id) @@ -600,16 +600,16 @@ def test_batch_update_tasks(self): request_body = {"input_data_id_list": [self.input_data_id]} print("") print(f"put_task: task_id={task_id}") - test_task_data = api.put_task(project_id, test_task_id, request_body=request_body)[0] + test_task_data = api.put_task(project_id, test_task_id, request_body=request_body)[0] # noqa: F841 request_body2 = [{"project_id": project_id, "task_id": test_task_id, "_type": "Delete"}] content = api.batch_update_tasks(project_id, request_body=request_body2)[0] - assert type(content) == list + assert type(content) == list # noqa: E721 def test_patch_tasks_metadata(self): request_body = {task_id: {"alice": "foo", "bob": 1.23, "charlie": False}} content, _ = api.patch_tasks_metadata(project_id, request_body) - assert type(content) == dict + assert type(content) == dict # noqa: E721 class TestWebhook: @@ -661,38 +661,38 @@ def setup_class(cls): cls.input_data_id = test_wrapper.get_first_input_data_id_in_task(project_id, task_id) def test_get_input_data_or_none(self): - assert type(wrapper.get_input_data_or_none(project_id, self.input_data_id)) == dict + assert type(wrapper.get_input_data_or_none(project_id, self.input_data_id)) == dict # noqa: E721 assert wrapper.get_input_data_or_none(project_id, "not-exists") is None assert wrapper.get_input_data_or_none("not-exists", self.input_data_id) is None def test_get_organization_or_none(self): - assert type(wrapper.get_organization_or_none(self.organization_name)) == dict + assert type(wrapper.get_organization_or_none(self.organization_name)) == dict # noqa: E721 assert wrapper.get_organization_or_none("not-exists") is None def test_get_organization_member_or_none(self): - assert type(wrapper.get_organization_member_or_none(self.organization_name, api.login_user_id)) == dict + assert type(wrapper.get_organization_member_or_none(self.organization_name, api.login_user_id)) == dict # noqa: E721 assert wrapper.get_organization_member_or_none("not-exists", api.login_user_id) is None assert wrapper.get_organization_member_or_none(self.organization_name, "not-exists") is None def test_get_project_or_none(self): - assert type(wrapper.get_project_or_none(project_id)) == dict + assert type(wrapper.get_project_or_none(project_id)) == dict # noqa: E721 assert wrapper.get_project_or_none("not-exists") is None def test_get_project_member_or_none(self): - assert type(wrapper.get_project_member_or_none(project_id, api.login_user_id)) == dict + assert type(wrapper.get_project_member_or_none(project_id, api.login_user_id)) == dict # noqa: E721 assert wrapper.get_project_member_or_none(project_id, "not-exists") is None assert wrapper.get_project_member_or_none("not-exists", api.login_user_id) is None def test_get_task_or_none(self): - assert type(wrapper.get_task_or_none(project_id, task_id)) == dict + assert type(wrapper.get_task_or_none(project_id, task_id)) == dict # noqa: E721 assert wrapper.get_task_or_none(project_id, "not-exists") is None @@ -740,4 +740,4 @@ def test_request_get_with_cookie_failed(self): class TestProperty: def test_account_id(self): account_id = api.account_id - assert type(account_id) == str and len(account_id) > 0 + assert type(account_id) == str and len(account_id) > 0 # noqa: E721 diff --git a/tests/test_api2.py b/tests/test_api2.py index 698fea3a..bbaa12ef 100644 --- a/tests/test_api2.py +++ b/tests/test_api2.py @@ -30,4 +30,4 @@ def test_project(): content, _ = service.api2.get_project_cache_v2(project_id) - assert type(content) == dict + assert type(content) == dict # noqa: E721 diff --git a/tests/test_local_parser.py b/tests/test_local_parser.py index 04e807d9..c09678e6 100644 --- a/tests/test_local_parser.py +++ b/tests/test_local_parser.py @@ -56,7 +56,7 @@ def test_parse_for_zip(self): parser = SimpleAnnotationZipParser(zip_file, "sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json") simple_annotation = parser.parse() - assert type(simple_annotation.details[0].data) == dict + assert type(simple_annotation.details[0].data) == dict # noqa: E721 simple_annotation2 = parser.parse(self.convert_deitail_data) assert type(simple_annotation2.details[0].data) == FullAnnotationDataPoints @@ -117,7 +117,7 @@ def test_simple_annotation_zip(self): index += 1 dict_simple_annotation = parser.load_json() - assert type(dict_simple_annotation) == dict + assert type(dict_simple_annotation) == dict # noqa: E721 assert "details" in dict_simple_annotation assert index == 4 @@ -133,7 +133,7 @@ def test_simple_annotation_dir(self): index += 1 dict_simple_annotation = parser.load_json() - assert type(dict_simple_annotation) == dict + assert type(dict_simple_annotation) == dict # noqa: E721 assert "details" in dict_simple_annotation assert index == 4 @@ -146,7 +146,7 @@ def test_lazy_parse_simple_annotation_zip_by_task(self): assert len([e for e in task_parser_list if e.task_id == "sample_1"]) == 1 assert len([e for e in task_parser_list if e.task_id == "sample_0"]) == 1 - task_parser = [e for e in task_parser_list if e.task_id == "sample_1"][0] + task_parser = [e for e in task_parser_list if e.task_id == "sample_1"][0] # noqa: RUF015 parser_list = list(task_parser.lazy_parse()) assert len(parser_list) == 2 assert len([e for e in parser_list if e.input_data_id == "c6e1c2ec-6c7c-41c6-9639-4244c2ed2839"]) == 1 @@ -160,7 +160,7 @@ def test_lazy_parse_simple_annotation_dir_by_task(self): assert len([e for e in task_parser_list if e.task_id == "sample_1"]) == 1 assert len([e for e in task_parser_list if e.task_id == "sample_0"]) == 1 - task_parser = [e for e in task_parser_list if e.task_id == "sample_1"][0] + task_parser = [e for e in task_parser_list if e.task_id == "sample_1"][0] # noqa: RUF015 parser_list = list(task_parser.lazy_parse()) assert len(parser_list) == 2 assert len([e for e in parser_list if e.input_data_id == "c6e1c2ec-6c7c-41c6-9639-4244c2ed2839"]) == 1 @@ -186,7 +186,7 @@ def test_full_annotation_zip(self): assert parser.input_data_id == "c86205d1-bdd4-4110-ae46-194e661d622b" dict_simple_annotation = parser.load_json() - assert type(dict_simple_annotation) == dict + assert type(dict_simple_annotation) == dict # noqa: E721 assert "details" in dict_simple_annotation with pytest.raises(AnnotationOuterFileNotFoundError): @@ -209,7 +209,7 @@ def test_full_annotation_dir(self): assert parser_full.input_data_id == "c86205d1-bdd4-4110-ae46-194e661d622b" dict_simple_annotation = parser_full.load_json() - assert type(dict_simple_annotation) == dict + assert type(dict_simple_annotation) == dict # noqa: E721 assert "details" in dict_simple_annotation with pytest.raises(AnnotationOuterFileNotFoundError): @@ -228,7 +228,7 @@ def test_parse_for_zip(self): parser = FullAnnotationZipParser(zip_file, "sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json") full_annotation = parser.parse() - assert type(full_annotation.details[0].data) == dict + assert type(full_annotation.details[0].data) == dict # noqa: E721 full_annotation2 = parser.parse(self.convert_deitail_data) assert type(full_annotation2.details[0].data) == FullAnnotationDataPoints diff --git a/tests/test_local_utils.py b/tests/test_local_utils.py index e07cc3ea..4c5a8cd5 100644 --- a/tests/test_local_utils.py +++ b/tests/test_local_utils.py @@ -38,7 +38,7 @@ def test_get_task_history_index_skipped_acceptance_検査0回_受入スキップ actual = get_task_history_index_skipped_acceptance(task_history_list) expected = [1] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_acceptance_検査0回_受入スキップ後に受入取消(self): task_history_list: list[dict[str, Any]] = [ @@ -70,7 +70,7 @@ def test_get_task_history_index_skipped_acceptance_検査0回_受入スキップ actual = get_task_history_index_skipped_acceptance(task_history_list) expected = [1] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_acceptance_検査0回_教師付で提出取消(self): task_history_list: list[dict[str, Any]] = [ @@ -101,7 +101,7 @@ def test_get_task_history_index_skipped_acceptance_検査0回_教師付で提出 ] actual = get_task_history_index_skipped_acceptance(task_history_list) expected: list[int] = [] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_acceptance_検査1回_検査で提出取消(self): task_history_list: list[dict[str, Any]] = [ @@ -141,7 +141,7 @@ def test_get_task_history_index_skipped_acceptance_検査1回_検査で提出取 actual = get_task_history_index_skipped_acceptance(task_history_list) expected: list[int] = [] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_inspection_検査1回_検査スキップ(self): task_history_list: list[dict[str, Any]] = [ @@ -173,7 +173,7 @@ def test_get_task_history_index_skipped_inspection_検査1回_検査スキップ actual = get_task_history_index_skipped_inspection(task_history_list) expected = [1] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_inspection_検査1回_教師付で提出取消(self): task_history_list: list[dict[str, Any]] = [ @@ -204,7 +204,7 @@ def test_get_task_history_index_skipped_inspection_検査1回_教師付で提出 ] actual = get_task_history_index_skipped_inspection(task_history_list) expected: list[int] = [] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_inspection_検査2回_検査1回目で提出取消(self): task_history_list: list[dict[str, Any]] = [ @@ -243,7 +243,7 @@ def test_get_task_history_index_skipped_inspection_検査2回_検査1回目で ] actual = get_task_history_index_skipped_inspection(task_history_list) expected: list[int] = [] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_number_of_rejections_教師付1回目(self): task_history_short_list: list[dict[str, Any]] = [{"account_id": self.ACCOUNT_ID, "phase": "annotation", "phase_stage": 1, "worked": True}] @@ -335,7 +335,7 @@ def test_get_task_history_index_skipped_acceptance_検査0回_受入スキップ actual = get_task_history_index_skipped_acceptance(task_history_list) expected = [2] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_acceptance_検査0回_受入スキップ後に受入取消(self): task_history_list: list[dict[str, Any]] = [ @@ -387,7 +387,7 @@ def test_get_task_history_index_skipped_acceptance_検査0回_受入スキップ actual = get_task_history_index_skipped_acceptance(task_history_list) expected = [2] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_acceptance_検査0回_教師付で提出取消(self): task_history_list: list[dict[str, Any]] = [ @@ -439,7 +439,7 @@ def test_get_task_history_index_skipped_acceptance_検査0回_教師付で提出 actual = get_task_history_index_skipped_acceptance(task_history_list) expected: list[int] = [] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_acceptance_検査1回_検査で提出取消(self): task_history_list: list[dict[str, Any]] = [ @@ -513,7 +513,7 @@ def test_get_task_history_index_skipped_acceptance_検査1回_検査で提出取 actual = get_task_history_index_skipped_acceptance(task_history_list) expected: list[int] = [] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_inspection_検査1回_検査スキップ(self): task_history_list: list[dict[str, Any]] = [ @@ -565,7 +565,7 @@ def test_get_task_history_index_skipped_inspection_検査1回_検査スキップ actual = get_task_history_index_skipped_inspection(task_history_list) expected = [2] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_task_history_index_skipped_inspection_検査1回_教師付で提出取消(self): task_history_list: list[dict[str, Any]] = [ @@ -616,7 +616,7 @@ def test_get_task_history_index_skipped_inspection_検査1回_教師付で提出 ] actual = get_task_history_index_skipped_inspection(task_history_list) expected: list[int] = [] - assert all([a == b for a, b in zip(actual, expected)]) + assert all([a == b for a, b in zip(actual, expected)]) # noqa: C419 def test_get_message_for_i18n(): From 4d38398c618b6ae73456b45c5b8b8123d4e13c1b Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 15:15:41 +0900 Subject: [PATCH 10/13] =?UTF-8?q?=E5=BE=AA=E7=92=B0import=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- annofabapi/__init__.py | 2 +- pyproject.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/annofabapi/__init__.py b/annofabapi/__init__.py index f7a66192..2328d302 100644 --- a/annofabapi/__init__.py +++ b/annofabapi/__init__.py @@ -1,7 +1,7 @@ from annofabapi.api import AnnofabApi from annofabapi.api2 import AnnofabApi2 -from annofabapi.resource import Resource, build, build_from_env, build_from_netrc from annofabapi.wrapper import Wrapper +from annofabapi.resource import build, build_from_netrc, build_from_env, Resource from .__version__ import __version__ diff --git a/pyproject.toml b/pyproject.toml index 3a6f943e..471c7230 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -77,6 +77,7 @@ plugins = ["numpy.typing.mypy_plugin"] [tool.ruff] target-version = "py38" line-length = 150 +exclude = ["annofabapi/__init__.py"] [tool.ruff.lint] ignore = [ From 7b80a29e5edc8a5a1785803051544bd911244ea2 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 15:18:34 +0900 Subject: [PATCH 11/13] =?UTF-8?q?=E8=87=AA=E5=8B=95=E7=94=9F=E6=88=90?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generate/partial-header/generated_api_partial_header_v1.py | 2 +- generate/partial-header/generated_api_partial_header_v2.py | 2 +- generate/partial-header/models_partial_header_v1.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/generate/partial-header/generated_api_partial_header_v1.py b/generate/partial-header/generated_api_partial_header_v1.py index 9f4301ee..5ddf1f0f 100644 --- a/generate/partial-header/generated_api_partial_header_v1.py +++ b/generate/partial-header/generated_api_partial_header_v1.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/generate/partial-header/generated_api_partial_header_v2.py b/generate/partial-header/generated_api_partial_header_v2.py index 8f050f56..5495ce46 100644 --- a/generate/partial-header/generated_api_partial_header_v2.py +++ b/generate/partial-header/generated_api_partial_header_v2.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/generate/partial-header/models_partial_header_v1.py b/generate/partial-header/models_partial_header_v1.py index 98dbea0a..12e31163 100644 --- a/generate/partial-header/models_partial_header_v1.py +++ b/generate/partial-header/models_partial_header_v1.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ @@ -23,7 +23,7 @@ Example: ``12345678-abcd-1234-abcd-1234abcd5678`` - + """ UserId = NewType("UserId", str) From bff2dbdf9b1a0f4e4d101c29ed434f91e3518117 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 16:56:01 +0900 Subject: [PATCH 12/13] =?UTF-8?q?docker=E3=82=92=E5=88=A9=E7=94=A8?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .devcontainer/Dockerfile | 18 +- .devcontainer/devcontainer.json | 1 + .devcontainer/entrypoint.sh | 9 + .travis.yml | 2 +- annofabapi/dataclass/annotation.py | 1 - annofabapi/dataclass/annotation_specs.py | 1 - annofabapi/dataclass/comment.py | 1 - annofabapi/dataclass/organization_member.py | 1 - annofabapi/dataclass/project.py | 9 +- annofabapi/dataclass/project_member.py | 1 - annofabapi/dataclass/task.py | 1 - annofabapi/generated_api.py | 52 +- annofabapi/generated_api2.py | 3 +- annofabapi/models.py | 1979 +++++++++---------- 14 files changed, 1028 insertions(+), 1051 deletions(-) create mode 100644 .devcontainer/entrypoint.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a92135e1..96163fd6 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -28,11 +28,15 @@ RUN set -x \ # Install Ubuntu packages RUN set -x \ + # for docker + && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \ + && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ # Python3.11をインストールするために、deadsnakes PPAを追加 && add-apt-repository ppa:deadsnakes/ppa \ # Install packages && apt-get update \ && apt-get install -y --no-install-recommends \ + docker-ce-cli \ # python python3.11-dev \ python3-pip \ @@ -57,6 +61,14 @@ RUN set -x \ && rm -rf /var/lib/apt/lists/* +# docker hack in devcontainer +RUN set -x \ + && mkdir -p /usr/local/devcontainer-tool/bin \ + && curl -fsSL -o /usr/local/devcontainer-tool/bin/docker https://github.com/thamaji/devcontainer-docker/releases/download/v1.0.3/docker \ + && chmod +x /usr/local/devcontainer-tool/bin/docker +ENV PATH=/usr/local/devcontainer-tool/bin:${PATH} + + # Python / pip RUN ln -s $(which python3.11) /usr/bin/python ENV PYTHONDONTWRITEBYTECODE=1 \ @@ -75,8 +87,12 @@ RUN set -x \ # Add user / Grant sudo privileges RUN useradd -m -s /bin/bash -u 5000 -U vscode \ - && echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/ALL + && echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/ALL \ + && groupadd --gid 999 docker \ + && usermod -aG docker vscode USER vscode RUN poetry config virtualenvs.in-project true + +ENTRYPOINT [ "bash", "/entrypoint.sh" ] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 61fbdccd..1262374a 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -13,6 +13,7 @@ // マウント対象のディレクトリを事前に作成する "initializeCommand": "mkdir -p ${localWorkspaceFolder}/.devcontainer/venv", "mounts": [ + "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind", // ホスト側のvenvとコンテナ側のvenvを分類して、ホスト側でpoetryコマンドを利用できるようにする "source=${localWorkspaceFolder}/.devcontainer/venv,target=${containerWorkspaceFolder}/.venv,type=bind" ], diff --git a/.devcontainer/entrypoint.sh b/.devcontainer/entrypoint.sh new file mode 100644 index 00000000..06db0468 --- /dev/null +++ b/.devcontainer/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eu + +# docker.sock から gid を取得して、docker グループの gid を変更 +docker_group_id=$(ls -n /var/run/docker.sock | cut -d ' ' -f 4) +sudo groupmod --gid ${docker_group_id} docker + +# 無限待ち(vscode デフォルトの entrypoint と同じ方法で) +while sleep 1000; do :; done \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index e24ee912..52565088 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,10 +16,10 @@ jobs: - python: 3.8 - python: 3.9 - python: 3.10 + - python: 3.11 script: # 開発環境と同じPythonバージョンのみlintを実行する - make lint - - python: 3.11 - python: 3.12 diff --git a/annofabapi/dataclass/annotation.py b/annofabapi/dataclass/annotation.py index d514b873..82938772 100644 --- a/annofabapi/dataclass/annotation.py +++ b/annofabapi/dataclass/annotation.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/annotation_specs.py b/annofabapi/dataclass/annotation_specs.py index 87cd29e2..f156aaf1 100644 --- a/annofabapi/dataclass/annotation_specs.py +++ b/annofabapi/dataclass/annotation_specs.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/comment.py b/annofabapi/dataclass/comment.py index b47fbb33..f29de6f3 100644 --- a/annofabapi/dataclass/comment.py +++ b/annofabapi/dataclass/comment.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/organization_member.py b/annofabapi/dataclass/organization_member.py index 7caf5357..858e56f9 100644 --- a/annofabapi/dataclass/organization_member.py +++ b/annofabapi/dataclass/organization_member.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/project.py b/annofabapi/dataclass/project.py index d5abd966..82f33a98 100644 --- a/annofabapi/dataclass/project.py +++ b/annofabapi/dataclass/project.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace @@ -15,13 +14,7 @@ from dataclasses_json import DataClassJsonMixin -from annofabapi.models import ( - AssigneeRuleOfResubmittedTask, - InputDataType, - ProjectStatus, - TaskAssignmentProperty, - TaskAssignmentType, -) +from annofabapi.models import AssigneeRuleOfResubmittedTask, InputDataType, ProjectStatus, TaskAssignmentProperty, TaskAssignmentType @dataclass diff --git a/annofabapi/dataclass/project_member.py b/annofabapi/dataclass/project_member.py index e661ff27..5406a5f6 100644 --- a/annofabapi/dataclass/project_member.py +++ b/annofabapi/dataclass/project_member.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/dataclass/task.py b/annofabapi/dataclass/task.py index 9b0daeff..2cf274a0 100644 --- a/annofabapi/dataclass/task.py +++ b/annofabapi/dataclass/task.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 # flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py index fe0e5596..f1e1d2db 100644 --- a/annofabapi/generated_api.py +++ b/annofabapi/generated_api.py @@ -1,5 +1,4 @@ -# ruff: noqa: E501, ANN401 -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ @@ -38,11 +37,7 @@ def _request_wrapper( ######################################### def batch_update_annotations( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, - **kwargs, + self, project_id: str, query_params: Optional[Dict[str, Any]] = None, request_body: Optional[Any] = None, **kwargs ) -> Tuple[Any, requests.Response]: """アノテーション一括更新 https://annofab.com/docs/api/#operation/batchUpdateAnnotations @@ -177,11 +172,7 @@ def get_archive_full_with_pro_id(self, project_id: str, **kwargs) -> Tuple[Any, """ - warnings.warn( - "annofabapi.AnnofabApi.get_archive_full_with_pro_id() is deprecated and will be removed.", - FutureWarning, - stacklevel=2, - ) + warnings.warn("annofabapi.AnnofabApi.get_archive_full_with_pro_id() is deprecated and will be removed.", FutureWarning, stacklevel=2) url_path = f"/projects/{project_id}/archive/full" http_method = "GET" keyword_params: Dict[str, Any] = {} @@ -345,11 +336,7 @@ def get_annotation_specs_histories(self, project_id: str, **kwargs) -> Tuple[Any return self._request_wrapper(http_method, url_path, **keyword_params) def put_annotation_specs( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, - **kwargs, + self, project_id: str, query_params: Optional[Dict[str, Any]] = None, request_body: Optional[Any] = None, **kwargs ) -> Tuple[Any, requests.Response]: """アノテーション仕様更新 https://annofab.com/docs/api/#operation/putAnnotationSpecs @@ -660,11 +647,7 @@ def batch_update_inspections( """ - warnings.warn( - "annofabapi.AnnofabApi.batch_update_inspections() is deprecated and will be removed.", - FutureWarning, - stacklevel=2, - ) + warnings.warn("annofabapi.AnnofabApi.batch_update_inspections() is deprecated and will be removed.", FutureWarning, stacklevel=2) url_path = f"/projects/{project_id}/tasks/{task_id}/inputs/{input_data_id}/inspections" http_method = "POST" keyword_params: Dict[str, Any] = { @@ -1991,11 +1974,7 @@ def get_project_inspections_url(self, project_id: str, **kwargs) -> Tuple[Any, r """ - warnings.warn( - "annofabapi.AnnofabApi.get_project_inspections_url() is deprecated and will be removed.", - FutureWarning, - stacklevel=2, - ) + warnings.warn("annofabapi.AnnofabApi.get_project_inspections_url() is deprecated and will be removed.", FutureWarning, stacklevel=2) url_path = f"/projects/{project_id}/rawdata/inspections" http_method = "GET" keyword_params: Dict[str, Any] = {} @@ -2045,11 +2024,7 @@ def get_project_task_history_events_url(self, project_id: str, **kwargs) -> Tupl """ - warnings.warn( - "annofabapi.AnnofabApi.get_project_task_history_events_url() is deprecated and will be removed.", - FutureWarning, - stacklevel=2, - ) + warnings.warn("annofabapi.AnnofabApi.get_project_task_history_events_url() is deprecated and will be removed.", FutureWarning, stacklevel=2) url_path = f"/projects/{project_id}/rawdata/task_history_events" http_method = "GET" keyword_params: Dict[str, Any] = {} @@ -2157,11 +2132,7 @@ def post_project_tasks_update(self, project_id: str, **kwargs) -> Tuple[Any, req return self._request_wrapper(http_method, url_path, **keyword_params) def put_project( - self, - project_id: str, - query_params: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, - **kwargs, + self, project_id: str, query_params: Optional[Dict[str, Any]] = None, request_body: Optional[Any] = None, **kwargs ) -> Tuple[Any, requests.Response]: """プロジェクト作成/更新 https://annofab.com/docs/api/#operation/putProject @@ -2623,12 +2594,7 @@ def get_supplementary_data_list(self, project_id: str, input_data_id: str, **kwa 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, - **kwargs, + self, project_id: str, input_data_id: str, supplementary_data_id: str, request_body: Optional[Any] = None, **kwargs ) -> Tuple[Any, requests.Response]: """補助情報作成/更新 https://annofab.com/docs/api/#operation/putSupplementaryData diff --git a/annofabapi/generated_api2.py b/annofabapi/generated_api2.py index d4233dab..d950e4be 100644 --- a/annofabapi/generated_api2.py +++ b/annofabapi/generated_api2.py @@ -1,5 +1,4 @@ # ruff: noqa: E501 -# flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace """ @@ -27,7 +26,7 @@ def _request_wrapper( url_path: str, query_params: Optional[Dict[str, Any]] = None, header_params: Optional[Dict[str, Any]] = None, - request_body: Optional[Any] = None, # noqa: ANN401 + request_body: Optional[Any] = None, ) -> Tuple[Any, requests.Response]: pass diff --git a/annofabapi/models.py b/annofabapi/models.py index 0de98f3b..7360fe38 100644 --- a/annofabapi/models.py +++ b/annofabapi/models.py @@ -1,5 +1,4 @@ # ruff: noqa: E501 -# flake8: noqa: W291 # pylint: disable=too-many-lines,trailing-whitespace """ @@ -170,7 +169,7 @@ Kyes of Dict * token: str - [inviteOrganizationMember](#operation/inviteOrganizationMember) APIで送信された招待メールに記載されているトークンです。 メールに記載されているURLの`invitation-token`クエリパラメータの値が、トークンになります。 + [inviteOrganizationMember](#operation/inviteOrganizationMember) APIで送信された招待メールに記載されているトークンです。 メールに記載されているURLの`invitation-token`クエリパラメータの値が、トークンになります。 """ @@ -181,23 +180,23 @@ Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * email: str メールアドレス * lang: Lang - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * keylayout: KeyLayout - + * authority: str システム内部用のプロパティ * account_type: str - アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント + アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント * updated_datetime: str 更新日時 @@ -210,7 +209,7 @@ Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * by_tasks: List[WorktimeStatisticsItem] タスクごとに計算した「画像1枚あたりの作業時間平均」の統計(動画プロジェクトの場合は空リスト) * by_inputs: List[WorktimeStatisticsItem] @@ -227,7 +226,7 @@ Kyes of Dict * inspection: Inspection - + * type: str ActionRequired @@ -235,7 +234,7 @@ AdditionalDataDefaultType = Dict[str, Any] """ -属性の初期値です。 初期値を設定する場合、属性の種類に応じて次の値を指定してください。 属性の種類に対して有効でない初期値を指定した場合、その初期値は無視されます。 |属性の種類(`type`) | 指定できる初期値| |-----------------|----------| | flag | 真偽値(`true` or `false`)| | integer | 整数値 | | text | 文字列 | | comment | 文字列| | choice | 選択肢(`choices`)の `choice_id` | | select | 選択肢(`choices`)の`choice_id`| 属性の種類が`tracking`または`link`の場合、初期値を設定できません。 初期値を設定しない場合は、nullまたは空文字を指定してください。 +属性の初期値です。 初期値を設定する場合、属性の種類に応じて次の値を指定してください。 属性の種類に対して有効でない初期値を指定した場合、その初期値は無視されます。 |属性の種類(`type`) | 指定できる初期値| |-----------------|----------| | flag | 真偽値(`true` or `false`)| | integer | 整数値 | | text | 文字列 | | comment | 文字列| | choice | 選択肢(`choices`)の `choice_id` | | select | 選択肢(`choices`)の`choice_id`| 属性の種類が`tracking`または`link`の場合、初期値を設定できません。 初期値を設定しない場合は、nullまたは空文字を指定してください。 Kyes of Dict @@ -265,17 +264,17 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * read_only: bool 読み込み専用 * name: InternationalizationMessage - + * default: AdditionalDataDefaultType - + * keybind: List[Keybind] ショートカットキー * type: AdditionalDataDefinitionType - + * choices: List[AdditionalDataDefinitionV1Choices] ドロップダウンまたはラジオボタンの選択肢 * regex: str @@ -285,7 +284,7 @@ class AdditionalDataDefinitionType(Enum): * required: bool リンク属性において、入力を必須とするかどうか * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -296,9 +295,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー @@ -311,21 +310,21 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * read_only: bool 読み込み専用 * name: InternationalizationMessage - + * default: AdditionalDataDefaultType - + * keybind: List[Keybind] ショートカットキー * type: AdditionalDataDefinitionType - + * choices: List[AdditionalDataDefinitionV1Choices] ドロップダウンまたはラジオボタンの選択肢 * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -336,30 +335,30 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * condition: AdditionalDataRestrictionCondition - + """ AdditionalDataRestrictionCondition = Dict[str, Any] """ -属性の制約 * `AdditionalDataRestrictionConditionCanInput`: 属性値の入力を許可するかどうか * `AdditionalDataRestrictionConditionEquals`: 指定した値に等しい * `AdditionalDataRestrictionConditionNotEquals`: 指定した値に等しくない * `AdditionalDataRestrictionConditionMatches`: 指定した正規表現に一致する * `AdditionalDataRestrictionConditionNotMatches`: 指定した正規表現に一致しない * `AdditionalDataRestrictionConditionHasLabel`: 指定したラベルIDに一致する(アノテーションリンク属性限定) * `AdditionalDataRestrictionConditionImply`: 指定した前提条件を満たすときのみ、制約を満たすかどうか 以下のJSONは、「属性IDが`attr2`の属性値が`true`ならば、属性IDが`attr1`の属性値は`choice1`である」という制約を表しています。 ``` { \"additional_data_definition_id\": \"attr1\", \"condition\": { \"_type\": \"Imply\", \"premise\": { \"additional_data_definition_id\": \"attr2\", \"condition\": { \"_type\": \"Equals\", \"value\": \"true\" } }, \"condition\": { \"_type\": \"Equals\", \"value\": \"choice1\" } } } ``` +属性の制約 * `AdditionalDataRestrictionConditionCanInput`: 属性値の入力を許可するかどうか * `AdditionalDataRestrictionConditionEquals`: 指定した値に等しい * `AdditionalDataRestrictionConditionNotEquals`: 指定した値に等しくない * `AdditionalDataRestrictionConditionMatches`: 指定した正規表現に一致する * `AdditionalDataRestrictionConditionNotMatches`: 指定した正規表現に一致しない * `AdditionalDataRestrictionConditionHasLabel`: 指定したラベルIDに一致する(アノテーションリンク属性限定) * `AdditionalDataRestrictionConditionImply`: 指定した前提条件を満たすときのみ、制約を満たすかどうか 以下のJSONは、「属性IDが`attr2`の属性値が`true`ならば、属性IDが`attr1`の属性値は`choice1`である」という制約を表しています。 ``` { \"additional_data_definition_id\": \"attr1\", \"condition\": { \"_type\": \"Imply\", \"premise\": { \"additional_data_definition_id\": \"attr2\", \"condition\": { \"_type\": \"Equals\", \"value\": \"true\" } }, \"condition\": { \"_type\": \"Equals\", \"value\": \"choice1\" } } } ``` Kyes of Dict * type: str - `Imply` [詳しくはこちら](#section/API-Convention/API-_type) + `Imply` [詳しくはこちら](#section/API-Convention/API-_type) * enable: bool - `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 + `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 * value: str 指定された正規表現に一致しないことを要求します。 * labels: List[str] アノテーションリンク属性において、アノテーションリンク先として指定可能なラベルIDを制限します。 * premise: AdditionalDataRestriction - + * condition: AdditionalDataRestrictionCondition - + """ @@ -370,9 +369,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `CanInput` [詳しくはこちら](#section/API-Convention/API-_type) + `CanInput` [詳しくはこちら](#section/API-Convention/API-_type) * enable: bool - `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 + `false`を指定することで、属性値の入力を許可しないようにできます。 `AdditionalDataRestrictionConditionImply`との組み合わせで、特定条件下のみ入力を許すといった制限ができます。 """ @@ -383,7 +382,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `Equals` [詳しくはこちら](#section/API-Convention/API-_type) + `Equals` [詳しくはこちら](#section/API-Convention/API-_type) * value: str 指定された値と等しいことを要求します。 @@ -396,7 +395,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `HasLabel` [詳しくはこちら](#section/API-Convention/API-_type) + `HasLabel` [詳しくはこちら](#section/API-Convention/API-_type) * labels: List[str] アノテーションリンク属性において、アノテーションリンク先として指定可能なラベルIDを制限します。 @@ -409,11 +408,11 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `Imply` [詳しくはこちら](#section/API-Convention/API-_type) + `Imply` [詳しくはこちら](#section/API-Convention/API-_type) * premise: AdditionalDataRestriction - + * condition: AdditionalDataRestrictionCondition - + """ @@ -424,7 +423,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `Matches` [詳しくはこちら](#section/API-Convention/API-_type) + `Matches` [詳しくはこちら](#section/API-Convention/API-_type) * value: str 指定された正規表現に一致することを要求します。 @@ -437,9 +436,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `NotEquals` [詳しくはこちら](#section/API-Convention/API-_type) + `NotEquals` [詳しくはこちら](#section/API-Convention/API-_type) * value: str - 指定された値と異なることを要求します。 `value`に`\"\"`を指定することで、入力を必須とすることができます。 + 指定された値と異なることを要求します。 `value`に`\"\"`を指定することで、入力を必須とすることができます。 """ @@ -450,7 +449,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - `NotMatches` [詳しくはこちら](#section/API-Convention/API-_type) + `NotMatches` [詳しくはこちら](#section/API-Convention/API-_type) * value: str 指定された正規表現に一致しないことを要求します。 @@ -463,15 +462,15 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * flag: bool - `additional_data_definition`の`type`が`flag`のときの属性値。 + `additional_data_definition`の`type`が`flag`のときの属性値。 * integer: int - `additional_data_definition`の`type`が`integer`のときの属性値。 + `additional_data_definition`の`type`が`integer`のときの属性値。 * comment: str - `additional_data_definition`の`type`が`text`,`comment`,`link` または `tracking`のときの属性値。 + `additional_data_definition`の`type`が`text`,`comment`,`link` または `tracking`のときの属性値。 * choice: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -482,26 +481,26 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * value: AdditionalDataValue - + """ AdditionalDataValue = Dict[str, Any] """ -属性値 +属性値 Kyes of Dict * type: str - + * value: str トラッキングID属性の属性値 * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 """ @@ -512,9 +511,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -525,7 +524,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: str 自由記述(1行)の属性値 @@ -538,7 +537,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: bool ON/OFF属性の属性値。 ONの時trueとなります @@ -551,7 +550,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: int 整数属性の属性値 @@ -564,9 +563,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 """ @@ -577,9 +576,9 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * choice_id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -590,7 +589,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: str 自由記述(複数行)の属性値 @@ -603,7 +602,7 @@ class AdditionalDataDefinitionType(Enum): Kyes of Dict * type: str - + * value: str トラッキングID属性の属性値 @@ -630,7 +629,7 @@ class AnnotationDataHoldingType(Enum): AnnotationDataV1 = Dict[str, Any] """ -アノテーションの座標値や区間などのデータ。 APIのレスポンスから参照される場合は、`FullAnnotationDataString`形式です。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディは、`FullAnnotationDataString`形式または`FullAnnotationData`形式に対応しています。 +アノテーションの座標値や区間などのデータ。 APIのレスポンスから参照される場合は、`FullAnnotationDataString`形式です。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディは、`FullAnnotationDataString`形式または`FullAnnotationData`形式に対応しています。 Kyes of Dict @@ -639,14 +638,14 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailContentInput = Dict[str, Any] """ -- **AnnotationDetailContentInputInner** - アノテーションのデータ部をJSON内部に保持する場合、この型を利用します - **AnnotationDetailContentInputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持する場合、この型を利用します +- **AnnotationDetailContentInputInner** - アノテーションのデータ部をJSON内部に保持する場合、この型を利用します - **AnnotationDetailContentInputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持する場合、この型を利用します Kyes of Dict * type: str - + * data: FullAnnotationData - + * path: str 外部ファイルの位置を示す文字列。 [createTempPath](#operation/createTempPath) APIによって取得したpathを指定します。 @@ -659,9 +658,9 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * data: FullAnnotationData - + """ @@ -672,7 +671,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * path: str 外部ファイルの位置を示す文字列。 [createTempPath](#operation/createTempPath) APIによって取得したpathを指定します。 @@ -680,14 +679,14 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailContentOutput = Dict[str, Any] """ -- **AnnotationDetailContentOutputInner** - アノテーションのデータ部をJSON内部に保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputInnerUnknown** - アノテーションのデータ部をJSON内部に保持しており、且つ、AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります - 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します - **AnnotationDetailContentOutputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputOuterUnresolved** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持しており、且つ、Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります +- **AnnotationDetailContentOutputInner** - アノテーションのデータ部をJSON内部に保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputInnerUnknown** - アノテーションのデータ部をJSON内部に保持しており、且つ、AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります - 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します - **AnnotationDetailContentOutputOuter** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持している場合、通常はこの型の値となります - **AnnotationDetailContentOutputOuterUnresolved** - アノテーションのデータ部を外部ファイルの形式(画像など)で保持しており、且つ、Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります Kyes of Dict * type: str - + * data: str - アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
+ アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
* url: str 外部ファイルに保存されたアノテーションの認証済み一時URL * etag: str @@ -702,22 +701,22 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * data: FullAnnotationData - + """ AnnotationDetailContentOutputInnerUnknown = Dict[str, Any] """ -アノテーションのデータ部をJSON内部に保持します。 AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります。 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します。 +アノテーションのデータ部をJSON内部に保持します。 AnnotationDetailV1の形式で保存されていたデータのAnnotationTypeが特定できない場合にこの値となります。 典型的な例では、アノテーションの保存後にアノテーション仕様が書き換わっていた場合が該当します。 Kyes of Dict * type: str - + * data: str - アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
+ アノテーション座標値や区間などの文字列表現です。 アノテーション種類(`annotation_type`)とデータ格納形式(`data_holding_type`)に応じて、以下のとおり表現が変わります。
annotation_typedata_holding_type文字列表現
bounding_boxinner\"左上x,左上y,右下x,右下y\"
pointinner\"x1,y1\"
polygon / polylineinner\"x1,y1,x2,y2, ... \"
range inner\"開始時間(ミリ秒),終了時間(ミリ秒) \"
classificationinnernull
segmentationouternull
segmentation_v2outernull
""" @@ -728,7 +727,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * url: str 外部ファイルに保存されたアノテーションの認証済み一時URL * etag: str @@ -738,12 +737,12 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailContentOutputOuterUnresolved = Dict[str, Any] """ -アノテーションのデータ部を外部ファイルの形式(画像など)で保持します。 Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります。 +アノテーションのデータ部を外部ファイルの形式(画像など)で保持します。 Outerのurl / etagを解決しなかった場合(過去のアノテーションを取得した場合等)にこの値となります。 Kyes of Dict * type: str - + """ @@ -754,25 +753,25 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * is_protected: bool - `true`の場合、アノテーションをアノテーションエディタ上での削除から保護できます。 外部から取り込んだアノテーションに属性を追加するときなどに指定すると、データの削除を防げます。 + `true`の場合、アノテーションをアノテーションエディタ上での削除から保護できます。 外部から取り込んだアノテーションに属性を追加するときなどに指定すると、データの削除を防げます。 * data_holding_type: AnnotationDataHoldingType - + * data: AnnotationDataV1 - + * path: str - 外部ファイルに保存されたアノテーションのパス。`data_holding_type`が`inner`の場合は未指定です。 レスポンスの場合は`annotation_id`と同じ値が格納されます。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は、[createTempPath](#operation/createTempPath) APIで取得できる一時データ保存先S3パスを格納してください。 更新しない場合は、[getEditorAnnotation](#operation/getEditorAnnotation) APIで取得した`path`をそのまま渡せます。 外部ファイルのフォーマットは下表の通りです。
annotation_type形式
segmentation / segmentation_v2 PNG画像。塗りつぶした部分はrgba(255, 255, 255, 1) 、塗りつぶしていない部分はrgba(0, 0, 0, 0)
+ 外部ファイルに保存されたアノテーションのパス。`data_holding_type`が`inner`の場合は未指定です。 レスポンスの場合は`annotation_id`と同じ値が格納されます。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は、[createTempPath](#operation/createTempPath) APIで取得できる一時データ保存先S3パスを格納してください。 更新しない場合は、[getEditorAnnotation](#operation/getEditorAnnotation) APIで取得した`path`をそのまま渡せます。 外部ファイルのフォーマットは下表の通りです。
annotation_type形式
segmentation / segmentation_v2 PNG画像。塗りつぶした部分はrgba(255, 255, 255, 1) 、塗りつぶしていない部分はrgba(0, 0, 0, 0)
* etag: str 外部ファイルに保存されたアノテーションのETag。`data_holding_type`が`inner`の場合、または[putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は未指定です。 * url: str 外部ファイルに保存されたアノテーションの認証済み一時URL。`data_holding_type`が`inner`の場合、または[putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は未指定です。 * additional_data_list: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * created_datetime: str 作成日時 * updated_datetime: str @@ -787,17 +786,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + """ @@ -808,19 +807,19 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentOutput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + * created_datetime: str 作成日時 * updated_datetime: str @@ -835,19 +834,19 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + * created_datetime: str 作成日時 * updated_datetime: str @@ -857,24 +856,24 @@ class AnnotationDataHoldingType(Enum): AnnotationDetailV2Input = Dict[str, Any] """ -- **AnnotationDetailV2Create** - 新規にアノテーションを作成する場合にこの型を利用します。 - **AnnotationDetailV2Import** - 過去にAnnofab内外で作成したアノテーションをそのままインポートする場合にこの型を利用します。 - **AnnotationDetailV2Update** - 既に存在するアノテーションを更新する場合にこの型を利用します +- **AnnotationDetailV2Create** - 新規にアノテーションを作成する場合にこの型を利用します。 - **AnnotationDetailV2Import** - 過去にAnnofab内外で作成したアノテーションをそのままインポートする場合にこの型を利用します。 - **AnnotationDetailV2Update** - 既に存在するアノテーションを更新する場合にこの型を利用します Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * created_datetime: str 作成日時 * updated_datetime: str @@ -898,23 +897,23 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * type: str - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentInput - + * additional_data_list: List[AdditionalDataV2] - + * editor_props: AnnotationPropsForEditor - + """ AnnotationEditorFeature = Dict[str, Any] """ -塗りつぶしの作図機能に関する情報 +塗りつぶしの作図機能に関する情報 Kyes of Dict @@ -940,17 +939,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Input] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 + 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 * format_version: str - + """ @@ -971,7 +970,7 @@ class AnnotationDataHoldingType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 + [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 """ @@ -982,23 +981,23 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Output] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 + 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 * format_version: str - + """ AnnotationPropsForEditor = Dict[str, Any] """ -アノテーションエディタ用のアノテーション毎のプロパティです。
ここに含まれているデータはアノテーション結果に反映されず、エディタが利用するために存在します。 エディタ用のデータであるため、たとえば`can_delete`や`can_edit_data`が`false`でも、APIによる編集は妨げません。
ここで定義されているデータを利用して動作を変えるかどうかは、エディタによって異なります。 +アノテーションエディタ用のアノテーション毎のプロパティです。
ここに含まれているデータはアノテーション結果に反映されず、エディタが利用するために存在します。 エディタ用のデータであるため、たとえば`can_delete`や`can_edit_data`が`false`でも、APIによる編集は妨げません。
ここで定義されているデータを利用して動作を変えるかどうかは、エディタによって異なります。 Kyes of Dict @@ -1019,26 +1018,26 @@ class AnnotationDataHoldingType(Enum): AnnotationQuery = Dict[str, Any] """ -アノテーションの絞り込み条件 +アノテーションの絞り込み条件 Kyes of Dict * task_id: str - タスクIDで絞り込みます。 + タスクIDで絞り込みます。 * exact_match_task_id: bool - タスクIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 + タスクIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 * input_data_id: str - 入力データID絞り込みます。 + 入力データID絞り込みます。 * exact_match_input_data_id: bool - 入力データIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 + 入力データIDの検索方法を指定します。 `true`の場合は完全一致検索、`false`の場合は部分一致検索です。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * attributes: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * updated_from: str - 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、開始日(ISO 8601 拡張形式または基本形式)。 `updated_to` より後の日付が指定された場合、期間指定は開始日・終了日を含む区間[updated_to, updated_from]となる。未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 + 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、開始日(ISO 8601 拡張形式または基本形式)。 `updated_to` より後の日付が指定された場合、期間指定は開始日・終了日を含む区間[updated_to, updated_from]となる。未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 * updated_to: str - 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、終了日(ISO 8601 拡張形式または基本形式)。 未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 + 開始日・終了日を含む区間[updated_from, updated_to]でアノテーションの更新日を絞り込むときに使用する、終了日(ISO 8601 拡張形式または基本形式)。 未指定の場合、API実行日(JST)の日付が指定されたものとして扱われる。 """ @@ -1049,17 +1048,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV3] ラベル * inspection_phrases: List[InspectionPhrase] 定型指摘 * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 * additionals: List[AdditionalDataDefinitionV2] 属性 * restrictions: List[AdditionalDataRestriction] @@ -1067,7 +1066,7 @@ class AnnotationDataHoldingType(Enum): * format_version: str アノテーション仕様のフォーマットのバージョン * annotation_type_version: str - アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 + アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 """ @@ -1080,13 +1079,13 @@ class AnnotationDataHoldingType(Enum): * history_id: str アノテーション仕様の履歴ID * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * updated_datetime: str 更新日時 * url: str アノテーション仕様が格納されたJSONのURL。URLにアクセスするには認証認可が必要です。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment: str 変更内容のコメント @@ -1099,13 +1098,13 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * can_overwrap: bool - 動画プロジェクトのアノテーションに重複配置を許すか否か。 + 動画プロジェクトのアノテーションに重複配置を許すか否か。 """ AnnotationSpecsOption = Dict[str, Any] """ -アノテーション仕様のオプション設定。 現時点では動画プロジェクトでのみ利用・指定可能。動画以外のプロジェクトでは値なし。 動画プロジェクトで値が未指定の場合、AnnotationSpecsOption内の値はすべてデフォルト値が指定されたものとして扱われる。 +アノテーション仕様のオプション設定。 現時点では動画プロジェクトでのみ利用・指定可能。動画以外のプロジェクトでは値なし。 動画プロジェクトで値が未指定の場合、AnnotationSpecsOption内の値はすべてデフォルト値が指定されたものとして扱われる。 Kyes of Dict @@ -1125,13 +1124,13 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 * additionals: List[AdditionalDataDefinitionV2] 属性 * restrictions: List[AdditionalDataRestriction] @@ -1156,13 +1155,13 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1183,15 +1182,15 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * format_version: str アノテーション仕様のフォーマットのバージョン * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1212,17 +1211,17 @@ class AnnotationDataHoldingType(Enum): * comment: str 変更内容のコメント * auto_marking: bool - trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 + trueが指定された場合、各統計グラフにマーカーを自動追加します。 マーカーのタイトルには `comment` に指定された文字列が設定されます。 `comment` が指定されていなかった場合は \"アノテーション仕様の変更\" という文字列が設定されます。 * annotation_type_version: str アノテーション種別のバージョン。拡張仕様プラグインを利用している場合に、プラグインに設定されている値が転写されます。 プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 * format_version: str アノテーション仕様のフォーマットのバージョン * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1233,17 +1232,17 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV1] ラベル * inspection_phrases: List[InspectionPhrase] 定型指摘 * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1254,7 +1253,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV2] ラベル * additionals: List[AdditionalDataDefinitionV2] @@ -1266,11 +1265,11 @@ class AnnotationDataHoldingType(Enum): * format_version: str アノテーション仕様のフォーマットのバージョン * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1281,7 +1280,7 @@ class AnnotationDataHoldingType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * labels: List[LabelV3] ラベル * additionals: List[AdditionalDataDefinitionV2] @@ -1291,15 +1290,15 @@ class AnnotationDataHoldingType(Enum): * inspection_phrases: List[InspectionPhrase] 定型指摘 * annotation_type_version: str - アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 + アノテーション種別のバージョン。 拡張仕様プラグインで定義した値が転写されます。プロジェクトに拡張仕様プラグインが設定されていない場合は未指定です。 * format_version: str アノテーション仕様のフォーマットのバージョン * updated_datetime: str - 更新日時 + 更新日時 * option: AnnotationSpecsOption - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -1314,139 +1313,139 @@ class AnnotationDataHoldingType(Enum): AnnotationTypeFieldDefinitionAnnotationEditorFeature = Dict[str, Any] """ -作図ツール・作図モードのフィールドの定義 +作図ツール・作図モードのフィールドの定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionDisplayLineDirection = Dict[str, Any] """ -線の向き表示/非表示の設定のフィールド定義 +線の向き表示/非表示の設定のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMarginOfErrorTolerance = Dict[str, Any] """ -誤差許容範囲のフィールド定義 +誤差許容範囲のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMinimumArea2d = Dict[str, Any] """ -最小の面積のフィールド定義 +最小の面積のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMinimumSize2d = Dict[str, Any] """ -アノテーションの最小サイズに関する設定のフィールド定義 +アノテーションの最小サイズに関する設定のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionMinimumSize2dWithDefaultInsertPosition = Dict[str, Any] """ -アノテーションの最小サイズに関する設定、および最小矩形の挿入位置のフィールド定義 +アノテーションの最小サイズに関する設定、および最小矩形の挿入位置のフィールド定義 Kyes of Dict * type: str - + """ AnnotationTypeFieldDefinitionOneBooleanField = Dict[str, Any] """ -真偽値の値をひとつだけ持つフィールドの定義 +真偽値の値をひとつだけ持つフィールドの定義 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * description: InternationalizationMessage - + * initial_value: bool - フィールドの初期値 + フィールドの初期値 * label: InternationalizationMessage - + """ AnnotationTypeFieldDefinitionOneIntegerField = Dict[str, Any] """ -数値の値をひとつだけ持つフィールドの定義 +数値の値をひとつだけ持つフィールドの定義 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * prefix: str - フィールドの前に付与する文字列。 + フィールドの前に付与する文字列。 * postfix: str - フィールドの後に付与する文字列 + フィールドの後に付与する文字列 * description: InternationalizationMessage - + * initial_value: int - フィールドの初期値 + フィールドの初期値 """ AnnotationTypeFieldDefinitionOneStringField = Dict[str, Any] """ -文字列の値をひとつだけ持つフィールドの定義 +文字列の値をひとつだけ持つフィールドの定義 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * prefix: str - フィールドの前に付与する文字列。 + フィールドの前に付与する文字列。 * postfix: str - フィールドの後に付与する文字列 + フィールドの後に付与する文字列 * description: InternationalizationMessage - + * initial_value: str - フィールドの初期値 + フィールドの初期値 """ AnnotationTypeFieldDefinitionVertexCountMinMax = Dict[str, Any] """ -頂点数の最大・最小のフィールド定義 +頂点数の最大・最小のフィールド定義 Kyes of Dict * type: str - + """ @@ -1462,80 +1461,80 @@ class AnnotationTypeFieldMinWarnRule(Enum): AnnotationTypeFieldValue = Dict[str, Any] """ -ユーザー定義アノテーション種別のフィールドに設定される値です。 アノテーション種別のフィールド定義と対応するフィールド値のみ登録を許可されます。 +ユーザー定義アノテーション種別のフィールドに設定される値です。 アノテーション種別のフィールド定義と対応するフィールド値のみ登録を許可されます。 Kyes of Dict * type: str - + * min_warn_rule: AnnotationTypeFieldMinWarnRule - + * min_width: int - + * min_height: int - + * position_for_minimum_bounding_box_insertion: List[int] - 最小矩形の挿入位置を、要素が2の配列で指定します。 + 最小矩形の挿入位置を、要素が2の配列で指定します。 * max_pixel: int - + * min: int - + * max: int - + * min_area: int - + * has_direction: bool - + * append: bool - + * erase: bool - + * freehand: bool - + * rectangle_fill: bool - + * polygon_fill: bool - + * fill_near: bool - + * value: bool - + """ AnnotationTypeFieldValueAnnotationEditorFeature = Dict[str, Any] """ -作図ツール・作図モード +作図ツール・作図モード Kyes of Dict * type: str - + * append: bool - + * erase: bool - + * freehand: bool - + * rectangle_fill: bool - + * polygon_fill: bool - + * fill_near: bool - + """ AnnotationTypeFieldValueDisplayLineDirection = Dict[str, Any] """ -線の向き表示/非表示の設定 +線の向き表示/非表示の設定 Kyes of Dict * type: str - + * has_direction: bool - + """ @@ -1546,7 +1545,7 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + """ @@ -1557,22 +1556,22 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * max_pixel: int - + """ AnnotationTypeFieldValueMinimumArea2d = Dict[str, Any] """ -最小の面積 +最小の面積 Kyes of Dict * type: str - + * min_area: int - + """ @@ -1583,13 +1582,13 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * min_warn_rule: AnnotationTypeFieldMinWarnRule - + * min_width: int - + * min_height: int - + """ @@ -1600,15 +1599,15 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * min_warn_rule: AnnotationTypeFieldMinWarnRule - + * min_width: int - + * min_height: int - + * position_for_minimum_bounding_box_insertion: List[int] - 最小矩形の挿入位置を、要素が2の配列で指定します。 + 最小矩形の挿入位置を、要素が2の配列で指定します。 """ @@ -1619,9 +1618,9 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * value: bool - + """ @@ -1632,9 +1631,9 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * value: int - + """ @@ -1645,24 +1644,24 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * type: str - + * value: str - + """ AnnotationTypeFieldValueVertexCountMinMax = Dict[str, Any] """ -頂点数の最大・最小 +頂点数の最大・最小 Kyes of Dict * type: str - + * min: int - + * max: int - + """ @@ -1673,11 +1672,11 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV1] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str @@ -1692,17 +1691,17 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Input] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 + 対象タスク・対象入力データへの最初の保存時は未指定にしてください。 更新の場合はアノテーション取得時のupdated_datetimeをそのまま指定してください。 * format_version: str - + """ @@ -1713,17 +1712,17 @@ class AnnotationTypeFieldMinWarnRule(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV2Output] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 + 対象タスク・対象入力データへ一度もアノテーションの保存が行われていない場合、未指定となります。 そうで無い場合、対象タスク・対象入力データのアノテーション最終更新時刻です。 * format_version: str - + """ @@ -1744,17 +1743,17 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: BatchAnnotationV2 - + * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * updated_datetime: str 更新日時 @@ -1767,17 +1766,17 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * updated_datetime: str 更新日時 * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1788,9 +1787,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: BatchAnnotationV1 - + * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1801,9 +1800,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: BatchAnnotationV2 - + * type: str - [詳しくはこちら](#section/API-Convention/API-_type) + [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1814,19 +1813,19 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * additional_data_list: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * updated_datetime: str - アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 + アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 """ @@ -1837,19 +1836,19 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * additional_data_list: List[AdditionalDataV2] - + * updated_datetime: str - アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 + アノテーション取得時の更新日時。更新時の楽観ロックに利用されます。 AnnotationDetailのものではなく、それを格納するAnnotationV2Outputなどが保持する更新時刻であることに注意してください。 """ @@ -1860,25 +1859,25 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int コメントを作成したときのフェーズのステージ。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_type: str - コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 + コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 * phrases: List[str] - `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) + `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) * comment: str - コメント本文。 + コメント本文。 * comment_node: CommentNode - + * datetime_for_sorting: str - コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 + コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1889,9 +1888,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1902,25 +1901,25 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int コメントを作成したときのフェーズのステージ。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_type: str - コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 + コメントの種別。次の値が指定できます。 * `onhold` - 保留コメントとして扱われます。 * `inspection` - 検査コメントとして扱われます。 返信コメント作成時は返信先コメントの `comment_type` と同じ値を指定してください。 コメント更新時は更新前コメントと同じ値を指定してください(変更はできません)。 * phrases: List[str] - `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) + `comment_type` の値によって指定可能な値が異なります。 * `onhold` の場合 * 使用しません(空配列 or 指定なし) * comment: str - コメント本文。 + コメント本文。 * comment_node: CommentNode - + * datetime_for_sorting: str - コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 + コメントのソート順を決める日時。コメント作成時のみ指定可能です。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 コメント作成時に未指定とした場合は、作成操作オブジェクトの順序に応じてコメント作成日時からずれた時刻が自動設定されます(ソート順を一意とするため)。 なお、この値は後から更新することはできません(値を指定しても無視されます)。 * type: str - `Put` [詳しくはこちら](#section/API-Convention/API-_type) + `Put` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1940,11 +1939,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1955,17 +1954,17 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: Inspection - + * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -1976,15 +1975,15 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -1995,9 +1994,9 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * data: Inspection - + * type: str - `Put` [詳しくはこちら](#section/API-Convention/API-_type) + `Put` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -2017,11 +2016,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Delete` [詳しくはこちら](#section/API-Convention/API-_type) + `Delete` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -2036,7 +2035,7 @@ class AssigneeRuleOfResubmittedTask(Enum): * min_height: int 高さの最小値[ピクセル] * min_warn_rule: str - サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 + サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 * min_area: int 面積の最小値[平方ピクセル] * max_vertices: int @@ -2044,11 +2043,11 @@ class AssigneeRuleOfResubmittedTask(Enum): * min_vertices: int 頂点数の最小値 * position_for_minimum_bounding_box_insertion: PositionForMinimumBoundingBoxInsertion - + * tolerance: int 許容誤差[ピクセル] * has_direction: bool - `annotation_type` が `polyline` の場合、アノテーションに向きを持たせるかどうかを指定できます。 この値が `true` の場合、Annofabの標準画像エディタ上ではポリラインの向きを示す矢印が描画されるようになります。 `annotationType` が `polyline` 以外の場合は必ず `false` となります。 + `annotation_type` が `polyline` の場合、アノテーションに向きを持たせるかどうかを指定できます。 この値が `true` の場合、Annofabの標準画像エディタ上ではポリラインの向きを示す矢印が描画されるようになります。 `annotationType` が `polyline` 以外の場合は必ず `false` となります。 """ @@ -2059,11 +2058,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * old_password: str - + * new_password: str - + """ @@ -2074,11 +2073,11 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * red: int - + * green: int - + * blue: int - + """ @@ -2089,29 +2088,29 @@ class AssigneeRuleOfResubmittedTask(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int コメントを作成したときのフェーズのステージ。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * comment_type: CommentType - + * phrases: List[str] - `comment_type` の値によって扱いが異なります。 * `onhold` の場合 * 使用しません(空配列) * `inspection` の場合 * 参照している定型指摘のIDリスト + `comment_type` の値によって扱いが異なります。 * `onhold` の場合 * 使用しません(空配列) * `inspection` の場合 * 参照している定型指摘のIDリスト * comment: str - コメント本文。 + コメント本文。 * comment_node: CommentNode - + * datetime_for_sorting: str - コメントのソート順を決める日時。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 + コメントのソート順を決める日時。 Annofab標準エディタでは、コメントはここで指定した日時にしたがってスレッドごとに昇順で表示されます。 * created_datetime: str コメントの作成日時。 * updated_datetime: str @@ -2121,22 +2120,22 @@ class AssigneeRuleOfResubmittedTask(Enum): CommentNode = Dict[str, Any] """ -コメントのノード固有のデータ。 * `RootComment` - スレッドの先頭のコメント(ルートコメント)。 * `ReplyComment` - あるコメントへの返信コメント。 +コメントのノード固有のデータ。 * `RootComment` - スレッドの先頭のコメント(ルートコメント)。 * `ReplyComment` - あるコメントへの返信コメント。 Kyes of Dict * data: InspectionData - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * status: CommentStatus - + * type: str - `Reply` [詳しくはこちら](#section/API-Convention/API-_type) + `Reply` [詳しくはこちら](#section/API-Convention/API-_type) * root_comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -2167,7 +2166,7 @@ class CommentType(Enum): Kyes of Dict * token: str - + """ @@ -2178,7 +2177,7 @@ class CommentType(Enum): Kyes of Dict * token: str - + """ @@ -2189,11 +2188,11 @@ class CommentType(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * confirmation_code: str - + * new_password: str - + """ @@ -2204,19 +2203,19 @@ class CommentType(Enum): Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * password: str - + * username: str - + * lang: str - + * keylayout: str - + * confirmation_code: str - + """ @@ -2227,9 +2226,9 @@ class CommentType(Enum): Kyes of Dict * token: Token - + * confirmation_code: str - + """ @@ -2240,11 +2239,11 @@ class CommentType(Enum): Kyes of Dict * key: str - 集約対象の `field` の値です。 + 集約対象の `field` の値です。 * count: int - 集約対象 `field` の値が `key` の値と等しかったリソースの件数です。 + 集約対象 `field` の値が `key` の値と等しかったリソースの件数です。 * aggregations: List[AggregationResult] - この集約のサブ集約です。サブ集約がないときは空の配列になります。 + この集約のサブ集約です。サブ集約がないときは空の配列になります。 """ @@ -2255,15 +2254,15 @@ class CommentType(Enum): Kyes of Dict * type: str - `CountResult` [詳しくはこちら](#section/API-Convention/API-_type) + `CountResult` [詳しくはこちら](#section/API-Convention/API-_type) * name: str - 複数の集約を区別するための名前です。 `(フィールド名)_(集約内容)` のように命名されます。例えば `account_id` フィールドを `count` する場合、`account_id_count` となります。 + 複数の集約を区別するための名前です。 `(フィールド名)_(集約内容)` のように命名されます。例えば `account_id` フィールドを `count` する場合、`account_id_count` となります。 * field: str - 集約に使われたリソースのフィールド名です。 リソースの属性のさらに属性を参照するときは、`foo.bar.buz` のようにドット区切りになります。 + 集約に使われたリソースのフィールド名です。 リソースの属性のさらに属性を参照するときは、`foo.bar.buz` のようにドット区切りになります。 * doc_count: int - 集約の件数です。 + 集約の件数です。 * items: List[Count] - 集約結果の値です。 + 集約結果の値です。 """ @@ -2276,7 +2275,7 @@ class CommentType(Enum): * url: str ファイルアップロード用の一時URLです。このURLにファイルをアップロードします。 * path: str - [putInputData](#operation/putInputData) APIや[putSupplementaryData](#operation/putSupplementaryData) APIのリクエストボディに指定するパスです。 + [putInputData](#operation/putInputData) APIや[putSupplementaryData](#operation/putSupplementaryData) APIのリクエストボディに指定するパスです。 """ @@ -2317,9 +2316,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * job: ProjectJobInfo - + * project: Project - + """ @@ -2330,9 +2329,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * label_id: str - + * annotation_ids: List[str] - + * type: str DuplicatedSegmentationV2 @@ -2345,13 +2344,13 @@ class DefaultAnnotationType(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data: AdditionalDataV1 - + * type: str - + """ @@ -2362,13 +2361,13 @@ class DefaultAnnotationType(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str - + """ @@ -2379,7 +2378,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * editor_name: str - エディタ名です。 | editor_nameの値 | エディタ名 | |-----------------|--------------| | image_editor | 画像エディタ | | video_editor | 動画エディタ | | 3d_editor | 3Dエディタ | + エディタ名です。 | editor_nameの値 | エディタ名 | |-----------------|--------------| | image_editor | 画像エディタ | | video_editor | 動画エディタ | | 3d_editor | 3Dエディタ | * value: float エディタ利用時間。単位は時 @@ -2392,7 +2391,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * error_code: str - + * message: str エラーの概要 * ext: __DictStrKeyAnyValue__ @@ -2407,7 +2406,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * errors: List[ErrorItem] - + * context: __DictStrKeyAnyValue__ 内部補足情報 @@ -2420,17 +2419,17 @@ class DefaultAnnotationType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_phase: TaskPhase - + * task_phase_stage: int タスクのフェーズのステージ番号 * task_status: TaskStatus - + * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name: str 入力データ名 * details: List[FullAnnotationDetail] @@ -2438,24 +2437,24 @@ class DefaultAnnotationType(Enum): * updated_datetime: str 更新日時。アノテーションが一つもない場合(教師付作業が未着手のときなど)は、未指定。 * annotation_format_version: str - アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 + アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """ FullAnnotationAdditionalData = Dict[str, Any] """ -属性情報 +属性情報 Kyes of Dict * additional_data_definition_id: str - 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 属性ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * additional_data_definition_name: InternationalizationMessage - + * type: AdditionalDataDefinitionType - + * value: FullAnnotationAdditionalDataValue - + """ @@ -2466,15 +2465,15 @@ class DefaultAnnotationType(Enum): Kyes of Dict * id: str - 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 選択肢ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * name: InternationalizationMessage - + """ FullAnnotationAdditionalDataValue = Dict[str, Any] """ -属性値 +属性値 Kyes of Dict @@ -2492,9 +2491,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Choice` + `Choice` * value: FullAnnotationAdditionalDataChoiceValue - + """ @@ -2505,7 +2504,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Comment` + `Comment` * value: str 自由記述 @@ -2518,7 +2517,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Flag` + `Flag` * value: bool フラグのON(true)またはOFF(false) @@ -2531,7 +2530,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Integer` + `Integer` * value: int 整数値 @@ -2565,22 +2564,22 @@ class DefaultAnnotationType(Enum): FullAnnotationData = Dict[str, Any] """ -アノテーションのデータが格納されます。 * `FullAnnotationDataClassification`: 入力データ全体アノテーション * `FullAnnotationDataSegmentation`: 塗りつぶしアノテーション * `FullAnnotationDataSegmentationV2`: 塗りつぶしv2アノテーション * `FullAnnotationDataBoundingBox`: 矩形アノテーション * `FullAnnotationDataPoints`: ポリゴンまたはポリラインアノテーション * `FullAnnotationDataSinglePoint`: 点アノテーション * `FullAnnotationDataRange`: 動画区間アノテーション * `FullAnnotationDataUnknown`: カスタムアノテーション +アノテーションのデータが格納されます。 * `FullAnnotationDataClassification`: 入力データ全体アノテーション * `FullAnnotationDataSegmentation`: 塗りつぶしアノテーション * `FullAnnotationDataSegmentationV2`: 塗りつぶしv2アノテーション * `FullAnnotationDataBoundingBox`: 矩形アノテーション * `FullAnnotationDataPoints`: ポリゴンまたはポリラインアノテーション * `FullAnnotationDataSinglePoint`: 点アノテーション * `FullAnnotationDataRange`: 動画区間アノテーション * `FullAnnotationDataUnknown`: カスタムアノテーション Kyes of Dict * type: str - `Unknown` + `Unknown` * data_uri: str - 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 + 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 * left_top: Point - + * right_bottom: Point - + * points: List[Point] 頂点の座標値 * point: Point - + * begin: float 開始時間(ミリ秒) * end: float @@ -2597,11 +2596,11 @@ class DefaultAnnotationType(Enum): Kyes of Dict * left_top: Point - + * right_bottom: Point - + * type: str - `BoundingBox` + `BoundingBox` """ @@ -2612,7 +2611,7 @@ class DefaultAnnotationType(Enum): Kyes of Dict * type: str - `Classification` + `Classification` """ @@ -2625,7 +2624,7 @@ class DefaultAnnotationType(Enum): * points: List[Point] 頂点の座標値 * type: str - `Points` + `Points` """ @@ -2640,7 +2639,7 @@ class DefaultAnnotationType(Enum): * end: float 終了時間(ミリ秒) * type: str - `Range` + `Range` """ @@ -2651,9 +2650,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * data_uri: str - 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 + 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 * type: str - `Segmentation` + `Segmentation` """ @@ -2664,9 +2663,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * data_uri: str - 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 + 塗りつぶし画像のパス。 塗りつぶし画像のファイル形式はPNGです。塗りつぶされた部分の色は`rgba(255, 255, 255, 1)`、塗りつぶされていない部分の色は`rgba(0, 0, 0, 0)`です。 * type: str - `SegmentationV2` + `SegmentationV2` """ @@ -2677,9 +2676,9 @@ class DefaultAnnotationType(Enum): Kyes of Dict * point: Point - + * type: str - `SinglePoint` + `SinglePoint` """ @@ -2692,7 +2691,7 @@ class DefaultAnnotationType(Enum): * data: str アノテーションデータを文字列で表現した値 * type: str - `Unknown` + `Unknown` """ @@ -2703,21 +2702,21 @@ class DefaultAnnotationType(Enum): Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * annotation_type: AnnotationType - + * data_holding_type: AnnotationDataHoldingType - + * data: FullAnnotationData - + * additional_data_list: List[FullAnnotationAdditionalData] - 属性情報。 + 属性情報。 """ @@ -2745,11 +2744,11 @@ class GraphType(Enum): Kyes of Dict * begin: float - + * end: float - + * count: int - + """ @@ -2771,7 +2770,7 @@ class GraphType(Enum): Kyes of Dict * access_token: str - アクセストークン。[login](#operation/login) APIで取得します。 + アクセストークン。[login](#operation/login) APIで取得します。 """ @@ -2782,9 +2781,9 @@ class GraphType(Enum): Kyes of Dict * secret_code: str - TOTPアルゴリズムでワンタイムコードを生成するために使用される、一意に生成された共有秘密コードです。 + TOTPアルゴリズムでワンタイムコードを生成するために使用される、一意に生成された共有秘密コードです。 * qr_code_data: str - MFAを有効化する際、認証アプリで読み込むQRコードに埋め込むデータです。Google AuthenticatorとIIJ SmartKeyに対応しています。 + MFAを有効化する際、認証アプリで読み込むQRコードに埋め込むデータです。Google AuthenticatorとIIJ SmartKeyに対応しています。 """ @@ -2795,31 +2794,31 @@ class GraphType(Enum): Kyes of Dict * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_set_id: str - 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name: str 入力データ名 * input_data_path: str - 入力データの実体が保存されたパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 + 入力データの実体が保存されたパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 * url: str システム内部用のプロパティ * etag: str - [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 + [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 * original_input_data_path: str - システム内部用のプロパティ + システム内部用のプロパティ * updated_datetime: str 更新日時 * sign_required: bool - CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか + CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 * system_metadata: SystemMetadata - + """ @@ -2840,7 +2839,7 @@ class GraphType(Enum): * over_limit: bool 検索結果の件数が1万件を超えた場合は`true`になります。 * aggregations: List[AggregationResult] - システム内部用のプロパティ。 + システム内部用のプロパティ。 """ @@ -2864,13 +2863,13 @@ class InputDataOrder(Enum): * input_data_name: str 入力データ名。ZIPファイルをアップロードする際は、入力データ名のプレフィックスを指定してください。 * input_data_path: str - 入力データの実体が存在するURLです。 Annofabにファイルをアップロードして入力データを作成する場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 入力データの実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 S3プライベートストレージに存在するファイルを入力データとして登録する場合は、事前に[認可の設定](/docs/faq/#m0b240)が必要です。 + 入力データの実体が存在するURLです。 Annofabにファイルをアップロードして入力データを作成する場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 入力データの実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 S3プライベートストレージに存在するファイルを入力データとして登録する場合は、事前に[認可の設定](/docs/faq/#m0b240)が必要です。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * sign_required: bool - CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか。 `true`を指定する場合は,`input_data_path`にAnnofabのAWS IDをTrusted Signerとして登録したCloudFrontのURLを指定してください。 + CloudFrontのSignedCookieを使ったプライベートストレージを利用するかどうか。 `true`を指定する場合は,`input_data_path`にAnnofabのAWS IDをTrusted Signerとして登録したCloudFrontのURLを指定してください。 * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -2881,15 +2880,15 @@ class InputDataOrder(Enum): Kyes of Dict * input_data_set_id: str - 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_set_name: str 入力データセットの名前 * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_type: InputDataType - + * private_storage_arn: str - AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 + AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 * updated_datetime: str 入力データセットの最終更新日時 @@ -2902,11 +2901,11 @@ class InputDataOrder(Enum): Kyes of Dict * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_summary: InspectionSummary - + * annotation_summaries: List[ValidationError] - + """ @@ -2928,60 +2927,60 @@ class InputDataType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int 検査コメントを付与したときのフェーズのステージ * commenter_account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data: InspectionData - + * parent_inspection_id: str - 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 検査ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phrases: List[str] 参照している定型指摘のID。 * comment: str - 検査コメントの中身 + 検査コメントの中身 * status: InspectionStatus - + * created_datetime: str - + * updated_datetime: str - + """ InspectionData = Dict[str, Any] """ -##### スレッドの先頭のコメントである(`parent_inspection_id` に値がない)場合 検査コメントの座標値や区間。 * `InspectionDataPoint`:点で検査コメントを付与したときの座標値 * `InspectionDataPolyline`:ポリラインで検査コメントを付与したときの座標値 * `InspectionDataTime`:検査コメントを付与した区間(動画プロジェクトの場合) * `InspectionDataCustom`:カスタム ##### 返信コメントである(`parent_inspection_id` に値がある)場合 現在は使用しておらず、レスポンスに含まれる値は不定です。APIのレスポンスにこの値を含む場合でも、「スレッドの先頭のコメント」の値を利用してください。 リクエストボディに指定する場合は、スレッドの先頭のコメントと同じ値を指定します。 +##### スレッドの先頭のコメントである(`parent_inspection_id` に値がない)場合 検査コメントの座標値や区間。 * `InspectionDataPoint`:点で検査コメントを付与したときの座標値 * `InspectionDataPolyline`:ポリラインで検査コメントを付与したときの座標値 * `InspectionDataTime`:検査コメントを付与した区間(動画プロジェクトの場合) * `InspectionDataCustom`:カスタム ##### 返信コメントである(`parent_inspection_id` に値がある)場合 現在は使用しておらず、レスポンスに含まれる値は不定です。APIのレスポンスにこの値を含む場合でも、「スレッドの先頭のコメント」の値を利用してください。 リクエストボディに指定する場合は、スレッドの先頭のコメントと同じ値を指定します。 Kyes of Dict * x: int - + * y: int - + * type: str - `Custom` [詳しくはこちら](#section/API-Convention/API-_type) + `Custom` [詳しくはこちら](#section/API-Convention/API-_type) * coordinates: List[InspectionDataPolylineCoordinates] - ポリラインを構成する頂点の配列 + ポリラインを構成する頂点の配列 * start: float 開始時間(ミリ秒)。小数点以下はミリ秒以下を表します。 * end: float 終了時間(ミリ秒)。小数点以下はミリ秒以下を表します。 * data: str - + """ @@ -2992,37 +2991,37 @@ class InputDataType(Enum): Kyes of Dict * data: str - + * type: str - `Custom` [詳しくはこちら](#section/API-Convention/API-_type) + `Custom` [詳しくはこちら](#section/API-Convention/API-_type) """ InspectionDataPoint = Dict[str, Any] """ -問題のある部分を示す座標 +問題のある部分を示す座標 Kyes of Dict * x: int - + * y: int - + * type: str - `Point` [詳しくはこちら](#section/API-Convention/API-_type) + `Point` [詳しくはこちら](#section/API-Convention/API-_type) """ InspectionDataPolyline = Dict[str, Any] """ -問題のある部分を示すポリライン +問題のある部分を示すポリライン Kyes of Dict * coordinates: List[InspectionDataPolylineCoordinates] - ポリラインを構成する頂点の配列 + ポリラインを構成する頂点の配列 * type: str - `Polyline` [詳しくはこちら](#section/API-Convention/API-_type) + `Polyline` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -3033,15 +3032,15 @@ class InputDataType(Enum): Kyes of Dict * x: int - + * y: int - + """ InspectionDataTime = Dict[str, Any] """ -問題のある時間帯を表す区間 +問題のある時間帯を表す区間 Kyes of Dict @@ -3050,7 +3049,7 @@ class InputDataType(Enum): * end: float 終了時間(ミリ秒)。小数点以下はミリ秒以下を表します。 * type: str - `Time` [詳しくはこちら](#section/API-Convention/API-_type) + `Time` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -3074,7 +3073,7 @@ class InputDataType(Enum): * id: str 定型指摘ID * text: InternationalizationMessage - + """ @@ -3085,11 +3084,11 @@ class InputDataType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str 集計日 * breakdown: InspectionStatisticsBreakdown - + """ @@ -3102,7 +3101,7 @@ class InputDataType(Enum): * labels: dict(str, InspectionStatisticsPhrases) ラベルに紐付いている検査コメントの集計結果。キーは`label_id`です。 * no_label: InspectionStatisticsPhrases - + """ @@ -3140,7 +3139,7 @@ class InspectionSummary(Enum): Kyes of Dict * inspection: Inspection - + * type: str IllegalState @@ -3181,13 +3180,13 @@ class InspectionSummary(Enum): Kyes of Dict * image_id: str - 作業ガイド画像ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 作業ガイド画像ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * path: str - 作業ガイド画像の実体が保存されたパスです。 + 作業ガイド画像の実体が保存されたパスです。 * url: str 作業ガイド画像を取得するためのシステム内部用のURLです。 * etag: str - [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 + [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 """ @@ -3211,7 +3210,7 @@ class InspectionSummary(Enum): Kyes of Dict * messages: List[InternationalizationMessageMessages] - 言語コードとメッセージ(テキスト)のリスト。 * アノテーションエディタなどでは、Annofabの表示言語(各ユーザーが個人設定で選んだ言語)のメッセージが使われます * 以下の名前は、[Simple Annotation](#section/Simple-Annotation-ZIP) では `en-US` のメッセージが使われます * ラベル名 * 属性名 * 選択肢名 * いずれの場合でも、表示しようとした言語が `messages` に含まれない場合、 `default_lang` に指定した言語のメッセージが使われます + 言語コードとメッセージ(テキスト)のリスト。 * アノテーションエディタなどでは、Annofabの表示言語(各ユーザーが個人設定で選んだ言語)のメッセージが使われます * 以下の名前は、[Simple Annotation](#section/Simple-Annotation-ZIP) では `en-US` のメッセージが使われます * ラベル名 * 属性名 * 選択肢名 * いずれの場合でも、表示しようとした言語が `messages` に含まれない場合、 `default_lang` に指定した言語のメッセージが使われます * default_lang: str 希望された言語のメッセージが存在しない場合に、フォールバック先として使われる言語コード @@ -3237,11 +3236,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * message: str - + * type: str InvalidAnnotationData @@ -3254,11 +3253,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str InvalidChoice @@ -3271,11 +3270,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str InvalidLinkTarget @@ -3288,11 +3287,11 @@ class InspectionSummary(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str InvalidValue @@ -3305,7 +3304,7 @@ class InspectionSummary(Enum): Kyes of Dict * role: OrganizationMemberRole - + """ @@ -3322,9 +3321,9 @@ class InspectionSummary(Enum): * project_token: str [issueProjectToken](#operation/issueProjectToken)で発行されたトークン文字列 * role: str - ゲストユーザーのプロジェクト上でのロール * `worker` - アノテーター * `accepter` - チェッカー + ゲストユーザーのプロジェクト上でのロール * `worker` - アノテーター * `accepter` - チェッカー * profile: ProjectGuestUserProfile - + """ @@ -3369,7 +3368,7 @@ class KeyLayout(Enum): Kyes of Dict * code: str - [KeyboardEvent.code](https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent/code)に相当する値です。 + [KeyboardEvent.code](https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent/code)に相当する値です。 * shift: bool Shiftキーを押しているかどうか * ctrl: bool @@ -3386,7 +3385,7 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * completed: int ラベルごとの受入が完了したアノテーション数 * wip: int @@ -3401,25 +3400,25 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー * annotation_type: AnnotationType - + * bounding_box_metadata: BoundingBoxMetadata - + * segmentation_metadata: SegmentationMetadata - + * additional_data_definitions: List[AdditionalDataDefinitionV1] 属性 * color: Color - + * annotation_editor_feature: AnnotationEditorFeature - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -3430,25 +3429,25 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー * annotation_type: AnnotationType - + * bounding_box_metadata: BoundingBoxMetadata - + * segmentation_metadata: SegmentationMetadata - + * additional_data_definitions: List[str] ラベルに所属する属性のID * color: Color - + * annotation_editor_feature: AnnotationEditorFeature - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -3459,21 +3458,21 @@ class KeyLayout(Enum): Kyes of Dict * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_name: InternationalizationMessage - + * keybind: List[Keybind] ショートカットキー * annotation_type: AnnotationType - + * field_values: dict(str, AnnotationTypeFieldValue) - KeyがフィールドIdであるDictionaryです。 カスタムの[組織プラグイン](#operation/putOrganizationPlugin)で利用される[UserDefinedAnnotationTypeDefinition](#section/UserDefinedAnnotationTypeDefinition).`field_definitions`で定義されます。 + KeyがフィールドIdであるDictionaryです。 カスタムの[組織プラグイン](#operation/putOrganizationPlugin)で利用される[UserDefinedAnnotationTypeDefinition](#section/UserDefinedAnnotationTypeDefinition).`field_definitions`で定義されます。 * additional_data_definitions: List[str] ラベルに所属する属性のID * color: Color - + * metadata: dict(str, str) - ユーザーが自由に登録できるkey-value型のメタデータです。 + ユーザーが自由に登録できるkey-value型のメタデータです。 """ @@ -3506,7 +3505,7 @@ class Lang(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * password: str パスワード @@ -3521,7 +3520,7 @@ class Lang(Enum): * mfa_code: str MFAコード。Time-based One-time Password (TOTP) のみ対応している * session: str - [login API](#operation/login)が返したセッション + [login API](#operation/login)が返したセッション """ @@ -3532,7 +3531,7 @@ class Lang(Enum): Kyes of Dict * token: Token - + * session: str セッション @@ -3545,7 +3544,7 @@ class Lang(Enum): Kyes of Dict * token: Token - + """ @@ -3556,11 +3555,11 @@ class Lang(Enum): Kyes of Dict * marker_id: str - マーカーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + マーカーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str マーカーのタイトル * graph_type: GraphType - + * marked_at: str グラフ上のマーカー位置(x軸) @@ -3573,7 +3572,7 @@ class Lang(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * markers: List[Marker] マーカー一覧 * updated_datetime: str @@ -3605,19 +3604,19 @@ class Lang(Enum): * message_id: str システム内部用のプロパティ * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_type: ProjectJobType - + * job_id: str - ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_status: JobStatus - + * job_execution: __DictStrKeyAnyValue__ ジョブの内部情報 * job_detail: __DictStrKeyAnyValue__ ジョブ結果の内部情報 * errors: Errors - + * created_datetime: str 作成日時 * updated_datetime: str @@ -3643,23 +3642,23 @@ class Lang(Enum): Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * email: str メールアドレス * lang: Lang - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * keylayout: KeyLayout - + * authority: str システム内部用のプロパティ * account_type: str - アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント + アカウントの種別 * `annofab` - 通常の手順で登録されたアカウント。後から[外部アカウントとの紐付け](/docs/faq/#yyyub0)をしたアカウントの場合もこちらになります。 * `external` - [外部アカウントだけで作成したアカウント](/docs/faq/#v1u344) * `project_guest` - [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)によって作成されたされたアカウント * updated_datetime: str 更新日時 * reset_requested_email: str @@ -3689,17 +3688,17 @@ class Lang(Enum): Kyes of Dict * messages: List[MyNotificationMessage] - + * opened: int - 開封済みの通知メッセージの数。 over_limitがtrueの場合、メッセージのタイムスタンプが新しい順から10000件のメッセージをもとに集計される + 開封済みの通知メッセージの数。 over_limitがtrueの場合、メッセージのタイムスタンプが新しい順から10000件のメッセージをもとに集計される * total: int - 通知メッセージの総数 + 通知メッセージの総数 * page: int - messagesに含まれる通知メッセージが何ページ目のものか + messagesに含まれる通知メッセージが何ページ目のものか * page_total: int - ページ数の総数 + ページ数の総数 * over_limit: bool - 通知メッセージの取得上限を超えているか + 通知メッセージの取得上限を超えているか """ @@ -3710,19 +3709,19 @@ class Lang(Enum): Kyes of Dict * message_id: str - 通知メッセージID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 通知メッセージID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str - メッセージ通知のタイトル + メッセージ通知のタイトル * body: str - メッセージ通知の本文 + メッセージ通知の本文 * content_type: str - メッセージのコンテンツタイプ。 メッセージを表示する際のマークアップのヒントとして使われることを想定しています。 + メッセージのコンテンツタイプ。 メッセージを表示する際のマークアップのヒントとして使われることを想定しています。 * opened: bool - 自身がメッセージを開封したか(開封済みの場合true) + 自身がメッセージを開封したか(開封済みの場合true) * timestamp: str - 最後に通知メッセージ内容を更新した日時。更新がない場合はメッセージ作成日時 + 最後に通知メッセージ内容を更新した日時。更新がない場合はメッセージ作成日時 * created_datetime: str - メッセージ作成日時 + メッセージ作成日時 """ @@ -3744,23 +3743,23 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * name: str - + * email: str - + * price_plan: PricePlan - + * summary: __DictStrKeyAnyValue__ - 廃止予定のプロパティです。常に中身は空です。 + 廃止予定のプロパティです。常に中身は空です。 * created_datetime: str 作成日時 * updated_datetime: str 更新日時 * my_role: OrganizationMemberRole - + * my_status: OrganizationMemberStatus - + """ @@ -3781,7 +3780,7 @@ class Lang(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ。 + システム内部用のプロパティ。 """ @@ -3792,7 +3791,7 @@ class Lang(Enum): Kyes of Dict * inspection: Inspection - + * type: str NoCommentInspection @@ -3805,15 +3804,15 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_name: str - 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) * email: str メールアドレス * price_plan: PricePlan - + * summary: __DictStrKeyAnyValue__ - 廃止予定のプロパティです。常に中身は空です。 + 廃止予定のプロパティです。常に中身は空です。 * created_datetime: str 作成日時 * updated_datetime: str @@ -3828,7 +3827,7 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * created_datetime: str 作成日時 * storage_usage_bytes: int @@ -3843,13 +3842,13 @@ class Lang(Enum): Kyes of Dict * input: str - + * members: str - + * statistics: str - + * organization: str - + """ @@ -3860,23 +3859,23 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_type: str - ジョブの同時実行制御のために用いる、ジョブの種別。 (現在はまだ、この種別に該当するものはありません) + ジョブの同時実行制御のために用いる、ジョブの種別。 (現在はまだ、この種別に該当するものはありません) * job_id: str - ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_status: JobStatus - + * job_execution: __DictStrKeyAnyValue__ ジョブの内部情報 * job_detail: __DictStrKeyAnyValue__ ジョブ結果の内部情報 * errors: Errors - + * created_datetime: str - + * updated_datetime: str - + """ @@ -3900,19 +3899,19 @@ class Lang(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * role: OrganizationMemberRole - + * status: OrganizationMemberStatus - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * created_datetime: str 作成日時 * updated_datetime: str @@ -3937,7 +3936,7 @@ class Lang(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ + システム内部用のプロパティ """ @@ -3969,21 +3968,21 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * plugin_name: str - プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * description: str - プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * detail: PluginDetail - + * is_builtin: bool trueの場合、プラグインはAnnofab組み込みのプラグインであり、更新や削除を行うことはできません。 * created_datetime: str - + * updated_datetime: str - + """ @@ -3994,22 +3993,22 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * input: OrganizationPluginCompatibilityType - + * output: OrganizationPluginCompatibilityType - + """ OrganizationPluginCompatibilityType = Dict[str, Any] """ -プラグインの入力/出力を表す型です。 +プラグインの入力/出力を表す型です。 Kyes of Dict * type: str - Constant型で、かつidの値が一致している場合に互換性があることを示します。 + Constant型で、かつidの値が一致している場合に互換性があることを示します。 * id: str - + """ @@ -4020,7 +4019,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * type: str - inputに指定した場合、いずれのプラグインも前段になれないことを示します。 outputに指定した場合、いずれのプラグインも後段になれないことを示します。 + inputに指定した場合、いずれのプラグインも前段になれないことを示します。 outputに指定した場合、いずれのプラグインも後段になれないことを示します。 """ @@ -4031,9 +4030,9 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * type: str - Constant型で、かつidの値が一致している場合に互換性があることを示します。 + Constant型で、かつidの値が一致している場合に互換性があることを示します。 * id: str - + """ @@ -4044,7 +4043,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * type: str - inputに指定した場合、あらゆるプラグインの後段になれることを示します。 outputに指定した場合、入力がTopであるプラグインだけが後段になれることを示します。 + inputに指定した場合、あらゆるプラグインの後段になれることを示します。 outputに指定した場合、入力がTopであるプラグインだけが後段になれることを示します。 """ @@ -4065,7 +4064,7 @@ class OrganizationMemberStatus(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[__DictStrKeyAnyValue__] - システム内部用のプロパティ。 + システム内部用のプロパティ。 """ @@ -4076,7 +4075,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * organization_name: str - 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_email: str メールアドレス @@ -4089,9 +4088,9 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * type: str OverlappedRangeAnnotation @@ -4104,7 +4103,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * email: str - + """ @@ -4115,7 +4114,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * phase: TaskPhase - + * worktime: str 累積作業時間(ISO 8601 duration) @@ -4123,90 +4122,90 @@ class OrganizationMemberStatus(Enum): PluginDetail = Dict[str, Any] """ -* `PluginDetailAnnotationEditor` - カスタムアノテーションエディタ用のプラグインを表します。 * `PluginDetailTaskAssignment` - カスタムタスク割当用のプラグインを表します。 * `PluginDetailAnnotationSpecs` - カスタムアノテーション仕様用のプラグインを表します。 * `PluginDetailExtendedAnnotationSpecs` - カスタムのアノテーション種別を作成するプラグインを表します。 +* `PluginDetailAnnotationEditor` - カスタムアノテーションエディタ用のプラグインを表します。 * `PluginDetailTaskAssignment` - カスタムタスク割当用のプラグインを表します。 * `PluginDetailAnnotationSpecs` - カスタムアノテーション仕様用のプラグインを表します。 * `PluginDetailExtendedAnnotationSpecs` - カスタムのアノテーション種別を作成するプラグインを表します。 Kyes of Dict * url: str - カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` + カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * auth_redirect_url: str - 認証後のリダイレクト先 + 認証後のリダイレクト先 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) + `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) * plugin_compatibility: OrganizationPluginCompatibility - + * annotation_types: List[AnnotationType] - プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 + プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 * user_defined_annotation_type_definitions: dict(str, UserDefinedAnnotationTypeDefinition) - Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 + Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 """ PluginDetailAnnotationEditor = Dict[str, Any] """ -カスタムアノテーションエディタ用のプラグインを表します。 +カスタムアノテーションエディタ用のプラグインを表します。 Kyes of Dict * url: str - カスタムアノテーションエディタでタスクを開くための URL です。 プラグインを使用するプロジェクトのタスク一覧などで使用されます。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 この URL には、タスクを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * `{taskId}` 以下のパラメーターは任意で指定します。 * `{inputDataId}`: アノテーション一覧などから、特定の入力データにフォーカスした状態でタスクを開くときなどに指定します。 * `{annotationId}`: アノテーション一覧などから、特定のアノテーションにフォーカスした状態でタスクを開くときなどに指定します。 + カスタムアノテーションエディタでタスクを開くための URL です。 プラグインを使用するプロジェクトのタスク一覧などで使用されます。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 この URL には、タスクを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * `{taskId}` 以下のパラメーターは任意で指定します。 * `{inputDataId}`: アノテーション一覧などから、特定の入力データにフォーカスした状態でタスクを開くときなどに指定します。 * `{annotationId}`: アノテーション一覧などから、特定のアノテーションにフォーカスした状態でタスクを開くときなどに指定します。 * auth_redirect_url: str - 認証後のリダイレクト先。このURLに `?code=xxx` をつけてリダイレクトされます。 url プロパティとは異なり、 `{projectId}` や `{taskId}` といったパラメータの置換は行われません。 詳しくは [requestPluginToken API](#operation/requestPluginToken) を参照してください。 + 認証後のリダイレクト先。このURLに `?code=xxx` をつけてリダイレクトされます。 url プロパティとは異なり、 `{projectId}` や `{taskId}` といったパラメータの置換は行われません。 詳しくは [requestPluginToken API](#operation/requestPluginToken) を参照してください。 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `AnnotationEditor` [詳しくはこちら](#section/API-Convention/API-_type) + `AnnotationEditor` [詳しくはこちら](#section/API-Convention/API-_type) """ PluginDetailAnnotationSpecs = Dict[str, Any] """ -カスタムアノテーション仕様用のプラグインを表します。 +カスタムアノテーション仕様用のプラグインを表します。 Kyes of Dict * url: str - カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` + カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * auth_redirect_url: str - 認証後のリダイレクト先 + 認証後のリダイレクト先 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `AnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) + `AnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) """ PluginDetailExtendedAnnotationSpecs = Dict[str, Any] """ -カスタムのアノテーション種別を作成するプラグインを表します。 なお、このプラグインが設定されているプロジェクトでは、ここで指定したアノテーション種別以外は使用できなくなります。 +カスタムのアノテーション種別を作成するプラグインを表します。 なお、このプラグインが設定されているプロジェクトでは、ここで指定したアノテーション種別以外は使用できなくなります。 Kyes of Dict * plugin_compatibility: OrganizationPluginCompatibility - + * annotation_types: List[AnnotationType] - プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 + プラグインを使用したプロジェクトで選択可能なアノテーション種別のリストです。 同じ種別を重複して設定することはできません。 * user_defined_annotation_type_definitions: dict(str, UserDefinedAnnotationTypeDefinition) - Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 + Keyが[アノテーションの種類(AnnotationType)](#section/AnnotationType)であるDictionaryです。 * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * type: str - `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) + `ExtendedAnnotationSpecs` [詳しくはこちら](#section/API-Convention/API-_type) """ PluginDetailTaskAssignment = Dict[str, Any] """ -カスタムタスク割当用のプラグインを表します。 +カスタムタスク割当用のプラグインを表します。 Kyes of Dict * url: str - 「カスタムタスク割当API」のURLです。 プラグイン種別がカスタムタスク割当の場合のみ有効です。 #### カスタムタスク割当APIについて。 * 独自のアルゴリズムで作業者にタスクを割当するAPIです。 * Annofabから提供されるものではなく、第三者 (ユーザー様) が用意します。 * 作業者がタスク一覧やアノテーションエディタのタスク取得ボタンを押すと、指定したURLに複数の情報 (※1) と共にHTTPリクエスト (POST) が送られます。 * カスタムタスク割当APIでは、Annofabで提供しているAPI (※2) を使用して作業者にタスクを割当してください。 * タスクの割当に成功した場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: 割当した単一のタスク * ステータスコード: 200 * 作業者に割当できるタスクがない場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"MISSING_RESOURCE\"}]}` * ステータスコード: 404 * 作業者の認証トークンの期限が切れている場合があります。その場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"EXPIRED_TOKEN\"}]}` * ステータスコード: 401 #### Preflightリクエストについて。 * Annofabからカスタムタスク割当APIへCross-OriginなHTTPリクエストを送信するより前に、ブラウザの仕様により「Preflightリクエスト」と呼ばれるHTTPリクエストが送られます。 * カスタムタスク割当を利用するためには、カスタムタスク割当APIとは別に「Preflightリクエスト対応API」を用意する必要があります。 * 以下の要件を満たす「Preflightリクエスト対応API」を用意してください。 * URL: カスタムタスク割当APIと同じURL * HTTPメソッド: OPTIONS * レスポンスヘッダ: * `Access-Control-Allow-Origin: https://annofab.com` * `Access-Control-Allow-Headers: Content-Type` * レスポンスボディ: 空(から) * ステータスコード: 200 ※1 以下の情報が送られます。 * HTTPボディ (JSON形式) * `authorization_token` : タスク割当専用の認証トークン。AnnofabのAPIを利用する際に使用します。 * `project_id` : タスクの割当リクエストが行われたプロジェクトのID。 * `phase` : 作業者が割当を要求したタスクフェーズ。このフェーズのタスクを割当してください。 ※2 例えば以下のAPIがあります。(詳しい情報はAPIドキュメントを参照してください) * `getMyAccount` : 作業者のアカウント情報を取得できます。 * `getTasks` : プロジェクトのタスクを取得できます。 * `assignTasks` : 作業者にタスクを割当することができます。 + 「カスタムタスク割当API」のURLです。 プラグイン種別がカスタムタスク割当の場合のみ有効です。 #### カスタムタスク割当APIについて。 * 独自のアルゴリズムで作業者にタスクを割当するAPIです。 * Annofabから提供されるものではなく、第三者 (ユーザー様) が用意します。 * 作業者がタスク一覧やアノテーションエディタのタスク取得ボタンを押すと、指定したURLに複数の情報 (※1) と共にHTTPリクエスト (POST) が送られます。 * カスタムタスク割当APIでは、Annofabで提供しているAPI (※2) を使用して作業者にタスクを割当してください。 * タスクの割当に成功した場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: 割当した単一のタスク * ステータスコード: 200 * 作業者に割当できるタスクがない場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"MISSING_RESOURCE\"}]}` * ステータスコード: 404 * 作業者の認証トークンの期限が切れている場合があります。その場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"EXPIRED_TOKEN\"}]}` * ステータスコード: 401 #### Preflightリクエストについて。 * Annofabからカスタムタスク割当APIへCross-OriginなHTTPリクエストを送信するより前に、ブラウザの仕様により「Preflightリクエスト」と呼ばれるHTTPリクエストが送られます。 * カスタムタスク割当を利用するためには、カスタムタスク割当APIとは別に「Preflightリクエスト対応API」を用意する必要があります。 * 以下の要件を満たす「Preflightリクエスト対応API」を用意してください。 * URL: カスタムタスク割当APIと同じURL * HTTPメソッド: OPTIONS * レスポンスヘッダ: * `Access-Control-Allow-Origin: https://annofab.com` * `Access-Control-Allow-Headers: Content-Type` * レスポンスボディ: 空(から) * ステータスコード: 200 ※1 以下の情報が送られます。 * HTTPボディ (JSON形式) * `authorization_token` : タスク割当専用の認証トークン。AnnofabのAPIを利用する際に使用します。 * `project_id` : タスクの割当リクエストが行われたプロジェクトのID。 * `phase` : 作業者が割当を要求したタスクフェーズ。このフェーズのタスクを割当してください。 ※2 例えば以下のAPIがあります。(詳しい情報はAPIドキュメントを参照してください) * `getMyAccount` : 作業者のアカウント情報を取得できます。 * `getTasks` : プロジェクトのタスクを取得できます。 * `assignTasks` : 作業者にタスクを割当することができます。 * type: str - `TaskAssignment` [詳しくはこちら](#section/API-Convention/API-_type) + `TaskAssignment` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -4262,7 +4261,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * access_token: str - APIアクセスに用いるトークン。 リクエストヘッダにおいて `Authorization: Bearer {access_token}` の形で指定します。 + APIアクセスに用いるトークン。 リクエストヘッダにおいて `Authorization: Bearer {access_token}` の形で指定します。 * refresh_token: str トークンの更新に用いるトークン @@ -4283,14 +4282,14 @@ class OrganizationMemberStatus(Enum): PositionForMinimumBoundingBoxInsertion = Dict[str, Any] """ -`annotation_type` が `bounding_box` かつ `min_warn_rule` が `and` または `or` の場合のみ、挿入する最小矩形アノテーションの原点を指定できます。 画像左上の座標が「x=0, y=0」です。 未指定、もしくは「画像外に飛び出たアノテーション」を許可していないにも関わらず飛び出してしまう場合は、表示範囲の中央に挿入されます。 「スキャンした帳票の記入欄」や「定点カメラで撮影した製品ラベル」など、アノテーションしたい位置やサイズが多くの画像で共通している場合に便利です。 `annotation_type` が `bounding_box` 以外の場合は必ず未指定となります。 +`annotation_type` が `bounding_box` かつ `min_warn_rule` が `and` または `or` の場合のみ、挿入する最小矩形アノテーションの原点を指定できます。 画像左上の座標が「x=0, y=0」です。 未指定、もしくは「画像外に飛び出たアノテーション」を許可していないにも関わらず飛び出してしまう場合は、表示範囲の中央に挿入されます。 「スキャンした帳票の記入欄」や「定点カメラで撮影した製品ラベル」など、アノテーションしたい位置やサイズが多くの画像で共通している場合に便利です。 `annotation_type` が `bounding_box` 以外の場合は必ず未指定となります。 Kyes of Dict * x: int - + * y: int - + """ @@ -4301,7 +4300,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * job: ProjectJobInfo - + """ @@ -4316,7 +4315,7 @@ class OrganizationMemberStatus(Enum): * message_id: str システム内部用のプロパティ * job: ProjectJobInfo - + """ @@ -4329,7 +4328,7 @@ class OrganizationMemberStatus(Enum): * enabled: bool MFAをONにするか * mfa_code: str - [initiateMfaSetup](#operation/initiateMfaSetup)が返したシークレットコードを元に生成したTOTP。enabledがtrueの場合に設定する + [initiateMfaSetup](#operation/initiateMfaSetup)が返したシークレットコードを元に生成したTOTP。enabledがtrueの場合に設定する * access_token: str アクセストークン。enabledがtrueの場合に設定する @@ -4342,7 +4341,7 @@ class OrganizationMemberStatus(Enum): Kyes of Dict * job: ProjectJobInfo - + """ @@ -4363,25 +4362,25 @@ class PricePlan(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str プロジェクトのタイトル * overview: str プロジェクトの概要 * project_status: ProjectStatus - + * input_data_type: InputDataType - + * configuration: ProjectConfiguration - + * created_datetime: str 作成日時 * updated_datetime: str 更新日時 * summary: ProjectSummary - + """ @@ -4392,9 +4391,9 @@ class PricePlan(Enum): Kyes of Dict * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * histories: List[ProjectAccountStatisticsHistory] - + """ @@ -4405,11 +4404,11 @@ class PricePlan(Enum): Kyes of Dict * date: str - + * tasks_completed: int - 教師付フェーズのタスクを提出した回数、または検査/受入フェーズのタスクを合格/差戻にした回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_completed`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 2
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 合格にする 2020-04-01 12:00
+ 教師付フェーズのタスクを提出した回数、または検査/受入フェーズのタスクを合格/差戻にした回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_completed`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 2
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 合格にする 2020-04-01 12:00
* tasks_rejected: int - 教師付フェーズを担当したタスクが差し戻された回数、または受入フェーズを担当したタスクが受入完了を取り消された回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_rejected`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 1
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 差し戻す 2020-04-01 12:00
Bob 教師付 提出する 2020-04-01 13:00
Chris 受入 合格にする 2020-04-01 14:00
Dave 受入 受入完了状態を取り消して、再度合格にする 2020-04-01 15:00
+ 教師付フェーズを担当したタスクが差し戻された回数、または受入フェーズを担当したタスクが受入完了を取り消された回数。 たとえば、あるタスクのタスク履歴が下表の状態だった場合、2020-04-01の`tasks_rejected`は以下の通りになります。 * Alice: 1 * Bob: 1 * Chris: 1
担当者 フェーズ 作業内容 完了日時
Alice 教師付 提出する 2020-04-01 09:00
Chris 受入 差し戻す 2020-04-01 10:00
Bob 教師付 提出する 2020-04-01 11:00
Chris 受入 差し戻す 2020-04-01 12:00
Bob 教師付 提出する 2020-04-01 13:00
Chris 受入 合格にする 2020-04-01 14:00
Dave 受入 受入完了状態を取り消して、再度合格にする 2020-04-01 15:00
* worktime: str 作業時間(ISO 8601 duration) @@ -4422,21 +4421,21 @@ class PricePlan(Enum): Kyes of Dict * input: str - + * members: str - + * project: str - + * instruction: str - + * specs: str - + * statistics: str - + * organization: str - + * supplementary: str - + """ @@ -4447,39 +4446,39 @@ class PricePlan(Enum): Kyes of Dict * number_of_inspections: int - 検査回数。 * 0回:教師付け -> 受入 * 1回:教師付け -> 検査 -> 受入 * n回(n >= 2):教師付け -> 検査1 -> ... -> 検査n -> 受入 + 検査回数。 * 0回:教師付け -> 受入 * 1回:教師付け -> 検査 -> 受入 * n回(n >= 2):教師付け -> 検査1 -> ... -> 検査n -> 受入 * assignee_rule_of_resubmitted_task: AssigneeRuleOfResubmittedTask - + * task_assignment_type: TaskAssignmentType - + * task_assignment_property: TaskAssignmentProperty - + * max_tasks_per_member: int - 保留中のタスクを除き、1人(オーナー以外)に割り当てられるタスク数の上限。 + 保留中のタスクを除き、1人(オーナー以外)に割り当てられるタスク数の上限。 * max_tasks_per_member_including_hold: int - 保留中のタスクを含めて、1人(オーナー以外)に割り当てられるタスク数上限の保留分。 割り当て時の上限チェックは、max_tasks_per_memberとこの数字の合計で行われます。 例えばmax_tasks_per_memberが10、max_tasks_per_member_including_holdが20の場合、保留中を含むタスク数の割り当て上限は30になります。 + 保留中のタスクを含めて、1人(オーナー以外)に割り当てられるタスク数上限の保留分。 割り当て時の上限チェックは、max_tasks_per_memberとこの数字の合計で行われます。 例えばmax_tasks_per_memberが10、max_tasks_per_member_including_holdが20の場合、保留中を含むタスク数の割り当て上限は30になります。 * input_data_set_id_list: List[str] - システム内部用のプロパティ。 [putProject](#operation/putProject) APIでプロジェクトを更新する際は、[getProject](#operation/getProject) APIで取得した値を指定してください。 + システム内部用のプロパティ。 [putProject](#operation/putProject) APIでプロジェクトを更新する際は、[getProject](#operation/getProject) APIで取得した値を指定してください。 * input_data_max_long_side_length: int - 入力データ画像の長辺の最大値(未指定時は4096px)。 画像をアップロードすると、長辺がこの値になるように画像が自動で圧縮されます。 アノテーションの座標は、もとの解像度の画像でつけたものに復元されます。 大きな数値を設定すると入力データ画像のサイズが大きくなり、生産性低下やブラウザで画像を表示できない懸念があります。注意して設定してください。 + 入力データ画像の長辺の最大値(未指定時は4096px)。 画像をアップロードすると、長辺がこの値になるように画像が自動で圧縮されます。 アノテーションの座標は、もとの解像度の画像でつけたものに復元されます。 大きな数値を設定すると入力データ画像のサイズが大きくなり、生産性低下やブラウザで画像を表示できない懸念があります。注意して設定してください。 * sampling_inspection_rate: int 抜取検査率[%]。未指定の場合は100%として扱う。 * sampling_acceptance_rate: int 抜取受入率[%]。未指定の場合は100%として扱う。 * private_storage_aws_iam_role_arn: str - AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 + AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 * plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * custom_task_assignment_plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * custom_specs_plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * extended_specs_plugin_id: str - プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * editor_version: str - 標準アノテーションエディタのバージョン。 * `stable` * 安定版。通常はこちらを利用してください。 * `preview` * 最新版。新機能やUI変更の先行リリース版。 プロジェクト更新時に未指定の場合は `stable` が指定されたものとみなします。 + 標準アノテーションエディタのバージョン。 * `stable` * 安定版。通常はこちらを利用してください。 * `preview` * 最新版。新機能やUI変更の先行リリース版。 プロジェクト更新時に未指定の場合は `stable` が指定されたものとみなします。 * use_beginner_navigation: bool - true の場合、プロジェクトの画面でナビゲーションUIを表示します(ログインユーザーがプロジェクトオーナーの場合のみ)。 + true の場合、プロジェクトの画面でナビゲーションUIを表示します(ログインユーザーがプロジェクトオーナーの場合のみ)。 """ @@ -4490,9 +4489,9 @@ class PricePlan(Enum): Kyes of Dict * list: List[Project] - + * has_next: bool - + """ @@ -4503,23 +4502,23 @@ class PricePlan(Enum): Kyes of Dict * dest_project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * dest_title: str コピー先プロジェクトのタイトル * dest_overview: str コピー先プロジェクトの概要 * copy_inputs: bool - 「入力データ」をコピーするかどうかを指定します。 + 「入力データ」をコピーするかどうかを指定します。 * copy_tasks: bool - 「タスク」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする + 「タスク」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * copy_annotations: bool - 「アノテーション」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * `copy_tasks`の値を`true`とする + 「アノテーション」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * `copy_tasks`の値を`true`とする * copy_webhooks: bool - 「Webhook」をコピーするかどうかを指定します。 + 「Webhook」をコピーするかどうかを指定します。 * copy_supplementary_data: bool - 「補助情報」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする + 「補助情報」をコピーするかどうかを指定します。 この属性の値を`true`にする場合、他の属性の値を必ず次のように指定してください。 * `copy_inputs`の値を`true`とする * copy_instructions: bool - 「作業ガイド」をコピーするかどうかを指定します。 + 「作業ガイド」をコピーするかどうかを指定します。 """ @@ -4530,9 +4529,9 @@ class PricePlan(Enum): Kyes of Dict * job: ProjectJobInfo - + * dest_project: Project - + """ @@ -4549,7 +4548,7 @@ class PricePlan(Enum): * lang: str ゲストユーザーのUIの表示言語です * key_layout: KeyLayout - + """ @@ -4560,7 +4559,7 @@ class PricePlan(Enum): Kyes of Dict * job: ProjectJobInfo - + """ @@ -4571,19 +4570,19 @@ class PricePlan(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_type: ProjectJobType - + * job_id: str - ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ジョブID。[値の制約についてはこちら。](#section/API-Convention/APIID) * job_status: JobStatus - + * job_execution: __DictStrKeyAnyValue__ ジョブの内部情報 * job_detail: __DictStrKeyAnyValue__ ジョブ結果の内部情報 * errors: Errors - + * created_datetime: str 作成日時 * updated_datetime: str @@ -4638,7 +4637,7 @@ class ProjectJobType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ + システム内部用のプロパティ """ @@ -4649,19 +4648,19 @@ class ProjectJobType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * member_status: ProjectMemberStatus - + * member_role: ProjectMemberRole - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * updated_datetime: str 更新日時 * created_datetime: str @@ -4690,7 +4689,7 @@ class ProjectJobType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - システム内部用のプロパティ + システム内部用のプロパティ """ @@ -4701,15 +4700,15 @@ class ProjectJobType(Enum): Kyes of Dict * member_status: ProjectMemberStatus - + * member_role: ProjectMemberRole - + * sampling_inspection_rate: int 抜取検査率(パーセント) * sampling_acceptance_rate: int 抜取受入率(パーセント) * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4762,7 +4761,7 @@ class ProjectStatus(Enum): Kyes of Dict * task_counts: List[ProjectTaskCountsTaskCounts] - + """ @@ -4773,9 +4772,9 @@ class ProjectStatus(Enum): Kyes of Dict * phase: TaskPhase - + * status: TaskStatus - + * count: float 該当するタスクの数 @@ -4788,9 +4787,9 @@ class ProjectStatus(Enum): Kyes of Dict * phase: TaskPhase - + * status: TaskStatus - + * count: int タスク数 * work_timespan: int @@ -4822,7 +4821,7 @@ class ProjectStatus(Enum): * token: str プロジェクトトークン文字列。 [issueProjectGuestUserToken](#operation/issueProjectGuestUserToken)への入力となります。 * info: ProjectTokenInfo - + """ @@ -4848,15 +4847,15 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * details: List[AnnotationDetailV1] 矩形、ポリゴン、全体アノテーションなど個々のアノテーションの配列。 * updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4869,11 +4868,11 @@ class ProjectStatus(Enum): * input_data_set_name: str 入力データセットの名前 * input_data_type: InputDataType - + * private_storage_arn: str - AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 + AWS IAMロール。S3プライベートストレージの認可で使います。 [S3プライベートストレージの認可の設定についてはこちら](/docs/faq/#m0b240)をご覧ください。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4886,7 +4885,7 @@ class ProjectStatus(Enum): * html: str 作業ガイドのHTML * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4899,7 +4898,7 @@ class ProjectStatus(Enum): * markers: List[Marker] マーカー一覧 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4910,17 +4909,17 @@ class ProjectStatus(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * username: str ユーザー名 * lang: Lang - + * keylayout: KeyLayout - + * biography: str - 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 + 人物紹介、略歴。 この属性は、Annofab外の所属先や肩書などを表すために用います。 Annofab上の「複数の組織」で活動する場合、本籍を示すのに便利です。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4931,7 +4930,7 @@ class ProjectStatus(Enum): Kyes of Dict * opened: bool - メッセージの開封状態に対するアクション。 trueが指定された場合は開封済みの状態、falseが指定された場合は未開封の状態にします。 + メッセージの開封状態に対するアクション。 trueが指定された場合は開封済みの状態、falseが指定された場合は未開封の状態にします。 """ @@ -4942,9 +4941,9 @@ class ProjectStatus(Enum): Kyes of Dict * role: OrganizationMemberRole - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4955,13 +4954,13 @@ class ProjectStatus(Enum): Kyes of Dict * plugin_name: str - プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの名前です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * description: str - プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 + プラグインの説明です。 プラグイン一覧や、プロジェクトで使うプラグインを選ぶときなどに表示されます。 * detail: PluginDetail - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4972,9 +4971,9 @@ class ProjectStatus(Enum): Kyes of Dict * organization_name: str - 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織名。[値の制約についてはこちら。](#section/API-Convention/APIID) * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -4989,15 +4988,15 @@ class ProjectStatus(Enum): * overview: str プロジェクトの概要 * status: ProjectStatus - + * input_data_type: InputDataType - + * organization_name: str - プロジェクトの所属組織を変更する場合は、ここに変更先の組織名を指定します。 * 所属組織を変更する前にプロジェクトを停止する必要があります。 * APIを呼び出すアカウントは、変更先組織の管理者またはオーナーである必要があります。 * 変更後の組織に所属していないプロジェクトメンバーも残りますが、作業はできません。あらためて組織に招待してください。 + プロジェクトの所属組織を変更する場合は、ここに変更先の組織名を指定します。 * 所属組織を変更する前にプロジェクトを停止する必要があります。 * APIを呼び出すアカウントは、変更先組織の管理者またはオーナーである必要があります。 * 変更後の組織に所属していないプロジェクトメンバーも残りますが、作業はできません。あらためて組織に招待してください。 * configuration: ProjectConfiguration - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * force_suspend: bool 作業中タスクがあるプロジェクトを停止する時trueにして下さい @@ -5010,9 +5009,9 @@ class ProjectStatus(Enum): Kyes of Dict * job: ProjectJobInfo - + * project: Project - + """ @@ -5023,15 +5022,15 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * event_type: WebhookEventType - + * webhook_id: str - WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) + WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) * webhook_status: WebhookStatus - + * method: WebhookHttpMethod - + * headers: List[WebhookHeader] Webhookが送信するHTTPリクエストのヘッダー * body: str @@ -5052,7 +5051,7 @@ class ProjectStatus(Enum): Kyes of Dict * refresh_token: str - リフレッシュトークン。[login](#operation/login) APIで取得します。 + リフレッシュトークン。[login](#operation/login) APIで取得します。 """ @@ -5063,9 +5062,9 @@ class ProjectStatus(Enum): Kyes of Dict * root_comment_id: str - コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) + コメントのID。[値の制約についてはこちら。](#section/API-Convention/APIID) * type: str - `Reply` [詳しくはこちら](#section/API-Convention/API-_type) + `Reply` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5076,7 +5075,7 @@ class ProjectStatus(Enum): Kyes of Dict * inspection: Inspection - + * type: str ReplyRequired @@ -5089,7 +5088,7 @@ class ProjectStatus(Enum): Kyes of Dict * email: str - + """ @@ -5126,15 +5125,15 @@ class ProjectStatus(Enum): Kyes of Dict * data: InspectionData - + * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * status: CommentStatus - + * type: str - `Root` [詳しくはこちら](#section/API-Convention/API-_type) + `Root` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5149,7 +5148,7 @@ class ProjectStatus(Enum): * min_height: int 高さの最小値[ピクセル] * min_warn_rule: str - サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 + サイズの制約に関する情報 * `none` - 制約なし * `or` - 幅と高さの両方が最小値以上 * `and` - 幅と高さのどちらか一方が最小値以上 * tolerance: int 許容誤差[ピクセル] @@ -5162,7 +5161,7 @@ class ProjectStatus(Enum): Kyes of Dict * email: str - + """ @@ -5173,19 +5172,19 @@ class ProjectStatus(Enum): Kyes of Dict * annotation_format_version: str - アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 + アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、Annofabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_phase: TaskPhase - + * task_phase_stage: int タスクのフェーズのステージ番号 * task_status: TaskStatus - + * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name: str 入力データ名 * details: List[SimpleAnnotationDetail] @@ -5202,13 +5201,13 @@ class ProjectStatus(Enum): Kyes of Dict * label: str - アノテーション仕様で設定したラベル名 (英語) です。 + アノテーション仕様で設定したラベル名 (英語) です。 * annotation_id: str - 個々のアノテーションにつけられたIDです。 + 個々のアノテーションにつけられたIDです。 * data: FullAnnotationData - + * attributes: __DictStrKeyAnyValue__ - キーと値が以下のようになっている辞書構造です。 * キー: アノテーション仕様で設定した属性名 (英語) * 値: 各属性の値 * 選択肢を定義している場合、その選択肢の表示名 (英語) * それ以外は属性値そのまま (文字列、数値、論理値) + キーと値が以下のようになっている辞書構造です。 * キー: アノテーション仕様で設定した属性名 (英語) * 値: 各属性の値 * 選択肢を定義している場合、その選択肢の表示名 (英語) * それ以外は属性値そのまま (文字列、数値、論理値) """ @@ -5219,13 +5218,13 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * detail: SingleAnnotationDetailV2 - + * updated_datetime: str 更新日時 @@ -5233,26 +5232,26 @@ class ProjectStatus(Enum): SingleAnnotationDetailV1 = Dict[str, Any] """ -アノテーション情報 +アノテーション情報 Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data_holding_type: AnnotationDataHoldingType - + * data: FullAnnotationData - + * etag: str data_holding_typeがouterの場合のみ存在し、データのETagが格納される * url: str data_holding_typeがouterの場合のみ存在し、データへの一時URLが格納される * additional_data_list: List[AdditionalDataV1] - 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | + 属性情報。 アノテーション属性の種類(`additional_data_definition`の`type`)によって、属性値を格納するプロパティは変わります。 | 属性の種類 | `additional_data_definition`の`type` | 属性値を格納するプロパティ | |------------|-------------------------|----------------------| | ON/OFF | flag | flag | | 整数 | integer | integer | | 自由記述(1行)| text | comment | | 自由記述(複数行)| comment | comment | | トラッキングID | tracking | comment | | アノテーションリンク | link | comment | | 排他選択(ラジオボタン) |choice | choice | | 排他選択(ドロップダウン) | select | choice | * created_datetime: str 作成日時 * updated_datetime: str @@ -5262,20 +5261,20 @@ class ProjectStatus(Enum): SingleAnnotationDetailV2 = Dict[str, Any] """ -アノテーション情報 +アノテーション情報 Kyes of Dict * annotation_id: str - アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 + アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID) `annotation_type`が`classification`の場合は label_id と同じ値が格納されます。 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * label_id: str - ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ラベルID。[値の制約についてはこちら。](#section/API-Convention/APIID) * body: AnnotationDetailContentOutput - + * additional_data_list: List[AdditionalDataV2] - + * created_datetime: str 作成日時 * updated_datetime: str @@ -5290,13 +5289,13 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * detail: SingleAnnotationDetailV1 - + * updated_datetime: str 更新日時 @@ -5309,13 +5308,13 @@ class ProjectStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * detail: SingleAnnotationDetailV2 - + * updated_datetime: str 更新日時 @@ -5328,25 +5327,25 @@ class ProjectStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_set_id: str - 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データセットID。[値の制約についてはこちら。](#section/API-Convention/APIID) * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * supplementary_data_id: str - 補助情報ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 補助情報ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * supplementary_data_name: str 補助情報の名前 * supplementary_data_path: str - 補助情報の実体が存在するパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 + 補助情報の実体が存在するパスです。 s3スキーマまたはhttpsスキーマのみサポートしています。 * url: str システム内部用のプロパティ * etag: str - [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 + [HTTPレスポンスヘッダー ETag](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag)に相当する値です。 * supplementary_data_type: SupplementaryDataType - + * supplementary_data_number: int 補助情報の表示順を表す数値。 * updated_datetime: str @@ -5363,13 +5362,13 @@ class ProjectStatus(Enum): * supplementary_data_name: str 補助情報の名前 * supplementary_data_path: str - 補助情報の実体が存在するURLです。 補助情報の実体をAnnofabにアップロードする場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 補助情報の実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 補助情報の実体が、S3プライベートストレージに存在するファイルを補助情報として登録する場合は、[事前に認可の設定](/docs/faq/#m0b240)が必要です。 + 補助情報の実体が存在するURLです。 補助情報の実体をAnnofabにアップロードする場合は、[createTempPath](#operation/createTempPath) APIで取得した`path`を指定してください。 補助情報の実体が[プライベートストレージ](/docs/faq/#prst9c)に存在する場合は、S3スキーマまたはHTTPSスキーマのURLを指定してください。 補助情報の実体が、S3プライベートストレージに存在するファイルを補助情報として登録する場合は、[事前に認可の設定](/docs/faq/#m0b240)が必要です。 * supplementary_data_type: SupplementaryDataType - + * supplementary_data_number: int 補助情報の表示順を表す数値。同じ入力データに対して複数の補助情報で表示順が重複する場合、順序不定になります。 * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) """ @@ -5386,24 +5385,24 @@ class SupplementaryDataType(Enum): SystemMetadata = Dict[str, Any] """ -Annofabが設定したメタデータです。 `metadata`プロパティとは違い、ユーザー側では値を編集できません。 * `SystemMetadataImage`: 画像プロジェクト用のメタデータ * `SystemMetadataMovie`: 動画プロジェクト用のメタデータ * `SystemMetadataCustom`: カスタムプロジェクト用のメタデータ +Annofabが設定したメタデータです。 `metadata`プロパティとは違い、ユーザー側では値を編集できません。 * `SystemMetadataImage`: 画像プロジェクト用のメタデータ * `SystemMetadataMovie`: 動画プロジェクト用のメタデータ * `SystemMetadataCustom`: カスタムプロジェクト用のメタデータ Kyes of Dict * original_resolution: Resolution - + * resized_resolution: Resolution - + * type: str `Custom` * input_duration: float - 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 + 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 """ SystemMetadataCustom = Dict[str, Any] """ -カスタムデータ用システムメタデータ。 現行はプロパティがない形式的なオブジェクトです。 +カスタムデータ用システムメタデータ。 現行はプロパティがない形式的なオブジェクトです。 Kyes of Dict @@ -5414,14 +5413,14 @@ class SupplementaryDataType(Enum): SystemMetadataImage = Dict[str, Any] """ -画像データ用システムメタデータ。 +画像データ用システムメタデータ。 Kyes of Dict * original_resolution: Resolution - + * resized_resolution: Resolution - + * type: str `Image` @@ -5429,12 +5428,12 @@ class SupplementaryDataType(Enum): SystemMetadataMovie = Dict[str, Any] """ -動画データ用システムメタデータ。 +動画データ用システムメタデータ。 Kyes of Dict * input_duration: float - 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 + 動画の長さ[秒]。 動画の長さが取得できなかった場合は、設定されません。 * type: str `Movie` @@ -5447,25 +5446,25 @@ class SupplementaryDataType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * phase: TaskPhase - + * phase_stage: int タスクのフェーズのステージ番号 * status: TaskStatus - + * input_data_id_list: List[str] タスクに含まれる入力データのID * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * histories_by_phase: List[TaskHistoryShort] 簡易的なタスク履歴(あるフェーズを誰が担当したか) * work_time_span: int 累計実作業時間(ミリ秒) * number_of_rejections: int - このタスクが差戻しされた回数(すべてのフェーズでの差戻し回数の合計 このフィールドは、どのフェーズで何回差戻されたかを区別できないため、廃止予定です。 `histories_by_phase` で各フェーズの回数を計算することで、差戻し回数が分かります。 例)`acceptance`フェーズが3回ある場合、`acceptance`フェーズで2回差し戻しされたことになります。 + このタスクが差戻しされた回数(すべてのフェーズでの差戻し回数の合計 このフィールドは、どのフェーズで何回差戻されたかを区別できないため、廃止予定です。 `histories_by_phase` で各フェーズの回数を計算することで、差戻し回数が分かります。 例)`acceptance`フェーズが3回ある場合、`acceptance`フェーズで2回差し戻しされたことになります。 * started_datetime: str 現在のフェーズが開始された日時 * updated_datetime: str @@ -5473,9 +5472,9 @@ class SupplementaryDataType(Enum): * operation_updated_datetime: str タスクのステータスやフェーズ、担当者などが更新されたときの日時 * sampling: str - 検査抜取検査/抜取受入によって、どのフェーズがスキップされたか * `inspection_skipped` - 抜取検査の対象外となり、検査フェーズがスキップされた * `inspection_stages_skipped` - 抜取検査の対象外となり、検査フェーズのステージの一部がスキップされた * `acceptance_skipped` - 抜取受入の対象外となり、受入フェーズがスキップされた * `inspection_and_acceptance_skipped` - 抜取検査・抜取受入の対象外となり、検査・受入フェーズがスキップされた 未指定ならば、どのフェーズもスキップされていません。 + 検査抜取検査/抜取受入によって、どのフェーズがスキップされたか * `inspection_skipped` - 抜取検査の対象外となり、検査フェーズがスキップされた * `inspection_stages_skipped` - 抜取検査の対象外となり、検査フェーズのステージの一部がスキップされた * `acceptance_skipped` - 抜取受入の対象外となり、受入フェーズがスキップされた * `inspection_and_acceptance_skipped` - 抜取検査・抜取受入の対象外となり、検査・受入フェーズがスキップされた 未指定ならば、どのフェーズもスキップされていません。 * metadata: dict(str, __DictStrKeyAnyValue__) - ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 + ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 """ @@ -5486,22 +5485,22 @@ class SupplementaryDataType(Enum): Kyes of Dict * request_type: TaskAssignRequestType - + """ TaskAssignRequestType = Dict[str, Any] """ -* `TaskAssignRequestTypeRandom`: 自分自身にランダムにタスクを割り当てます。プロジェクト設定でタスクのランダム割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeSelection`: メンバーに指定したタスクを割り当てます。ただし、メンバーはプロジェクトオーナーもしくはチェッカーロールを持つ必要があります。プロジェクト設定でタスクの選択割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeTaskProperty`: タスクプロパティ割当の設定に基づいて、タスクを自分自身に割り当てます。プロジェクト設定でタスクプロパティ割当を有効にした場合のみ利用できます。 +* `TaskAssignRequestTypeRandom`: 自分自身にランダムにタスクを割り当てます。プロジェクト設定でタスクのランダム割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeSelection`: メンバーに指定したタスクを割り当てます。ただし、メンバーはプロジェクトオーナーもしくはチェッカーロールを持つ必要があります。プロジェクト設定でタスクの選択割当を有効にした場合のみ利用できます。 * `TaskAssignRequestTypeTaskProperty`: タスクプロパティ割当の設定に基づいて、タスクを自分自身に割り当てます。プロジェクト設定でタスクプロパティ割当を有効にした場合のみ利用できます。 Kyes of Dict * phase: TaskPhase - + * type: str - `TaskProperty` + `TaskProperty` * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_ids: List[str] 割り当てるタスクのID @@ -5514,9 +5513,9 @@ class SupplementaryDataType(Enum): Kyes of Dict * phase: TaskPhase - + * type: str - `Random` + `Random` """ @@ -5527,11 +5526,11 @@ class SupplementaryDataType(Enum): Kyes of Dict * user_id: str - ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) + ユーザーID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_ids: List[str] 割り当てるタスクのID * type: str - `Selection` + `Selection` """ @@ -5542,9 +5541,9 @@ class SupplementaryDataType(Enum): Kyes of Dict * phase: TaskPhase - + * type: str - `TaskProperty` + `TaskProperty` """ @@ -5560,14 +5559,14 @@ class TaskAssignmentOrder(Enum): TaskAssignmentProperty = Dict[str, Any] """ -プロジェクト設定でタスクプロパティ割当を有効にしている場合のみ指定してください。 +プロジェクト設定でタスクプロパティ割当を有効にしている場合のみ指定してください。 Kyes of Dict * name: str - タスクの割当優先度を決定するためのタスクプロパティ。 指定できるプロパティは次のいずれかです。 * `task_id` * `updated_datetime` * `metadata` (`metadata.{メタデータ名}` の形式で指定してください) + タスクの割当優先度を決定するためのタスクプロパティ。 指定できるプロパティは次のいずれかです。 * `task_id` * `updated_datetime` * `metadata` (`metadata.{メタデータ名}` の形式で指定してください) * order: TaskAssignmentOrder - + """ @@ -5591,7 +5590,7 @@ class TaskAssignmentType(Enum): Kyes of Dict * task_generate_rule: TaskGenerateRule - + * project_last_updated_datetime: str プロジェクトの最終更新日時([getProject](#operation/getProject) APIのレスポンス `updated_datetime`)。タスク生成の排他制御に使用。 @@ -5604,9 +5603,9 @@ class TaskAssignmentType(Enum): Kyes of Dict * job: ProjectJobInfo - + * project: Project - + """ @@ -5617,52 +5616,52 @@ class TaskAssignmentType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * title: str プロジェクトのタイトル * overview: str プロジェクトの概要 * project_status: ProjectStatus - + * input_data_type: InputDataType - + * configuration: ProjectConfiguration - + * created_datetime: str 作成日時 * updated_datetime: str 更新日時 * summary: ProjectSummary - + * job: ProjectJobInfo - + * project: Project - + """ TaskGenerateRule = Dict[str, Any] """ -タスク生成のルール * `TaskGenerateRuleByCount`: 1つのタスクに割り当てる入力データの個数を指定してタスクを生成します。 * `TaskGenerateRuleByDirectory`: 入力データ名をファイルパスに見立てて、ディレクトリ単位でタスクを生成します。 * `TaskGenerateRuleByInputDataCsv`: 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパスを指定してタスクを生成します。 +タスク生成のルール * `TaskGenerateRuleByCount`: 1つのタスクに割り当てる入力データの個数を指定してタスクを生成します。 * `TaskGenerateRuleByDirectory`: 入力データ名をファイルパスに見立てて、ディレクトリ単位でタスクを生成します。 * `TaskGenerateRuleByInputDataCsv`: 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパスを指定してタスクを生成します。 Kyes of Dict * task_id_prefix: str - タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) * allow_duplicate_input_data: bool - `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 + `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 * input_data_count: int - 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 + 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 * input_data_order: InputDataOrder - + * type: str - `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) + `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) * input_data_name_prefix: str タスク生成対象の入力データ名のプレフィックス * csv_data_path: str - 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 + 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 """ @@ -5673,15 +5672,15 @@ class TaskAssignmentType(Enum): Kyes of Dict * task_id_prefix: str - タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) * allow_duplicate_input_data: bool - `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 + `true`のときは、既にタスクに使われている入力データも、新しいタスクに割り当てます。`false`のときは、既にタスクに使われている入力データを除外します。まだタスクに使われていない入力データだけを、新しいタスクに割り当てます。 * input_data_count: int - 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 + 1つのタスクに割り当てる入力データの個数。 動画プロジェクトでは必ず`1`を指定してください。 * input_data_order: InputDataOrder - + * type: str - `ByCount` [詳しくはこちら](#section/API-Convention/API-_type) + `ByCount` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5692,24 +5691,24 @@ class TaskAssignmentType(Enum): Kyes of Dict * task_id_prefix: str - タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクIDのプレフィックス。[値の制約についてはこちら。](#section/API-Convention/APIID) * input_data_name_prefix: str タスク生成対象の入力データ名のプレフィックス * type: str - `ByDirectory` [詳しくはこちら](#section/API-Convention/API-_type) + `ByDirectory` [詳しくはこちら](#section/API-Convention/API-_type) """ TaskGenerateRuleByInputDataCsv = Dict[str, Any] """ -各タスクへの入力データへの割当を記入したCSVへのS3上のパスを指定してタスクを生成します。 1つのタスクに対する入力データの個数は最大200です。200を超えるタスクが1つでもある場合にはタスク生成に失敗します。 +各タスクへの入力データへの割当を記入したCSVへのS3上のパスを指定してタスクを生成します。 1つのタスクに対する入力データの個数は最大200です。200を超えるタスクが1つでもある場合にはタスク生成に失敗します。 Kyes of Dict * csv_data_path: str - 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 + 各タスクへの入力データへの割り当てを記入したCSVへのS3上のパス。 * type: str - `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) + `ByInputDataCsv` [詳しくはこちら](#section/API-Convention/API-_type) """ @@ -5720,11 +5719,11 @@ class TaskAssignmentType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_history_id: str - タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * started_datetime: str 開始日時 * ended_datetime: str @@ -5732,11 +5731,11 @@ class TaskAssignmentType(Enum): * accumulated_labor_time_milliseconds: str 累計実作業時間(ISO 8601 duration) * phase: TaskPhase - + * phase_stage: int タスクのフェーズのステージ番号 * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -5747,23 +5746,23 @@ class TaskAssignmentType(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_history_id: str - タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスク履歴ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * created_datetime: str 作成日時 * phase: TaskPhase - + * phase_stage: int タスクのフェーズのステージ番号 * status: TaskStatus - + * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * request: TaskOperation - + """ @@ -5774,11 +5773,11 @@ class TaskAssignmentType(Enum): Kyes of Dict * phase: TaskPhase - + * phase_stage: int - + * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * worked: bool そのフェーズでタスクの作業を行ったかどうか(行った場合はtrue) @@ -5791,11 +5790,11 @@ class TaskAssignmentType(Enum): Kyes of Dict * input_data_id: str - 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID) * annotation_errors: List[ValidationError] - + * inspection_errors: List[InspectionValidationError] - + """ @@ -5816,7 +5815,7 @@ class TaskAssignmentType(Enum): * over_limit: bool 検索結果が1万件を超えた場合にtrueとなる。 * aggregations: List[AggregationResult] - [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 + [Aggregationによる集約結果](#section/API-Convention/AggregationResult)。 """ @@ -5827,13 +5826,13 @@ class TaskAssignmentType(Enum): Kyes of Dict * status: TaskStatus - + * last_updated_datetime: str - 新規作成時は未指定、更新時は必須(更新前の日時) + 新規作成時は未指定、更新時は必須(更新前の日時) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * force: bool - タスクの強制操作を行うかどうか。 `status`が`rejected`のときのみ、`true`を指定できます。 + タスクの強制操作を行うかどうか。 `status`が`rejected`のときのみ、`true`を指定できます。 """ @@ -5855,7 +5854,7 @@ class TaskPhase(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str 日付 * phases: List[PhaseStatistics] @@ -5872,7 +5871,7 @@ class TaskPhase(Enum): * input_data_id_list: List[str] タスクに割り当てる入力データのID。タスクに割り当てることができる入力データの個数は最大200です。 * metadata: dict(str, __DictStrKeyAnyValue__) - ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 + ユーザーが自由に登録できるkey-value型のメタデータです。 keyにはメタデータ名、valueには値を指定してください。 keyに指定できる文字種は次の通りです。 * 半角英数字 * `_` (アンダースコア) * `-` (ハイフン) valueに指定できる値は次の通りです。 * 文字列 * 数値 * 真偽値 """ @@ -5898,11 +5897,11 @@ class TaskStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * task_id: str - タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) + タスクID。[値の制約についてはこちら。](#section/API-Convention/APIID) * inputs: List[InputDataSummary] - + """ @@ -5913,7 +5912,7 @@ class TaskStatus(Enum): Kyes of Dict * url: str - このURLは発行から1時間経過すると無効になります。 + このURLは発行から1時間経過すると無効になります。 """ @@ -5939,11 +5938,11 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str UnknownAdditionalData @@ -5956,9 +5955,9 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * type: str UnknownLabel @@ -5971,11 +5970,11 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * additional_data_definition_id: str - + * type: str UnknownLinkTarget @@ -5988,7 +5987,7 @@ class TaskStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * year_month: str 対象月。年月のフォーマットは YYYY-MM です。 * aggregation_period_from: str @@ -6009,7 +6008,7 @@ class TaskStatus(Enum): Kyes of Dict * organization_id: str - 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) + 組織ID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str 対象日。日付のフォーマットはISO 8601 拡張形式です。 * aggregation_period_from: str @@ -6041,13 +6040,13 @@ class TaskStatus(Enum): Kyes of Dict * account: str - + * members: str - + * projects: str - + * organizations: str - + """ @@ -6058,7 +6057,7 @@ class TaskStatus(Enum): Kyes of Dict * type: str - ユーザー定義アノテーション種別の型を指定します。 指定可能な値と、その意味は下記の通りです。 * `BoundingBox2d` - 2次元の矩形 * `Polygon2d` - 2次元のポリゴン * `Polyline2d` - 2次元のポリライン * `SinglePoint2d` - 2次元の点 * `SemanticSegmentation2d` - 2次元のセマンティックセグメンテーション * `InstanceSegmentation2d` - 2次元のインスタンスセグメンテーション * `Range1d` - 1次元の範囲 * `Classification` - 全体アノテーション * `Unknown` - その他のアノテーション種別 下記のフィールド定義は、すべてのアノテーション種別の型に対して使用可能です。 * `OneIntegerField` * `OneStringField` * `OneBooleanField` その他のフィールド定義は、使用可能なアノテーション種別の型に制限があります。 ユーザー定義アノテーション種別の型ごとの、使用可能なフィールド定義を下記の表で示します。 |ユーザー定義アノテーション種別の型 | 使用可能なフィールド定義 | |-----------------|:----------:| | BoundingBox2d | MinimumSize2dWithDefaultInsertPosition, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polygon2d | MinimumSize2d, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polyline2d | VertexCountMinMax, DisplayLineDirection, MarginOfErrorTolerance | | SinglePoint2d | MarginOfErrorTolerance | | SemanticSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | InstanceSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | Range1d | MarginOfErrorTolerance | | Classification | MarginOfErrorTolerance | | Unknown | - | + ユーザー定義アノテーション種別の型を指定します。 指定可能な値と、その意味は下記の通りです。 * `BoundingBox2d` - 2次元の矩形 * `Polygon2d` - 2次元のポリゴン * `Polyline2d` - 2次元のポリライン * `SinglePoint2d` - 2次元の点 * `SemanticSegmentation2d` - 2次元のセマンティックセグメンテーション * `InstanceSegmentation2d` - 2次元のインスタンスセグメンテーション * `Range1d` - 1次元の範囲 * `Classification` - 全体アノテーション * `Unknown` - その他のアノテーション種別 下記のフィールド定義は、すべてのアノテーション種別の型に対して使用可能です。 * `OneIntegerField` * `OneStringField` * `OneBooleanField` その他のフィールド定義は、使用可能なアノテーション種別の型に制限があります。 ユーザー定義アノテーション種別の型ごとの、使用可能なフィールド定義を下記の表で示します。 |ユーザー定義アノテーション種別の型 | 使用可能なフィールド定義 | |-----------------|:----------:| | BoundingBox2d | MinimumSize2dWithDefaultInsertPosition, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polygon2d | MinimumSize2d, VertexCountMinMax, MinimumArea2d, MarginOfErrorTolerance | | Polyline2d | VertexCountMinMax, DisplayLineDirection, MarginOfErrorTolerance | | SinglePoint2d | MarginOfErrorTolerance | | SemanticSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | InstanceSegmentation2d | AnnotationEditorFeature, MarginOfErrorTolerance | | Range1d | MarginOfErrorTolerance | | Classification | MarginOfErrorTolerance | | Unknown | - | """ @@ -6069,13 +6068,13 @@ class TaskStatus(Enum): Kyes of Dict * annotation_type_name: InternationalizationMessage - + * field_definitions: List[UserDefinedAnnotationTypeDefinitionFieldDefinitions] - ユーザーが定義するアノテーション種別のフィールド定義です。 フィールドIDをキー、フィールド定義を値とするオブジェクトを設定します。 + ユーザーが定義するアノテーション種別のフィールド定義です。 フィールドIDをキー、フィールド定義を値とするオブジェクトを設定します。 * metadata: dict(str, str) - アノテーション種別を設定した際に、ラベルのメタデータとしてデフォルトで設定される値です。 + アノテーション種別を設定した際に、ラベルのメタデータとしてデフォルトで設定される値です。 * annotation_data_type: UserDefinedAnnotationDataType - + """ @@ -6088,30 +6087,30 @@ class TaskStatus(Enum): * field_id: str フィールドID。任意の文字列を設定できます。 * definition: UserDefinedAnnotationTypeFieldDefinition - + """ UserDefinedAnnotationTypeFieldDefinition = Dict[str, Any] """ -ユーザー定義のアノテーション種別に設定可能なフィールドについての定義です。 +ユーザー定義のアノテーション種別に設定可能なフィールドについての定義です。 Kyes of Dict * type: str - + * title: InternationalizationMessage - + * prefix: str - フィールドの前に付与する文字列。 + フィールドの前に付与する文字列。 * postfix: str - フィールドの後に付与する文字列 + フィールドの後に付与する文字列 * description: InternationalizationMessage - + * initial_value: bool - フィールドの初期値 + フィールドの初期値 * label: InternationalizationMessage - + """ @@ -6122,19 +6121,19 @@ class TaskStatus(Enum): Kyes of Dict * label_id: str - + * annotation_id: str - + * message: str - + * type: str UnknownLabel * annotation_ids: List[str] - + * additional_data_definition_id: str - + * additional_data: AdditionalDataV1 - + """ @@ -6145,7 +6144,7 @@ class TaskStatus(Enum): Kyes of Dict * token: Token - + """ @@ -6156,15 +6155,15 @@ class TaskStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * event_type: WebhookEventType - + * webhook_id: str - WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) + WebhookID。[値の制約についてはこちら。](#section/API-Convention/APIID) * webhook_status: WebhookStatus - + * method: WebhookHttpMethod - + * headers: List[WebhookHeader] Webhookが送信するHTTPリクエストのヘッダー * body: str @@ -6242,7 +6241,7 @@ class WebhookStatus(Enum): Kyes of Dict * result: str - * success: 通知先から正常なレスポンス(2xx系)を受け取った * failure: 通知先からエラーレスポンス(2xx系以外)を受け取った * error: リクエスト送信に失敗した、もしくはレスポンスを受信できなかった + * success: 通知先から正常なレスポンス(2xx系)を受け取った * failure: 通知先からエラーレスポンス(2xx系以外)を受け取った * error: リクエスト送信に失敗した、もしくはレスポンスを受信できなかった * request_body: str 実際に送信されたリクエストボディ * response_status: int @@ -6261,9 +6260,9 @@ class WebhookStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * date: str - + * by_tasks: List[WorktimeStatisticsItem] タスクごとに計算した「画像1枚あたりの作業時間平均」の統計(動画プロジェクトの場合は空リスト) * by_inputs: List[WorktimeStatisticsItem] @@ -6282,9 +6281,9 @@ class WebhookStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * account_id: str - アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) + アカウントID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data_series: List[WorktimeStatisticsData] プロジェクトメンバーの日毎の作業時間統計データ @@ -6297,7 +6296,7 @@ class WebhookStatus(Enum): Kyes of Dict * project_id: str - プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) + プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) * data_series: List[WorktimeStatisticsData] プロジェクトの日毎の作業時間統計データ @@ -6327,7 +6326,7 @@ class WebhookStatus(Enum): Kyes of Dict * phase: TaskPhase - + * histogram: List[HistogramItem] ヒストグラム情報 * average: str From 3111d4cd40fdbdbe95911db422aa352b057155f5 Mon Sep 17 00:00:00 2001 From: yuji38kwmt Date: Tue, 5 Mar 2024 17:31:13 +0900 Subject: [PATCH 13/13] format --- annofabapi/dataclass/annotation.py | 3 ++- annofabapi/dataclass/annotation_specs.py | 2 +- annofabapi/dataclass/comment.py | 2 +- annofabapi/dataclass/input.py | 2 +- annofabapi/dataclass/job.py | 2 +- annofabapi/dataclass/organization.py | 2 +- annofabapi/dataclass/organization_member.py | 2 +- annofabapi/dataclass/project.py | 2 +- annofabapi/dataclass/project_member.py | 2 +- annofabapi/dataclass/supplementary.py | 2 +- annofabapi/dataclass/task.py | 2 +- annofabapi/generated_api.py | 2 +- annofabapi/generated_api2.py | 2 +- annofabapi/models.py | 2 +- generate/partial-header/dataclass/annotation.py | 1 + generate/partial-header/dataclass/common.py | 2 +- generate/partial-header/generated_api_partial_header_v1.py | 2 +- generate/partial-header/generated_api_partial_header_v2.py | 2 +- generate/partial-header/models_partial_header_v1.py | 2 +- 19 files changed, 20 insertions(+), 18 deletions(-) diff --git a/annofabapi/dataclass/annotation.py b/annofabapi/dataclass/annotation.py index 82938772..ee6dd5fb 100644 --- a/annofabapi/dataclass/annotation.py +++ b/annofabapi/dataclass/annotation.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ @@ -14,6 +14,7 @@ from dataclasses_json import DataClassJsonMixin +# ruff: noqa: E501 from annofabapi.models import ( AdditionalDataDefinitionType, AnnotationDataHoldingType, diff --git a/annofabapi/dataclass/annotation_specs.py b/annofabapi/dataclass/annotation_specs.py index f156aaf1..96803e74 100644 --- a/annofabapi/dataclass/annotation_specs.py +++ b/annofabapi/dataclass/annotation_specs.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/comment.py b/annofabapi/dataclass/comment.py index f29de6f3..75fe0127 100644 --- a/annofabapi/dataclass/comment.py +++ b/annofabapi/dataclass/comment.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/input.py b/annofabapi/dataclass/input.py index 641ca174..a4f0732e 100644 --- a/annofabapi/dataclass/input.py +++ b/annofabapi/dataclass/input.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/job.py b/annofabapi/dataclass/job.py index f3b92d53..7028b542 100644 --- a/annofabapi/dataclass/job.py +++ b/annofabapi/dataclass/job.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/organization.py b/annofabapi/dataclass/organization.py index 0739b1eb..2db600a8 100644 --- a/annofabapi/dataclass/organization.py +++ b/annofabapi/dataclass/organization.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/organization_member.py b/annofabapi/dataclass/organization_member.py index 858e56f9..35b245ea 100644 --- a/annofabapi/dataclass/organization_member.py +++ b/annofabapi/dataclass/organization_member.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/project.py b/annofabapi/dataclass/project.py index 82f33a98..4f755e12 100644 --- a/annofabapi/dataclass/project.py +++ b/annofabapi/dataclass/project.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/project_member.py b/annofabapi/dataclass/project_member.py index 5406a5f6..184ed8f1 100644 --- a/annofabapi/dataclass/project_member.py +++ b/annofabapi/dataclass/project_member.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/supplementary.py b/annofabapi/dataclass/supplementary.py index 4419e623..b0f65651 100644 --- a/annofabapi/dataclass/supplementary.py +++ b/annofabapi/dataclass/supplementary.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/dataclass/task.py b/annofabapi/dataclass/task.py index 2cf274a0..9dc586c9 100644 --- a/annofabapi/dataclass/task.py +++ b/annofabapi/dataclass/task.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py index f1e1d2db..6a418438 100644 --- a/annofabapi/generated_api.py +++ b/annofabapi/generated_api.py @@ -1,4 +1,4 @@ -# ruff: noqa: E501 +# ruff: noqa: E501, ANN401 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/generated_api2.py b/annofabapi/generated_api2.py index d950e4be..cbcd8b95 100644 --- a/annofabapi/generated_api2.py +++ b/annofabapi/generated_api2.py @@ -1,4 +1,4 @@ -# ruff: noqa: E501 +# ruff: noqa: E501, ANN401 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/annofabapi/models.py b/annofabapi/models.py index 7360fe38..dc38be72 100644 --- a/annofabapi/models.py +++ b/annofabapi/models.py @@ -1,4 +1,4 @@ -# ruff: noqa: E501 +# ruff: noqa: E501, W293, W291 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/generate/partial-header/dataclass/annotation.py b/generate/partial-header/dataclass/annotation.py index 85e26e07..c08ad264 100644 --- a/generate/partial-header/dataclass/annotation.py +++ b/generate/partial-header/dataclass/annotation.py @@ -1,3 +1,4 @@ +# ruff: noqa: E501 from annofabapi.models import ( AdditionalDataDefinitionType, AnnotationDataHoldingType, diff --git a/generate/partial-header/dataclass/common.py b/generate/partial-header/dataclass/common.py index d9b265e1..c8b5bdfb 100644 --- a/generate/partial-header/dataclass/common.py +++ b/generate/partial-header/dataclass/common.py @@ -1,4 +1,4 @@ -# flake8: noqa: W291 +# ruff: noqa: E501 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/generate/partial-header/generated_api_partial_header_v1.py b/generate/partial-header/generated_api_partial_header_v1.py index 5ddf1f0f..1f091030 100644 --- a/generate/partial-header/generated_api_partial_header_v1.py +++ b/generate/partial-header/generated_api_partial_header_v1.py @@ -1,4 +1,4 @@ -# ruff: noqa: E501 +# ruff: noqa: E501, ANN401 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/generate/partial-header/generated_api_partial_header_v2.py b/generate/partial-header/generated_api_partial_header_v2.py index 5495ce46..621b833e 100644 --- a/generate/partial-header/generated_api_partial_header_v2.py +++ b/generate/partial-header/generated_api_partial_header_v2.py @@ -1,4 +1,4 @@ -# ruff: noqa: E501 +# ruff: noqa: E501, ANN401 # pylint: disable=too-many-lines,trailing-whitespace """ diff --git a/generate/partial-header/models_partial_header_v1.py b/generate/partial-header/models_partial_header_v1.py index 12e31163..fedd6fd2 100644 --- a/generate/partial-header/models_partial_header_v1.py +++ b/generate/partial-header/models_partial_header_v1.py @@ -1,4 +1,4 @@ -# ruff: noqa: E501 +# ruff: noqa: E501, W293, W291 # pylint: disable=too-many-lines,trailing-whitespace """