From 979b3b6ee104e14a116e95744be7ccc8f531640f Mon Sep 17 00:00:00 2001 From: ZdenekM Date: Tue, 7 Jan 2025 14:49:37 +0100 Subject: [PATCH] chore: update of dependencies, python 3.12 only --- .flake8 | 2 +- .github/workflows/pants-cache.yaml | 2 +- .github/workflows/pants.yaml | 14 +- 3rdparty/BUILD | 6 + 3rdparty/black-requirements.txt | 3 + 3rdparty/black_lockfile.txt | 190 +- 3rdparty/constraints.txt | 2384 +++++------------ 3rdparty/flake8_lockfile.txt | 79 +- 3rdparty/mypy-requirements.txt | 2 +- 3rdparty/mypy_lockfile.txt | 92 +- 3rdparty/pytest_lockfile.txt | 162 +- 3rdparty/requirements.txt | 42 +- 3rdparty/setuptools-requirements.txt | 2 +- 3rdparty/setuptools_lockfile.txt | 49 +- build-support/install_ur_dependencies.sh | 6 +- compose-files/fit-demo/docker-compose.yml | 4 +- compose-files/ur-demo/docker-compose.yml | 4 +- pants-plugins/macros.py | 4 +- pants.ci.toml | 2 +- pants.toml | 13 +- pyproject.toml | 2 +- pytest.ini | 2 +- src/docker/arcor2_3d_mouse/Dockerfile | 6 +- src/docker/arcor2_arserver/Dockerfile | 6 +- src/docker/arcor2_build/Dockerfile | 6 +- src/docker/arcor2_calibration/Dockerfile | 6 +- src/docker/arcor2_dobot/Dockerfile | 6 +- src/docker/arcor2_execution/Dockerfile | 6 +- src/docker/arcor2_execution_proxy/Dockerfile | 6 +- src/docker/arcor2_fanuc/Dockerfile | 6 +- .../Dockerfile | 6 +- src/docker/arcor2_scene/Dockerfile | 6 +- .../arcor2_upload_builtin_objects/Dockerfile | 6 +- src/docker/arcor2_upload_fit_demo/Dockerfile | 6 +- src/docker/arcor2_ur/BUILD | 7 +- src/docker/arcor2_ur/Dockerfile | 6 +- src/python/arcor2/data/common.py | 62 +- src/python/arcor2/data/events.py | 30 +- src/python/arcor2/data/object_type.py | 10 +- src/python/arcor2/flask.py | 8 +- src/python/arcor2/object_types/abstract.py | 2 +- src/python/arcor2/object_types/tests/BUILD | 1 - .../arcor2/object_types/tests/test_utils.py | 6 +- src/python/arcor2/object_types/utils.py | 17 +- src/python/arcor2/rest.py | 21 +- .../test_objects/dummy_multiarm_robot.py | 4 +- src/python/arcor2/ws_server.py | 8 +- src/python/arcor2_arserver/execution.py | 50 +- src/python/arcor2_arserver/globals.py | 4 +- src/python/arcor2_arserver/lock/lock.py | 18 +- src/python/arcor2_arserver/lock/structures.py | 4 +- src/python/arcor2_arserver/models.py | 2 +- src/python/arcor2_arserver/notifications.py | 4 +- .../arcor2_arserver/object_types/source.py | 1 + .../arcor2_arserver/object_types/tests/BUILD | 2 +- src/python/arcor2_arserver/rpc/camera.py | 8 +- src/python/arcor2_arserver/rpc/execution.py | 6 +- src/python/arcor2_arserver/rpc/lock.py | 12 +- src/python/arcor2_arserver/rpc/objects.py | 34 +- src/python/arcor2_arserver/rpc/project.py | 94 +- src/python/arcor2_arserver/rpc/robot.py | 46 +- src/python/arcor2_arserver/rpc/scene.py | 52 +- src/python/arcor2_arserver/rpc/user.py | 4 +- .../arcor2_arserver/scripts/arserver.py | 14 +- src/python/arcor2_arserver/tests/BUILD | 1 - .../tests/objects/object_with_actions.py | 6 +- .../arcor2_arserver/tests/test_linked_pose.py | 8 +- .../tests/test_position_param.py | 8 +- .../tests/test_project_execution.py | 8 +- src/python/arcor2_arserver/tests/testutils.py | 11 +- src/python/arcor2_arserver/user.py | 18 +- .../arcor2_arserver_data/events/common.py | 12 +- .../arcor2_arserver_data/events/robot.py | 6 +- .../arcor2_arserver_data/events/scene.py | 8 +- src/python/arcor2_arserver_data/rpc/lock.py | 4 +- .../arcor2_arserver_data/rpc/objects.py | 6 +- src/python/arcor2_arserver_data/rpc/robot.py | 22 +- .../source/tests/test_compiler_str.py | 4 +- .../source/tests/test_compiler_unit_tests.py | 4 +- src/python/arcor2_build/source/utils.py | 12 + .../arcor2_build/tests/test_cross_import.py | 2 +- src/python/arcor2_calibration/BUILD | 1 - src/python/arcor2_calibration/scripts/BUILD | 4 +- src/python/arcor2_calibration/tests/BUILD | 2 - src/python/arcor2_dobot/dobot.py | 6 +- src/python/arcor2_dobot/m1.py | 8 +- src/python/arcor2_dobot/magician.py | 10 +- src/python/arcor2_dobot/scripts/dobot.py | 4 +- src/python/arcor2_dobot/tests/BUILD | 1 - src/python/arcor2_dobot/tests/conftest.py | 2 +- .../arcor2_execution/scripts/execution.py | 32 +- .../scripts/execution_rest_proxy.py | 12 +- .../object_types/abstract_dobot.py | 6 +- .../object_types/conveyor_belt.py | 6 +- .../object_types/dobot_magician.py | 10 +- .../arcor2_fit_demo/object_types/tests/BUILD | 1 - src/python/arcor2_fit_demo/tests/BUILD | 1 - .../object_types/logging_mixin.py | 6 +- src/python/arcor2_logger/scripts/logger.py | 6 +- src/python/arcor2_logger/tests/BUILD | 1 - src/python/arcor2_runtime/action.py | 6 +- src/python/arcor2_scene/BUILD | 1 - src/python/arcor2_scene/scripts/BUILD | 4 +- src/python/arcor2_scene/tests/BUILD | 1 - src/python/arcor2_ur/object_types/ur5e.py | 6 +- src/python/arcor2_ur/tests/BUILD | 5 +- src/python/arcor2_ur/tests/conftest.py | 59 +- src/python/arcor2_ur/vgc10.py | 4 +- src/python/arcor2_yumi/BUILD | 1 - .../arcor2_yumi/object_types/tests/BUILD | 2 +- src/python/arcor2_yumi/object_types/yumi.py | 22 +- src/python/arcor2_yumi/tests/BUILD | 1 - 112 files changed, 1467 insertions(+), 2579 deletions(-) create mode 100644 3rdparty/black-requirements.txt diff --git a/.flake8 b/.flake8 index 09f50dbf0..ee9672ced 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] max-line-length = 120 application-import-names = arcor2,arcor2_arserver,arcor2_arserver_data,arcor2_build,arcor2_build_data,arcor2_calibration,arcor2_execution,arcor2_execution_data,arcor2_fit_demo,arcor2_kinali,arcor2_mocks -ignore = B306, E203, E231, W503 +ignore = B306, E203, E231, W503, E226, E704 known-modules = numpy-quaternion:[quaternion],lru-dict:[lru] \ No newline at end of file diff --git a/.github/workflows/pants-cache.yaml b/.github/workflows/pants-cache.yaml index 4be3ca956..287114670 100644 --- a/.github/workflows/pants-cache.yaml +++ b/.github/workflows/pants-cache.yaml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python-version: ['3.11'] + python-version: ['3.12'] steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/pants.yaml b/.github/workflows/pants.yaml index f92e8b533..ea53f8969 100644 --- a/.github/workflows/pants.yaml +++ b/.github/workflows/pants.yaml @@ -23,7 +23,7 @@ jobs: needs: org-check strategy: matrix: - python-version: ['3.11'] + python-version: ['3.12'] steps: - name: Maximize build space uses: easimon/maximize-build-space@v10 @@ -47,7 +47,7 @@ jobs: - uses: ros-tooling/setup-ros@v0.7 with: required-ros-distributions: jazzy - - uses: pantsbuild/actions/init-pants@v5-scie-pants + - uses: pantsbuild/actions/init-pants@v6-scie-pants with: pants-python-version: ${{ matrix.python-version }} gha-cache-key: cache0-py${{ matrix.python-version }} @@ -62,19 +62,23 @@ jobs: sudo apt update sudo apt install jq cargo sudo ./build-support/install_ur_dependencies.sh + - name: Test int + run: | + source /opt/ros/jazzy/setup.bash + pants test --debug src/python/arcor2_ur/tests/test_interaction.py -- -s -vv - name: Lint run: | pants --changed-since=origin/master lint - name: Typecheck run: | - pants check --changed-since=origin/master --changed-dependees=transitive + pants check --changed-since=origin/master --changed-dependents=transitive - name: Test run: | source /opt/ros/jazzy/setup.bash - pants --changed-since=origin/master --changed-dependees=transitive test + pants --changed-since=origin/master --changed-dependents=transitive test - name: Build Docker images run: | # filter out non-essential docker images (there was a problem with full storage on github) - pants filter --target-type=docker_image --changed-since=origin/master --changed-dependees=transitive | grep -v arcor2_3d_mouse | grep -v arcor2_fanuc arcor2_fanuc_upload_object_types | xargs pants package + pants filter --target-type=docker_image --changed-since=origin/master --changed-dependents=transitive | grep -v arcor2_3d_mouse | grep -v arcor2_fanuc arcor2_fanuc_upload_object_types | xargs pants package - name: Build Python packages run: | pants filter --target-type=python_distribution :: | xargs pants package diff --git a/3rdparty/BUILD b/3rdparty/BUILD index 819832002..40c4fa7d2 100644 --- a/3rdparty/BUILD +++ b/3rdparty/BUILD @@ -35,6 +35,12 @@ python_requirements( resolve="flake8", ) +python_requirements( + name="black", + source="black-requirements.txt", + resolve="black", +) + python_requirements( name="setuptools", source="setuptools-requirements.txt", diff --git a/3rdparty/black-requirements.txt b/3rdparty/black-requirements.txt new file mode 100644 index 000000000..cc1936408 --- /dev/null +++ b/3rdparty/black-requirements.txt @@ -0,0 +1,3 @@ +black==24.10.0 +typing-extensions==4.12.2 +tomli==2.2.1 \ No newline at end of file diff --git a/3rdparty/black_lockfile.txt b/3rdparty/black_lockfile.txt index 09e9379c2..32d6b0328 100644 --- a/3rdparty/black_lockfile.txt +++ b/3rdparty/black_lockfile.txt @@ -1,16 +1,17 @@ // This lockfile was autogenerated by Pants. To regenerate, run: // -// ./pants generate-lockfiles --resolve=black +// pants generate-lockfiles --resolve=black // // --- BEGIN PANTS LOCKFILE METADATA: DO NOT EDIT OR REMOVE --- // { // "version": 3, // "valid_for_interpreter_constraints": [ -// "CPython==3.10.*" +// "CPython<3.13,>=3.12" // ], // "generated_with_requirements": [ -// "black==23.1.0", -// "typing-extensions>=3.10.0.0; python_version < \"3.10\"" +// "black==24.10.0", +// "tomli==2.2.1", +// "typing-extensions==4.12.2" // ], // "manylinux": "manylinux2014", // "requirement_constraints": [], @@ -25,6 +26,7 @@ "allow_wheels": true, "build_isolation": true, "constraints": [], + "excluded": [], "locked_resolves": [ { "locked_requirements": [ @@ -32,38 +34,33 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32", - "url": "https://files.pythonhosted.org/packages/18/99/bb1be0ff3a7e912679ad234a3c4884fa7689dfcc4eae85bddb6c04feaa62/black-23.1.0-py3-none-any.whl" + "hash": "3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d", + "url": "https://files.pythonhosted.org/packages/8d/a7/4b27c50537ebca8bec139b872861f9d2bf501c5ec51fcf897cb924d9e264/black-24.10.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac", - "url": "https://files.pythonhosted.org/packages/15/11/533355217b1cc4a6df3263048060c1527f733d4720e158de2085293112bb/black-23.1.0.tar.gz" + "hash": "d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65", + "url": "https://files.pythonhosted.org/packages/4c/ea/a77bab4cf1887f4b2e0bce5516ea0b3ff7d04ba96af21d65024629afedb6/black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26", - "url": "https://files.pythonhosted.org/packages/3e/c0/abc7031d670d211e4e2a063910d587dfcb62ce469631e779b23b66653442/black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl" + "hash": "14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f", + "url": "https://files.pythonhosted.org/packages/4e/3e/443ef8bc1fbda78e61f79157f303893f3fddf19ca3c8989b163eb3469a12/black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl" }, { "algorithm": "sha256", - "hash": "e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104", - "url": "https://files.pythonhosted.org/packages/be/f9/11e401323cd5b4e53d138fc880564765466a86acd2d4b50d7c8cdd048c18/black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3", + "url": "https://files.pythonhosted.org/packages/90/04/bf74c71f592bcd761610bbf67e23e6a3cff824780761f536512437f1e655/black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b", - "url": "https://files.pythonhosted.org/packages/cf/fe/dda4b7eedb9d4dc46e306b814f7838cd9026907fdc889f75eb9f6d47d414/black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221", - "url": "https://files.pythonhosted.org/packages/d0/cb/0a38ffdafbb4b3f337adaf1b79aeaf4b8a21ed18835acad6349e46c78c80/black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl" + "hash": "846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875", + "url": "https://files.pythonhosted.org/packages/d8/0d/cc2fb42b8c50d80143221515dd7e4766995bd07c56c9a3ed30baf080b6dc/black-24.10.0.tar.gz" } ], "project_name": "black", "requires_dists": [ - "aiohttp>=3.7.4; extra == \"d\"", + "aiohttp>=3.10; extra == \"d\"", "click>=8.0.0", "colorama>=0.4.3; extra == \"colorama\"", "ipython>=7.8.0; extra == \"jupyter\"", @@ -73,24 +70,23 @@ "platformdirs>=2", "tokenize-rt>=3.2.0; extra == \"jupyter\"", "tomli>=1.1.0; python_version < \"3.11\"", - "typed-ast>=1.4.2; python_version < \"3.8\" and implementation_name == \"cpython\"", - "typing-extensions>=3.10.0.0; python_version < \"3.10\"", + "typing-extensions>=4.0.1; python_version < \"3.11\"", "uvloop>=0.15.2; extra == \"uvloop\"" ], - "requires_python": ">=3.7", - "version": "23.1.0" + "requires_python": ">=3.9", + "version": "24.10.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48", - "url": "https://files.pythonhosted.org/packages/c2/f1/df59e28c642d583f7dacffb1e0965d0e00b218e0186d7858ac5233dce840/click-8.1.3-py3-none-any.whl" + "hash": "63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", + "url": "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "url": "https://files.pythonhosted.org/packages/59/87/84326af34517fca8c58418d148f2403df25303e02736832403587318e9e8/click-8.1.3.tar.gz" + "hash": "ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", + "url": "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz" } ], "project_name": "click", @@ -99,7 +95,7 @@ "importlib-metadata; python_version < \"3.8\"" ], "requires_python": ">=3.7", - "version": "8.1.3" + "version": "8.1.8" }, { "artifacts": [ @@ -123,99 +119,161 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2", - "url": "https://files.pythonhosted.org/packages/ed/35/a31aed2993e398f6b09a790a181a7927eb14610ee8bbf02dc14d31677f1c/packaging-23.0-py3-none-any.whl" + "hash": "09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", + "url": "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97", - "url": "https://files.pythonhosted.org/packages/47/d5/aca8ff6f49aa5565df1c826e7bf5e85a6df852ee063600c1efa5b932968c/packaging-23.0.tar.gz" + "hash": "c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", + "url": "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz" } ], "project_name": "packaging", "requires_dists": [], - "requires_python": ">=3.7", - "version": "23.0" + "requires_python": ">=3.8", + "version": "24.2" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293", - "url": "https://files.pythonhosted.org/packages/be/c8/551a803a6ebb174ec1c124e68b449b98a0961f0b737def601e3c1fbb4cfd/pathspec-0.11.1-py3-none-any.whl" + "hash": "a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", + "url": "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", - "url": "https://files.pythonhosted.org/packages/95/60/d93628975242cc515ab2b8f5b2fc831d8be2eff32f5a1be4776d49305d13/pathspec-0.11.1.tar.gz" + "hash": "a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", + "url": "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz" } ], "project_name": "pathspec", "requires_dists": [], - "requires_python": ">=3.7", - "version": "0.11.1" + "requires_python": ">=3.8", + "version": "0.12.1" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e", - "url": "https://files.pythonhosted.org/packages/b2/f3/4fb5fae710fc9f22a42cd90dc0547da18ec83e2e139294ab94f04c449cf5/platformdirs-3.2.0-py3-none-any.whl" + "hash": "73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", + "url": "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08", - "url": "https://files.pythonhosted.org/packages/15/04/3f882b46b454ab374ea75425c6f931e499150ec1385a73e55b3f45af615a/platformdirs-3.2.0.tar.gz" + "hash": "357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", + "url": "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz" } ], "project_name": "platformdirs", "requires_dists": [ "appdirs==1.4.4; extra == \"test\"", "covdefaults>=2.3; extra == \"test\"", - "furo>=2022.12.7; extra == \"docs\"", - "proselint>=0.13; extra == \"docs\"", - "pytest-cov>=4; extra == \"test\"", - "pytest-mock>=3.10; extra == \"test\"", - "pytest>=7.2.2; extra == \"test\"", - "sphinx-autodoc-typehints!=1.23.4,>=1.22; extra == \"docs\"", - "sphinx>=6.1.3; extra == \"docs\"", - "typing-extensions>=4.5; python_version < \"3.8\"" + "furo>=2024.8.6; extra == \"docs\"", + "mypy>=1.11.2; extra == \"type\"", + "proselint>=0.14; extra == \"docs\"", + "pytest-cov>=5; extra == \"test\"", + "pytest-mock>=3.14; extra == \"test\"", + "pytest>=8.3.2; extra == \"test\"", + "sphinx-autodoc-typehints>=2.4; extra == \"docs\"", + "sphinx>=8.0.2; extra == \"docs\"" ], - "requires_python": ">=3.7", - "version": "3.2.0" + "requires_python": ">=3.8", + "version": "4.3.6" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl" + "hash": "cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", + "url": "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl" + }, + { + "algorithm": "sha256", + "hash": "8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", + "url": "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl" + }, + { + "algorithm": "sha256", + "hash": "cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", + "url": "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz" + }, + { + "algorithm": "sha256", + "hash": "4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", + "url": "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", + "url": "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", + "url": "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f", - "url": "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz" + "hash": "400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", + "url": "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", + "url": "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", + "url": "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", + "url": "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" } ], "project_name": "tomli", "requires_dists": [], - "requires_python": ">=3.7", - "version": "2.0.1" + "requires_python": ">=3.8", + "version": "2.2.1" + }, + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", + "url": "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl" + }, + { + "algorithm": "sha256", + "hash": "1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", + "url": "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz" + } + ], + "project_name": "typing-extensions", + "requires_dists": [], + "requires_python": ">=3.8", + "version": "4.12.2" } ], "platform_tag": null } ], + "only_builds": [], + "only_wheels": [], + "overridden": [], "path_mappings": {}, - "pex_version": "2.1.126", - "pip_version": "20.3.4-patched", + "pex_version": "2.16.2", + "pip_version": "24.0", "prefer_older_binary": false, "requirements": [ - "black==23.1.0", - "typing-extensions>=3.10.0.0; python_version < \"3.10\"" + "black==24.10.0", + "tomli==2.2.1", + "typing-extensions==4.12.2" ], "requires_python": [ - "==3.10.*" + "<3.13,>=3.12" ], "resolver_version": "pip-2020-resolver", "style": "universal", diff --git a/3rdparty/constraints.txt b/3rdparty/constraints.txt index 2948905d6..9e6ed1653 100644 --- a/3rdparty/constraints.txt +++ b/3rdparty/constraints.txt @@ -6,7 +6,7 @@ // { // "version": 3, // "valid_for_interpreter_constraints": [ -// "CPython<3.13,>=3.11" +// "CPython<3.13,>=3.12" // ], // "generated_with_requirements": [ // "Cython~=3.0.11", @@ -16,15 +16,15 @@ // "aiofiles~=24.1.0", // "aiologger~=0.7.0", // "aiorun~=2024.8.1", -// "apispec-webframeworks~=1.1.0", -// "apispec[yaml]~=6.6.1", +// "apispec-webframeworks~=1.2.0", +// "apispec[yaml]~=6.8.1", // "autopep8~=2.3.1", -// "ciso8601~=2.3.1", -// "colorlog~=6.8.2", +// "ciso8601~=2.3.2", +// "colorlog~=6.9.0", // "dataclasses-jsonschema[apispec,fast-dateparsing,fast-validation]~=2.16.0", // "easyhid~=0.0.10", // "fanucpy~=0.1.14", -// "fastuuid~=0.9.3", +// "fastuuid~=0.11.0", // "flask-swagger-ui~=4.11.1", // "flask_cors~=5.0.0", // "gTTS~=2.5.3", @@ -32,40 +32,40 @@ // "hidapi~=0.14.0", // "lark==1.2.2", // "lru-dict~=1.3.0", -// "numpy-quaternion[numba,scipy]~=2023.0.4", +// "numpy-quaternion[numba,scipy]~=2024.0.3", // "numpy>=1.26.4", -// "open3d==0.18.0", +// "open3d==0.19.0", // "openapi-spec-validator~=0.7.1", // "opencv-contrib-python~=4.10.0.84", // "opencv-stubs[opencv-contrib]==0.0.10", -// "orjson~=3.10.7", -// "packaging~=24.1", +// "orjson~=3.10.13", +// "packaging~=24.2", // "pydub-stubs==0.25.1.1", // "pydub~=0.25.1", // "pyhumps==3.8.0", -// "pymodbus~=3.7.4", +// "pymodbus~=3.8.3", // "pyserial~=3.5", // "pyspacemouse~=1.1.4", -// "pytest-asyncio~=0.24.0", -// "pytest-randomly~=3.15.0", +// "pytest-asyncio~=0.25.1", +// "pytest-randomly~=3.16.0", // "pytest-repeat~=0.9.3", -// "pytest~=8.3.3", +// "pytest~=8.3.4", // "python-dateutil~=2.9.0.post0", // "requests~=2.32.3", -// "setuptools~=70.0.0", +// "setuptools~=75.7.0", // "sqlitedict~=2.1.0", -// "types-PyYAML==6.0.12.20240808", -// "types-aiofiles==24.1.0.20240626", +// "types-PyYAML==6.0.12.20241230", +// "types-aiofiles==24.1.0.20241221", // "types-orjson==3.6.2", // "types-playsound~=1.3.1.3", -// "types-python-dateutil==2.9.0.20240906", -// "types-requests==2.32.0.20240907", -// "types-setuptools==74.1.0.20240907", +// "types-python-dateutil==2.9.0.20241206", +// "types-requests==2.32.0.20241016", +// "types-setuptools==75.6.0.20241223", // "types_flask_cors~=5.0.0.20240902", // "typing-inspect~=0.9.0", // "websocket-client~=1.8.0", -// "websockets~=13.0.1", -// "werkzeug~=3.0.4" +// "websockets~=14.1", +// "werkzeug~=3.1.3" // ], // "manylinux": "manylinux2014", // "requirement_constraints": [], @@ -80,6 +80,7 @@ "allow_wheels": true, "build_isolation": true, "constraints": [], + "excluded": [], "locked_resolves": [ { "locked_requirements": [ @@ -159,13 +160,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "6460315cb38ac6a2ff42d9e2b8dc0435c37d4428d3abeda96ff97b5dc8eb6b94", - "url": "https://files.pythonhosted.org/packages/ec/0f/1d0aabf69a9a1bdf8ed1461a2ec7b4036ff4da501f6db2e37634b01860e3/apispec-6.6.1-py3-none-any.whl" + "hash": "eacba00df745efc9adb2a45cf992300e87938582077e101fb26b78ecf4320beb", + "url": "https://files.pythonhosted.org/packages/44/03/74947557f3b297cbf3dfc4689079aaf86aae02da69fc0c6a813fa5521556/apispec-6.8.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "f5caa47cee75fe03b9c50b5594048b4c052eeca2c212e0dac12dbb6175d9a659", - "url": "https://files.pythonhosted.org/packages/ab/5b/5d94e1ec6a8e487c026b2a7518dfb7ea90c4c82db48de33c227b7c9141fb/apispec-6.6.1.tar.gz" + "hash": "f4916cbb7be156963b18f5929a0e42bd2349135834b680a81b12432bcfaa9a39", + "url": "https://files.pythonhosted.org/packages/74/38/62499ad75cf085f5268458c09ae97007082ed85aec1a9cd9e38f7685fbb0/apispec-6.8.1.tar.gz" } ], "project_name": "apispec", @@ -177,28 +178,28 @@ "marshmallow>=3.18.0; extra == \"marshmallow\"", "openapi-spec-validator==0.7.1; extra == \"tests\"", "packaging>=21.3", - "pre-commit~=3.5; extra == \"dev\"", + "pre-commit<5.0,>=3.5; extra == \"dev\"", "pytest; extra == \"tests\"", - "pyyaml==6.0.1; extra == \"docs\"", - "sphinx-issues==4.1.0; extra == \"docs\"", - "sphinx-rtd-theme==2.0.0; extra == \"docs\"", - "sphinx==7.3.7; extra == \"docs\"", + "pyyaml==6.0.2; extra == \"docs\"", + "sphinx-issues==5.0.0; extra == \"docs\"", + "sphinx-rtd-theme==3.0.2; extra == \"docs\"", + "sphinx==8.1.3; extra == \"docs\"", "tox; extra == \"dev\"" ], - "requires_python": ">=3.8", - "version": "6.6.1" + "requires_python": ">=3.9", + "version": "6.8.1" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "93e7921426dbafe311d0e9dd912b6dd2e09222e153446a1a73f4c06164107582", - "url": "https://files.pythonhosted.org/packages/4e/b8/e7249cfda448138a500a4c59b8485089a217161b34d71742e031d5310041/apispec_webframeworks-1.1.0-py3-none-any.whl" + "hash": "68aea0d1eeb3caeeacc7d6772a48c59c8b60b1a88d0bd51529d94597ccf33116", + "url": "https://files.pythonhosted.org/packages/71/2c/5aa396a3bca60de3b3f419ea770b8087d52aac5221bf15ddcd9b48d61d3c/apispec_webframeworks-1.2.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "b095df4afb3d773bdf60f0a599b808fd2ca316a8e452f8ce23b10b4cb0e717bf", - "url": "https://files.pythonhosted.org/packages/40/4e/a0f2e5220c8273507d31c879366a2022f328e40148ca9b4e7cd3027ff488/apispec_webframeworks-1.1.0.tar.gz" + "hash": "5689288c266a2713c2f516eacc14ea2fec9b21f193edc8f659c770342b97fd81", + "url": "https://files.pythonhosted.org/packages/f9/1f/8d98328269a2507b6cfe37e8a70725d168626615865dc7aec30e8720c495/apispec_webframeworks-1.2.0.tar.gz" } ], "project_name": "apispec-webframeworks", @@ -214,45 +215,43 @@ "tox; extra == \"dev\"" ], "requires_python": ">=3.8", - "version": "1.1.0" + "version": "1.2.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", - "url": "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl" + "hash": "e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", + "url": "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", - "url": "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz" + "hash": "0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", + "url": "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz" } ], "project_name": "asttokens", "requires_dists": [ - "astroid<2,>=1; python_version < \"3\" and extra == \"astroid\"", - "astroid<2,>=1; python_version < \"3\" and extra == \"test\"", - "astroid<4,>=2; python_version >= \"3\" and extra == \"astroid\"", - "astroid<4,>=2; python_version >= \"3\" and extra == \"test\"", - "pytest; extra == \"test\"", - "six>=1.12.0", - "typing; python_version < \"3.5\"" + "astroid<4,>=2; extra == \"astroid\"", + "astroid<4,>=2; extra == \"test\"", + "pytest-cov; extra == \"test\"", + "pytest-xdist; extra == \"test\"", + "pytest; extra == \"test\"" ], - "requires_python": null, - "version": "2.4.1" + "requires_python": ">=3.8", + "version": "3.0.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", - "url": "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl" + "hash": "ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", + "url": "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", - "url": "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz" + "hash": "8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", + "url": "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz" } ], "project_name": "attrs", @@ -268,24 +267,23 @@ "hypothesis; extra == \"cov\"", "hypothesis; extra == \"dev\"", "hypothesis; extra == \"tests\"", - "importlib-metadata; python_version < \"3.8\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"benchmark\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"cov\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"dev\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"tests\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"tests-mypy\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"benchmark\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"cov\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"dev\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests-mypy\"", "myst-parser; extra == \"docs\"", - "pre-commit; extra == \"dev\"", + "pre-commit-uv; extra == \"dev\"", "pympler; extra == \"benchmark\"", "pympler; extra == \"cov\"", "pympler; extra == \"dev\"", "pympler; extra == \"tests\"", "pytest-codspeed; extra == \"benchmark\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"benchmark\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"cov\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"dev\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"tests\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"tests-mypy\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"benchmark\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"cov\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"dev\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests-mypy\"", "pytest-xdist[psutil]; extra == \"benchmark\"", "pytest-xdist[psutil]; extra == \"cov\"", "pytest-xdist[psutil]; extra == \"dev\"", @@ -299,8 +297,8 @@ "sphinxcontrib-towncrier; extra == \"docs\"", "towncrier<24.7; extra == \"docs\"" ], - "requires_python": ">=3.7", - "version": "24.2.0" + "requires_python": ">=3.8", + "version": "24.3.0" }, { "artifacts": [ @@ -327,37 +325,37 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01", - "url": "https://files.pythonhosted.org/packages/bb/2a/10164ed1f31196a2f7f3799368a821765c62851ead0e630ab52b8e14b4d0/blinker-1.8.2-py3-none-any.whl" + "hash": "ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", + "url": "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83", - "url": "https://files.pythonhosted.org/packages/1e/57/a6a1721eff09598fb01f3c7cda070c1b6a0f12d63c83236edf79a440abcc/blinker-1.8.2.tar.gz" + "hash": "b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", + "url": "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz" } ], "project_name": "blinker", "requires_dists": [], - "requires_python": ">=3.8", - "version": "1.8.2" + "requires_python": ">=3.9", + "version": "1.9.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", - "url": "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + "hash": "1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", + "url": "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", - "url": "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + "hash": "b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", + "url": "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz" } ], "project_name": "certifi", "requires_dists": [], "requires_python": ">=3.6", - "version": "2024.8.30" + "version": "2024.12.14" }, { "artifacts": [ @@ -371,66 +369,26 @@ "hash": "386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", "url": "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "url": "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" - }, { "algorithm": "sha256", "hash": "da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", "url": "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", - "url": "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" - }, { "algorithm": "sha256", "hash": "d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", "url": "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, - { - "algorithm": "sha256", - "hash": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "url": "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", - "url": "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl" - }, { "algorithm": "sha256", "hash": "805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", "url": "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "url": "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", - "url": "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", - "url": "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl" - }, { "algorithm": "sha256", "hash": "f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", "url": "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, - { - "algorithm": "sha256", - "hash": "f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", - "url": "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" - }, { "algorithm": "sha256", "hash": "b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", @@ -446,20 +404,10 @@ "hash": "733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", "url": "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl" }, - { - "algorithm": "sha256", - "hash": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", - "url": "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" - }, { "algorithm": "sha256", "hash": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", "url": "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "url": "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" } ], "project_name": "cffi", @@ -473,234 +421,134 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", - "url": "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", - "url": "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", - "url": "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", - "url": "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", - "url": "https://files.pythonhosted.org/packages/3b/a0/a68980ab8a1f45a36d9745d35049c1af57d27255eff8c907e3add84cf68f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", - "url": "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", - "url": "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl" + "hash": "d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", + "url": "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", - "url": "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl" + "hash": "73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", + "url": "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl" }, { "algorithm": "sha256", - "hash": "ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", - "url": "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + "hash": "e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", + "url": "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", - "url": "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl" + "hash": "44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", + "url": "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz" }, { "algorithm": "sha256", - "hash": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", - "url": "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + "hash": "bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", + "url": "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", - "url": "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + "hash": "ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", + "url": "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" }, { "algorithm": "sha256", - "hash": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", - "url": "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + "hash": "0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", + "url": "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl" }, { "algorithm": "sha256", - "hash": "84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", - "url": "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl" + "hash": "804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", + "url": "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", - "url": "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", + "url": "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl" }, { "algorithm": "sha256", - "hash": "07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", - "url": "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", + "url": "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", - "url": "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl" + "hash": "c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", + "url": "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", - "url": "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", + "url": "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", - "url": "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", - "url": "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", - "url": "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", - "url": "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", - "url": "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", - "url": "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", - "url": "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", - "url": "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", - "url": "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", - "url": "https://files.pythonhosted.org/packages/fb/9d/9c13753a5a6e0db4a0a6edb1cef7aee39859177b64e1a1e748a6e3ba62c2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl" + "hash": "2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", + "url": "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" } ], "project_name": "charset-normalizer", "requires_dists": [], - "requires_python": ">=3.7.0", - "version": "3.4.0" + "requires_python": ">=3.7", + "version": "3.4.1" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "87721de54e008fb1c4c3978553b05a9c417aa25b76ddf5702d6f7e8d9b109288", - "url": "https://files.pythonhosted.org/packages/76/ef/5ef06ccb6f6c023573634119f93df237687e3f4263e2f307b51a7208d103/ciso8601-2.3.1-cp312-cp312-musllinux_1_1_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "121d27c55f4455eaa27ba3bd602beca915df9a352f235e935636a4660321070e", - "url": "https://files.pythonhosted.org/packages/18/db/237d57669edb78b8262bf78d9cc9638355ec96a49216d12238babfa46861/ciso8601-2.3.1-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "473288cd63efe6a2cf3f4b5f90394e53095358ccb13d6128f87a2da85d0f389b", - "url": "https://files.pythonhosted.org/packages/40/36/8260b1b1b63051f90facb659913c5852cd95a17cfd3e7dc243cef4e190a0/ciso8601-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "0d980a2a88030d4d8b2434623c250866a75b4979d289eba69bec445c51ace99f", - "url": "https://files.pythonhosted.org/packages/50/1c/d1cb5b2d2173abfc4d5a068981acddff763cce318e896ec87c140412c72d/ciso8601-2.3.1-cp312-cp312-musllinux_1_1_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "364702e338212b6c1a8643d9399ada21560cf132f363853473560625cb4207f1", - "url": "https://files.pythonhosted.org/packages/57/1a/3de6285bb4b743edc2af3e19253d72076a2911e985b89fe67a730a06d9ea/ciso8601-2.3.1-cp311-cp311-musllinux_1_1_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "b26935687ef1837b56997d8c61f1d789e698be58b261410e629eda9c89812141", - "url": "https://files.pythonhosted.org/packages/5b/bd/fef5524974e3ba376e16df35e4197152edffdf7ac9d5d99bc173a9fcf256/ciso8601-2.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "7a8f96f91bdeabee7ebca2c6e48185bea45e195f406ff748c87a3c9ecefb25cc", + "url": "https://files.pythonhosted.org/packages/b2/3c/cd79c9305480cc9bf8dce286bd7ec2035a3d140b3f3ae0b1232087a65240/ciso8601-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "8acb45545e6a654310c6ef788aacb2d73686646c414ceacdd9f5f78a83165af5", - "url": "https://files.pythonhosted.org/packages/7b/52/764356d60dcd743d2352a0c24d593ce6df330a7012f8c2ade00e580031df/ciso8601-2.3.1-cp311-cp311-musllinux_1_1_x86_64.whl" + "hash": "e825cb5ecd232775a94ef3c456ab19752ee8e66eaeb20562ea45472eaa8614ec", + "url": "https://files.pythonhosted.org/packages/05/ae/de5f920ebf5cdb2ef28237bdb48ac9ea980d794e16f1fbedffc430064208/ciso8601-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "f39bb5936debf21c52e5d52b89f26857c303da80c43a72883946096a6ef5e561", - "url": "https://files.pythonhosted.org/packages/85/3d/f6496a260ba6e58135fb3dd1108799f6dd9cadf634372e020bfbf0d27fea/ciso8601-2.3.1-cp312-cp312-macosx_10_9_universal2.whl" + "hash": "ec1616969aa46c51310b196022e5d3926f8d3fa52b80ec17f6b4133623bd5434", + "url": "https://files.pythonhosted.org/packages/09/e9/d83711081c997540aee59ad2f49d81f01d33e8551d766b0ebde346f605af/ciso8601-2.3.2.tar.gz" }, { "algorithm": "sha256", - "hash": "3212c7ffe5d8080270548b5f2692ffd2039683b6628a8d2ad456122cc5793c4c", - "url": "https://files.pythonhosted.org/packages/ac/bc/cf42c1b0042f91c90a6b00244f63b6fb137af15e43e29f07bb72cf955be8/ciso8601-2.3.1.tar.gz" + "hash": "c117c415c43aa3db68ee16a2446cb85c5e88459650421d773f6f6444ce5e5819", + "url": "https://files.pythonhosted.org/packages/22/da/c82e665c627836be4d7d0a8ed38518f9833124a6fd85735881cac72427b8/ciso8601-2.3.2-cp312-cp312-macosx_11_0_universal2.whl" }, { "algorithm": "sha256", - "hash": "ef44cb4dc83f37019a356c7a72692cbe17072456f4879ca6bc0339f67eee5d00", - "url": "https://files.pythonhosted.org/packages/ae/25/957d686b0b3640f7a80073f396817dc149e03e3e72665f472deefce04719/ciso8601-2.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "ce5f76297b6138dc5c085d4c5a0a631afded99f250233fe583dc365f67fe8a8d", + "url": "https://files.pythonhosted.org/packages/3c/6a/822b178b6c473533e5023aab6447b05d1683f95c3210eda5680f9262c93c/ciso8601-2.3.2-cp312-cp312-macosx_11_0_x86_64.whl" }, { "algorithm": "sha256", - "hash": "9f25647803c9a5aaaed130c53bbec7ea06a4f95ba5c7016f59e444b4ef7ac39e", - "url": "https://files.pythonhosted.org/packages/b1/b7/b03313a9ff86a5bec68f2ceece41abd0834fd92c91c7ba4b9a95ea032f35/ciso8601-2.3.1-cp311-cp311-macosx_10_9_universal2.whl" + "hash": "5308a14ac72898f91332ccfded2f18a6c558ccd184ccff84c4fb36c7e4c2a0e6", + "url": "https://files.pythonhosted.org/packages/96/01/b12f356afaa6dfc339c4b964f01c7b78f7d844dfe087cbbc9c68a5f048c0/ciso8601-2.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "21cf83ca945bb26ecd95364ae2c9ed0276378e5fe35ce1b64d4c6d5b33038ea3", - "url": "https://files.pythonhosted.org/packages/c4/a9/24ffa848a5878a50009d6177826c36b60e2e8807e4d54ee94817e790897b/ciso8601-2.3.1-cp312-cp312-macosx_10_9_x86_64.whl" + "hash": "75870a1e496a17e9e8d2ac90125600e1bafe51679d2836b2f6cb66908fef7ad6", + "url": "https://files.pythonhosted.org/packages/d6/fc/e852e664bb90bf1112e17778512d6cbc5fa5f49b7c22969e4ee131f13d06/ciso8601-2.3.2-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "013410263cba46748d2de29e9894341ae41223356cde7970478c32bd0984d10c", - "url": "https://files.pythonhosted.org/packages/ea/74/77fd6e67a2a3489a1ac449570142e2f4137289be25027e235d4688470d56/ciso8601-2.3.1-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "8e3205e4cfd63100f454ea67100c7c6123af32da0022bdc6e81058e95476a8ad", + "url": "https://files.pythonhosted.org/packages/de/c3/63b89c7ec2a4f9bcbdeb3401485992d13eeb4da943accef58f0820c62552/ciso8601-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" } ], "project_name": "ciso8601", "requires_dists": [], "requires_python": null, - "version": "2.3.1" + "version": "2.3.2" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", - "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl" + "hash": "63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", + "url": "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", - "url": "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz" + "hash": "ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", + "url": "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz" } ], "project_name": "click", @@ -709,19 +557,19 @@ "importlib-metadata; python_version < \"3.8\"" ], "requires_python": ">=3.7", - "version": "8.1.7" + "version": "8.1.8" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33", - "url": "https://files.pythonhosted.org/packages/f3/18/3e867ab37a24fdf073c1617b9c7830e06ec270b1ea4694a624038fc40a03/colorlog-6.8.2-py3-none-any.whl" + "hash": "5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff", + "url": "https://files.pythonhosted.org/packages/e3/51/9b208e85196941db2f0654ad0357ca6388ab3ed67efdbfc799f35d1f83aa/colorlog-6.9.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44", - "url": "https://files.pythonhosted.org/packages/db/38/2992ff192eaa7dd5a793f8b6570d6bbe887c4fbbf7e72702eb0a693a01c8/colorlog-6.8.2.tar.gz" + "hash": "bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2", + "url": "https://files.pythonhosted.org/packages/d3/7a/359f4d5df2353f26172b3cc39ea32daa39af8de522205f512f458923e677/colorlog-6.9.0.tar.gz" } ], "project_name": "colorlog", @@ -734,7 +582,7 @@ "types-colorama; extra == \"development\"" ], "requires_python": ">=3.6", - "version": "6.8.2" + "version": "6.9.0" }, { "artifacts": [ @@ -784,88 +632,48 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35", - "url": "https://files.pythonhosted.org/packages/2a/25/632eab595e3140adfa92f1322bf8915f68c932bac468e89eae9974cf1c00/contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d", - "url": "https://files.pythonhosted.org/packages/03/33/003065374f38894cdf1040cef474ad0546368eea7e3a51d48b8a423961f8/contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49", - "url": "https://files.pythonhosted.org/packages/05/46/9256dd162ea52790c127cb58cfc3b9e3413a6e3478917d1f811d420772ec/contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd", - "url": "https://files.pythonhosted.org/packages/0f/96/fdb2552a172942d888915f3a6663812e9bc3d359d53dafd4289a0fb462f0/contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c", - "url": "https://files.pythonhosted.org/packages/42/80/e637326e85e4105a802e42959f56cff2cd39a6b5ef68d5d9aee3ea5f0e4c/contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1", - "url": "https://files.pythonhosted.org/packages/45/cf/2c2fc6bb5874158277b4faf136847f0689e1b1a1f640a36d76d52e78907c/contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639", - "url": "https://files.pythonhosted.org/packages/51/3d/aa0fe6ae67e3ef9f178389e4caaaa68daf2f9024092aa3c6032e3d174670/contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c", - "url": "https://files.pythonhosted.org/packages/56/c3/c85a7e3e0cab635575d3b657f9535443a6f5d20fac1a1911eaa4bbe1aceb/contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + "hash": "61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d", + "url": "https://files.pythonhosted.org/packages/3a/8a/deb5e11dc7d9cc8f0f9c8b29d4f062203f3af230ba83c30a6b161a6effc9/contourpy-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09", - "url": "https://files.pythonhosted.org/packages/6e/be/524e377567defac0e21a46e2a529652d165fed130a0d8a863219303cee18/contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", + "url": "https://files.pythonhosted.org/packages/25/c2/fc7193cc5383637ff390a712e88e4ded0452c9fbcf84abe3de5ea3df1866/contourpy-1.3.1.tar.gz" }, { "algorithm": "sha256", - "hash": "e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb", - "url": "https://files.pythonhosted.org/packages/7c/3b/8cbd6416ca1bbc0202b50f9c13b2e0b922b64be888f9d9ee88e6cfabfb51/contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl" + "hash": "0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509", + "url": "https://files.pythonhosted.org/packages/37/6b/175f60227d3e7f5f1549fcb374592be311293132207e451c3d7c654c25fb/contourpy-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad", - "url": "https://files.pythonhosted.org/packages/b3/1f/9375917786cb39270b0ee6634536c0e22abf225825602688990d8f5c6c19/contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl" + "hash": "1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b", + "url": "https://files.pythonhosted.org/packages/3c/0f/37d2c84a900cd8eb54e105f4fa9aebd275e14e266736778bb5dccbf3bbbb/contourpy-1.3.1-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f", - "url": "https://files.pythonhosted.org/packages/c9/92/8e0bbfe6b70c0e2d3d81272b58c98ac69ff1a4329f18c73bd64824d8b12e/contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl" + "hash": "47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80", + "url": "https://files.pythonhosted.org/packages/48/b2/011415f5e3f0a50b1e285a0bf78eb5d92a4df000553570f0851b6e309076/contourpy-1.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081", - "url": "https://files.pythonhosted.org/packages/ca/c2/1a612e475492e07f11c8e267ea5ec1ce0d89971be496c195e27afa97e14a/contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + "hash": "805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc", + "url": "https://files.pythonhosted.org/packages/6b/6a/7833cfae2c1e63d1d8875a50fd23371394f540ce809d7383550681a1fa64/contourpy-1.3.1-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06", - "url": "https://files.pythonhosted.org/packages/dd/8d/20f7a211a7be966a53f474bc90b1a8202e9844b3f1ef85f3ae45a77151ee/contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" + "hash": "ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454", + "url": "https://files.pythonhosted.org/packages/7f/b3/7859efce66eaca5c14ba7619791b084ed02d868d76b928ff56890d2d059d/contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66", - "url": "https://files.pythonhosted.org/packages/e1/5d/3056c167fa4486900dfbd7e26a2fdc2338dc58eee36d490a0ed3ddda5ded/contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec", + "url": "https://files.pythonhosted.org/packages/84/7d/ef19b1db0f45b151ac78c65127235239a8cf21a59d1ce8507ce03e89a30b/contourpy-1.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, { "algorithm": "sha256", - "hash": "da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6", - "url": "https://files.pythonhosted.org/packages/e3/04/33351c5d5108460a8ce6d512307690b023f0cfcad5899499f5c83b9d63b1/contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4", - "url": "https://files.pythonhosted.org/packages/f5/f6/31a8f28b4a2a4fa0e01085e542f3081ab0588eff8e589d39d775172c9792/contourpy-1.3.0.tar.gz" + "hash": "efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9", + "url": "https://files.pythonhosted.org/packages/ba/99/6794142b90b853a9155316c8f470d2e4821fe6f086b03e372aca848227dd/contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" } ], "project_name": "contourpy", @@ -889,8 +697,8 @@ "types-Pillow; extra == \"mypy\"", "wurlitzer; extra == \"test-no-images\"" ], - "requires_python": ">=3.9", - "version": "1.3.0" + "requires_python": ">=3.10", + "version": "1.3.1" }, { "artifacts": [ @@ -925,26 +733,11 @@ "hash": "0e25f6425ad4a700d7f77cd468da9161e63658837d1bc34861a9861a4ef6346d", "url": "https://files.pythonhosted.org/packages/43/39/bdbec9142bc46605b54d674bf158a78b191c2b75be527c6dcf3e6dfe90b8/Cython-3.0.11-py2.py3-none-any.whl" }, - { - "algorithm": "sha256", - "hash": "af91497dc098718e634d6ec8f91b182aea6bb3690f333fc9a7777bc70abe8810", - "url": "https://files.pythonhosted.org/packages/09/c9/537108d0980beffff55336baaf8b34162ad0f3f33ededcb5db07069bc8ef/Cython-3.0.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "d566a4e09b8979be8ab9f843bac0dd216c81f5e5f45661a9b25cd162ed80508c", - "url": "https://files.pythonhosted.org/packages/4a/84/a3c40f2c0439d425daa5aa4e3a6fdbbb41341a14a6fd97f94906f528d9a4/Cython-3.0.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" - }, { "algorithm": "sha256", "hash": "11996c40c32abf843ba652a6d53cb15944c88d91f91fc4e6f0028f5df8a8f8a1", "url": "https://files.pythonhosted.org/packages/58/50/fbb23239efe2183e4eaf76689270d6f5b3bbcf9be9ad1eb97cc34349e6fc/Cython-3.0.11-cp312-cp312-macosx_10_9_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "46aec30f217bdf096175a1a639203d44ac73a36fe7fa3dd06bd012e8f39eca0f", - "url": "https://files.pythonhosted.org/packages/6d/93/bdb61e0254ed8f1d21a14088a473584ecb1963d68dba5682158aa45c70ef/Cython-3.0.11-cp311-cp311-musllinux_1_2_aarch64.whl" - }, { "algorithm": "sha256", "hash": "7146dd2af8682b4ca61331851e6aebce9fe5158e75300343f80c07ca80b1faff", @@ -955,11 +748,6 @@ "hash": "63f2c892e9f9c1698ecfee78205541623eb31cd3a1b682668be7ac12de94aa8e", "url": "https://files.pythonhosted.org/packages/87/e5/76379edb21fd5bb9e2aaa1d305492bc35bba96dfb51f5d96867d9863b6df/Cython-3.0.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "3999fb52d3328a6a5e8c63122b0a8bd110dfcdb98dda585a3def1426b991cba7", - "url": "https://files.pythonhosted.org/packages/93/03/e330b241ad8aa12bb9d98b58fb76d4eb7dcbe747479aab5c29fce937b9e7/Cython-3.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, { "algorithm": "sha256", "hash": "8b14c24f1dc4c4c9d997cca8d1b7fb01187a218aab932328247dcf5694a10102", @@ -979,16 +767,6 @@ "algorithm": "sha256", "hash": "780f89c95b8aec1e403005b3bf2f0a2afa060b3eba168c86830f079339adad89", "url": "https://files.pythonhosted.org/packages/e5/4a/58d6c208563504a35febff94904bb291b368a8b0f28a5e0593c770967caa/Cython-3.0.11-cp312-cp312-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "ddd1fe25af330f4e003421636746a546474e4ccd8f239f55d2898d80983d20ed", - "url": "https://files.pythonhosted.org/packages/f8/62/0da548144c71176155ff5355c4cc40fb28b9effe22e830b55cec8072bdf2/Cython-3.0.11-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "75ba1c70b6deeaffbac123856b8d35f253da13552207aa969078611c197377e4", - "url": "https://files.pythonhosted.org/packages/f8/73/e55be864199cd674cb3426a052726c205589b1ac66fb0090e7fe793b60b3/Cython-3.0.11-cp311-cp311-macosx_10_9_x86_64.whl" } ], "project_name": "cython", @@ -1000,25 +778,26 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "07c4513bb5f79a4b936847a0b49afc21dbd4b001ff77ea78d4d836043e211a07", - "url": "https://files.pythonhosted.org/packages/3c/ea/227b2108053c7f38c175e884a45daf8cee112719499581be8cc137ecc19d/dash-2.18.1-py3-none-any.whl" + "hash": "a749ae1ea9de3fe7b785353a818ec9b629d39c6b7e02462954203bd1e296fd0e", + "url": "https://files.pythonhosted.org/packages/b8/93/5828bf77b8dc538146ea81c1d9970d235e2f4dfb25f11ac153823c11e669/dash-2.9.3-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "ffdf89690d734f6851ef1cb344222826ffb11ad2214ab9172668bf8aadd75d12", - "url": "https://files.pythonhosted.org/packages/79/95/1a276cad4271a1068fc6193553b2e0f44f29115ee4148cc4d189fd640817/dash-2.18.1.tar.gz" + "hash": "47392f8d6455dc989a697407eb5941f3bad80604df985ab1ac9d4244568ffb34", + "url": "https://files.pythonhosted.org/packages/19/e3/a75cb5b353492ab7f76ff8c4076a1d2047feed060cbbcf51c14e3c713caa/dash-2.9.3.tar.gz" } ], "project_name": "dash", "requires_dists": [ - "Flask<3.1,>=1.0.4", + "Flask>=1.0.4", "PyYAML>=5.4.1; extra == \"dev\"", - "Werkzeug<3.1", "beautifulsoup4>=4.8.2; extra == \"testing\"", - "black==22.3.0; extra == \"ci\"", + "black==21.6b0; python_version < \"3.7\" and extra == \"ci\"", + "black==22.3.0; python_version >= \"3.7\" and extra == \"ci\"", "celery[redis]>=5.1.2; extra == \"celery\"", "coloredlogs>=15.0.1; extra == \"dev\"", - "cryptography; extra == \"testing\"", + "contextvars==2.4; python_version < \"3.7\"", + "cryptography<3.4; python_version < \"3.7\" and extra == \"testing\"", "dash-core-components==2.0.0", "dash-dangerously-set-inner-html; extra == \"ci\"", "dash-flow-example==0.0.5; extra == \"ci\"", @@ -1027,45 +806,45 @@ "dash-testing-stub>=0.0.2; extra == \"testing\"", "diskcache>=5.2.1; extra == \"diskcache\"", "fire>=0.4.0; extra == \"dev\"", - "flake8==7.0.0; extra == \"ci\"", - "flaky==3.8.1; extra == \"ci\"", + "flake8==3.9.2; extra == \"ci\"", + "flaky==3.7.0; extra == \"ci\"", "flask-compress; extra == \"compress\"", "flask-talisman==1.0.0; extra == \"ci\"", - "importlib-metadata", - "jupyterlab<4.0.0; extra == \"ci\"", + "importlib-metadata<5; python_version < \"3.8\" and extra == \"celery\"", + "importlib-metadata==4.8.3; python_version < \"3.7\"", + "isort==4.3.21; python_version < \"3.7\" and extra == \"ci\"", "lxml>=4.6.2; extra == \"testing\"", - "mimesis<=11.1.0; extra == \"ci\"", + "mimesis; extra == \"ci\"", "mock==4.0.3; extra == \"ci\"", "multiprocess>=0.70.12; extra == \"diskcache\"", "multiprocess>=0.70.12; extra == \"testing\"", - "nest-asyncio", - "numpy<=1.26.3; extra == \"ci\"", - "openpyxl; extra == \"ci\"", - "orjson==3.10.3; extra == \"ci\"", - "pandas>=1.4.0; extra == \"ci\"", + "numpy; extra == \"ci\"", + "openpyxl; python_version >= \"3.8\" and extra == \"ci\"", + "orjson==3.5.4; python_version < \"3.7\" and extra == \"ci\"", + "orjson==3.6.7; python_version >= \"3.7\" and extra == \"ci\"", + "pandas==1.1.5; python_version < \"3.8\" and extra == \"ci\"", + "pandas>=1.4.0; python_version >= \"3.8\" and extra == \"ci\"", "percy>=2.0.2; extra == \"testing\"", "plotly>=5.0.0", + "preconditions; extra == \"ci\"", "psutil>=5.8.0; extra == \"diskcache\"", "psutil>=5.8.0; extra == \"testing\"", - "pyarrow; extra == \"ci\"", - "pylint==3.0.3; extra == \"ci\"", + "pyarrow; python_version >= \"3.7\" and extra == \"ci\"", + "pyarrow<3; python_version < \"3.7\" and extra == \"ci\"", + "pylint==2.13.5; extra == \"ci\"", "pytest-mock; extra == \"ci\"", "pytest-rerunfailures; extra == \"ci\"", "pytest-sugar==0.9.6; extra == \"ci\"", "pytest>=6.0.2; extra == \"testing\"", - "pyzmq==25.1.2; extra == \"ci\"", "redis>=3.5.3; extra == \"celery\"", - "requests", "requests[security]>=2.21.0; extra == \"testing\"", - "retrying", "selenium<=4.2.0,>=3.141.0; extra == \"testing\"", - "setuptools", - "typing-extensions>=4.1.1", "waitress>=1.4.4; extra == \"testing\"", - "xlrd>=2.0.1; extra == \"ci\"" + "xlrd<2; python_version < \"3.8\" and extra == \"ci\"", + "xlrd>=2.0.1; python_version >= \"3.8\" and extra == \"ci\"" ], - "requires_python": ">=3.8", - "version": "2.18.1" + "requires_python": ">=3.6", + "version": "2.9.3" }, { "artifacts": [ @@ -1244,13 +1023,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a", - "url": "https://files.pythonhosted.org/packages/6d/ca/086311cdfc017ec964b2436fe0c98c1f4efcb7e4c328956a22456e497655/fastjsonschema-2.20.0-py3-none-any.whl" + "hash": "c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", + "url": "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23", - "url": "https://files.pythonhosted.org/packages/03/3f/3ad5e7be13b4b8b55f4477141885ab2364f65d5f6ad5f7a9daffd634d066/fastjsonschema-2.20.0.tar.gz" + "hash": "794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", + "url": "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz" } ], "project_name": "fastjsonschema", @@ -1265,50 +1044,35 @@ "validictory; extra == \"devel\"" ], "requires_python": null, - "version": "2.20.0" + "version": "2.21.1" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "98a64b7f68d3e69b58959e70f9766216806c9bc76d54d55f91c331843714a87a", - "url": "https://files.pythonhosted.org/packages/e4/98/7f0d010d2ca305c4d6fb707c01a7b0bbf5604363d06494da0acda855ba83/fastuuid-0.9.3-cp312-cp312-manylinux_2_34_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "1f4424990ebba385be3a71c2e5c1c6c1450f4d8595157b95c5f315ad2a1de25f", - "url": "https://files.pythonhosted.org/packages/2f/de/cb803da3b6d2d7617e060b4d6e8166d50132112d56eebcbe370329558b07/fastuuid-0.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "a37f0e753757cc9846e5289509f84b2e0d13af0ebc524af91fd9c736f359634d", - "url": "https://files.pythonhosted.org/packages/47/e3/ea927e3a2166b582caef02e2dfac9209243fc6074f54a114d38ea63b99de/fastuuid-0.9.3-cp312-cp312-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "7032057bcf27ab0a7e1f15bca0cb3231153236374825b62bc113838ddfb99e33", - "url": "https://files.pythonhosted.org/packages/81/ca/e313a256061208bf06eb28a9d58a9bbf36ba07dc36a71bd84aa4f0f9cf3c/fastuuid-0.9.3-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "1133a9ba176ee1eb308611eabc9ffb75e0460c55f0e41e39ea732ba6366cb1ca", + "url": "https://files.pythonhosted.org/packages/57/ec/80b79156a658145c5d5ae5a320499576705be1b89f11dd5f64b52cbb26a8/fastuuid-0.11.0-cp312-cp312-manylinux_2_34_x86_64.whl" }, { "algorithm": "sha256", - "hash": "d15c35ecd8f902ef0dd38e756faafe376dc1918f0d059a5d3eeda59167805e34", - "url": "https://files.pythonhosted.org/packages/85/6d/b03de3075d6bb5e8fdb41269e05db09498941f17864d9e5b8c5135d8fb95/fastuuid-0.9.3-cp311-cp311-manylinux_2_34_x86_64.whl" + "hash": "a50feb84734710f516198d9447b7ecfaa10c269399e5de66e68ea17d199c28c3", + "url": "https://files.pythonhosted.org/packages/5a/11/94186283b59e31154dd24aceb5aaea48f5f325d57af67337c06b85d9d059/fastuuid-0.11.0-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "a5cd1232e66cb785c55f8632941a187637c16f874b97609032539d40981a48b2", - "url": "https://files.pythonhosted.org/packages/a8/e6/02705725e2b96398cead5f5e1488e87805f1dc1b77a0a1d35878cfde7183/fastuuid-0.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "9752e480516f81008ef04f1a54c8d24894eb66c099b6dca7edd8ca356bf0096b", + "url": "https://files.pythonhosted.org/packages/bc/06/95d51ac6b02a16e529ad7a9a04d03ccc3ef674424acc75fcf105917a606e/fastuuid-0.11.0.tar.gz" }, { "algorithm": "sha256", - "hash": "dbfb12283011c431d36235f3dd1cf0ff246ef90c8c57ef2d4a7a0fe39385db17", - "url": "https://files.pythonhosted.org/packages/f0/6b/bcc65820d14556f0d998e24869c981d8e12522ed9013afdf3c077e04239e/fastuuid-0.9.3.tar.gz" + "hash": "9909b2fd931a2f139b830aa63d6f7ffd963ea1504c899e2a4aca1b677ab7f6c7", + "url": "https://files.pythonhosted.org/packages/d1/e1/8843058cb56f52a73bab264b4882231a9d1ef5914493310c9558d747b103/fastuuid-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" } ], "project_name": "fastuuid", "requires_dists": [], "requires_python": ">=3.7", - "version": "0.9.3" + "version": "0.11.0" }, { "artifacts": [ @@ -1381,73 +1145,43 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd", - "url": "https://files.pythonhosted.org/packages/57/5e/de2e6e51cb6894f2f2bc2641f6c845561361b622e96df3cca04df77222c9/fonttools-4.54.1-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab", - "url": "https://files.pythonhosted.org/packages/08/07/aa85cc62abcc940b25d14b542cf585eebf4830032a7f6a1395d696bb3231/fonttools-4.54.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "f412604ccbeee81b091b420272841e5ec5ef68967a9790e80bffd0e30b8e2977", + "url": "https://files.pythonhosted.org/packages/99/3b/406d17b1f63e04a82aa621936e6e1c53a8c05458abd66300ac85ea7f9ae9/fonttools-4.55.3-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285", - "url": "https://files.pythonhosted.org/packages/11/1d/70b58e342e129f9c0ce030029fb4b2b0670084bbbfe1121d008f6a1e361c/fonttools-4.54.1.tar.gz" + "hash": "07f8288aacf0a38d174445fc78377a97fb0b83cfe352a90c9d9c1400571963c7", + "url": "https://files.pythonhosted.org/packages/00/44/f5ee560858425c99ef07e04919e736db09d6416408e5a8d3bbfb4a6623fd/fonttools-4.55.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d", - "url": "https://files.pythonhosted.org/packages/27/b6/f9d365932dcefefdcc794985f8846471e60932070c557e0f66ed195fccec/fonttools-4.54.1-cp312-cp312-macosx_10_13_universal2.whl" + "hash": "b8d5e8916c0970fbc0f6f1bece0063363bb5857a7f170121a4493e31c3db3314", + "url": "https://files.pythonhosted.org/packages/24/da/0a001926d791c55e29ac3c52964957a20dbc1963615446b568b7432891c3/fonttools-4.55.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2", - "url": "https://files.pythonhosted.org/packages/37/2e/f94118b92f7b6a9ec93840101b64bfdd09f295b266133857e8e852a5c35c/fonttools-4.54.1-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "ae3b6600565b2d80b7c05acb8e24d2b26ac407b27a3f2e078229721ba5698427", + "url": "https://files.pythonhosted.org/packages/3d/d8/1edd8b13a427a9fb6418373437caa586c0caa57f260af8e0548f4d11e340/fonttools-4.55.3-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7", - "url": "https://files.pythonhosted.org/packages/45/4b/8a32f56a13e78256192f77d6b65583c43538c7955f5420887bb574b91ddf/fonttools-4.54.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45", + "url": "https://files.pythonhosted.org/packages/76/61/a300d1574dc381393424047c0396a0e213db212e28361123af9830d71a8d/fonttools-4.55.3.tar.gz" }, { "algorithm": "sha256", - "hash": "5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d", - "url": "https://files.pythonhosted.org/packages/47/23/c5726c2615446c498a976bed21c35a242a97eee39930a2655d616ca885cc/fonttools-4.54.1-cp312-cp312-musllinux_1_2_aarch64.whl" + "hash": "7a8aa2c5e5b8b3bcb2e4538d929f6589a5c6bdb84fd16e2ed92649fb5454f11c", + "url": "https://files.pythonhosted.org/packages/81/dd/da6e329e51919b4f421c8738f3497e2ab08c168e76aaef7b6d5351862bdf/fonttools-4.55.3-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08", - "url": "https://files.pythonhosted.org/packages/67/9d/cfbfe36e5061a8f68b154454ba2304eb01f40d4ba9b63e41d9058909baed/fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "f9e736f60f4911061235603a6119e72053073a12c6d7904011df2d8fad2c0e35", + "url": "https://files.pythonhosted.org/packages/89/58/fbcf5dff7e3ea844bb00c4d806ca1e339e1f2dce5529633bf4842c0c9a1f/fonttools-4.55.3-cp312-cp312-macosx_10_13_universal2.whl" }, { "algorithm": "sha256", - "hash": "d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8", - "url": "https://files.pythonhosted.org/packages/7c/82/91bc5a378b4a0593fa90ea706f68ce7e9e871c6873e0d91e134d107758db/fonttools-4.54.1-cp311-cp311-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714", - "url": "https://files.pythonhosted.org/packages/8f/7b/87f7f7d35e0732ac67422dfa6f05e2b568fb6ca2dcd7f3e4f500293cfd75/fonttools-4.54.1-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263", - "url": "https://files.pythonhosted.org/packages/90/41/5573e074739efd9227dd23647724f01f6f07ad062fe09d02e91c5549dcf7/fonttools-4.54.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07", - "url": "https://files.pythonhosted.org/packages/96/13/748b7f7239893ff0796de11074b0ad8aa4c3da2d9f4d79a128b0b16147f3/fonttools-4.54.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20", - "url": "https://files.pythonhosted.org/packages/aa/2c/8b5d82fe2d9c7f260fb73121418f5e07d4e38c329ea3886a5b0e55586113/fonttools-4.54.1-cp311-cp311-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a", - "url": "https://files.pythonhosted.org/packages/ea/ca/82be5d4f8b78405cdb3f7f3f1316af5e8db93216121f19da9f684a35beee/fonttools-4.54.1-cp311-cp311-musllinux_1_2_x86_64.whl" + "hash": "54153c49913f45065c8d9e6d0c101396725c5621c8aee744719300f79771d75a", + "url": "https://files.pythonhosted.org/packages/9c/ec/ade054097976c3d6debc9032e09a351505a0196aa5493edf021be376f75e/fonttools-4.55.3-cp312-cp312-musllinux_1_2_x86_64.whl" } ], "project_name": "fonttools", @@ -1484,7 +1218,7 @@ "zopfli>=0.1.4; extra == \"woff\"" ], "requires_python": ">=3.8", - "version": "4.54.1" + "version": "4.55.3" }, { "artifacts": [ @@ -1564,13 +1298,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "ca5d962f7bf57238500d83c61cf3de76b0aa78b18658f3db5c0396e604caa0f5", - "url": "https://files.pythonhosted.org/packages/f5/f9/7f0e837880282ffad7598ae4b80b29c2cdc5f5e75a58602c66518d245afb/gTTS-2.5.3-py3-none-any.whl" + "hash": "5dd579377f9f5546893bc26315ab1f846933dc27a054764b168f141065ca8436", + "url": "https://files.pythonhosted.org/packages/e3/6c/8b8b1fdcaee7e268536f1bb00183a5894627726b54a9ddc6fc9909888447/gTTS-2.5.4-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "d9f873c2f3a397c77c7a8c5dc128fc35fbed59f3e240cef0bff6c80d8cc12106", - "url": "https://files.pythonhosted.org/packages/65/10/808aff49b155a10ba035ffabc79bfa4d907161c9206de65e2cee4d0879fa/gtts-2.5.3.tar.gz" + "hash": "f5737b585f6442f677dbe8773424fd50697c75bdf3e36443585e30a8d48c1884", + "url": "https://files.pythonhosted.org/packages/57/79/5ddb1dfcd663581d0d3fca34ccb1d8d841b47c22a24dc8dce416e3d87dfa/gtts-2.5.4.tar.gz" } ], "project_name": "gtts", @@ -1587,94 +1321,54 @@ "testfixtures; extra == \"tests\"" ], "requires_python": ">=3.7", - "version": "2.5.3" + "version": "2.5.4" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "de561a9336aa92263a4a5757deffdacb0e04de84590e15a7d5413f574790a210", - "url": "https://files.pythonhosted.org/packages/ce/1c/c1949180a8e9231148d6c7407653c1e2928cec0534e8039591a1188d1a7c/hidapi-0.14.0.post2-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "c6e81890f51bae29ae81c3ff02fed754d05f69a408fa038ff1056aec90c56333", - "url": "https://files.pythonhosted.org/packages/06/a7/06ff3d65dbad868ff4bc21726823b1101b6a7b1281bc44e158b70a30638b/hidapi-0.14.0.post2-cp312-cp312-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "511ccf1fa7f159b95d31d9fb718ebfc35322252d7355a3afaa724b65cdbbeff6", - "url": "https://files.pythonhosted.org/packages/0b/03/5c85e738936bf8b57f557970701fe65a0290a2d3693ee2c966bfc4cb09eb/hidapi-0.14.0.post2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "556f99a3887065f0e86fb4b3968800c34fa25e6ea54047ef850ee639c69032da", - "url": "https://files.pythonhosted.org/packages/1d/10/be6935a1e26f5d3a41c63b8b365741281034900ca56611366433f3413c2c/hidapi-0.14.0.post2-cp312-cp312-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "5ebdc20915c6256c738116a3491bc5194d74233bb6a4ad7d05983dfec54a22f2", - "url": "https://files.pythonhosted.org/packages/38/13/45cac0a2952f1cc3f5674b599d083e81cc0816e877949dad897a51925dce/hidapi-0.14.0.post2-cp311-cp311-musllinux_1_2_aarch64.whl" + "hash": "707b1ebf5cb051b020e94b039e603351bf2e6620b48fc970228e0dd5d3a91fca", + "url": "https://files.pythonhosted.org/packages/01/e9/14e63f1a5ec0c2430b84695d28e994b2b63398544adb20d910f6dc41ac66/hidapi-0.14.0.post4-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "f95340c0d69245820a2075d516df9a99c466d92db29fa78df5f13d9cfee4716d", - "url": "https://files.pythonhosted.org/packages/46/07/0d773755e0c629cabd6fa10251929fbb6cba4c1936116d753e77a792eba1/hidapi-0.14.0.post2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "129d684c2760fafee9014ce63a58d8e2699cdf00cd1a11bb3d706d4715f5ff96", + "url": "https://files.pythonhosted.org/packages/1a/9a/9b7d5d5e2c003aed2fecdc348caff8d3b6a8ead0220da489ccb822d7e5ef/hidapi-0.14.0.post4-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "b5b979408ba1c65ea7e39e35e6cb9d29705265ebfca568627333876f7a030818", - "url": "https://files.pythonhosted.org/packages/4f/a7/1ed1c4c0c153eac0a2cce1a0b6753eec35810dbd9e483cc49a8a7d84a3d9/hidapi-0.14.0.post2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "10a01af155c51a8089fe44e627af2fbd323cfbef7bd55a86837d971aef6088b0", + "url": "https://files.pythonhosted.org/packages/37/7c/63316c8cba89cc039a952bb8805c3fb585e79f7fc8a5d27acaa6beb2fe81/hidapi-0.14.0.post4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "70038c3bd26c2ec7520964d9cfe5df81928ff34a2821e83914c28a9d4d8550b7", - "url": "https://files.pythonhosted.org/packages/72/79/599df7f0d40725f2456fff05b99a75a68d150916031ef0e5b01333966d8c/hidapi-0.14.0.post2-cp311-cp311-musllinux_1_2_x86_64.whl" + "hash": "48fce253e526d17b663fbf9989c71c7ef7653ced5f4be65f1437c313fb3dbdf6", + "url": "https://files.pythonhosted.org/packages/47/72/21ccaaca6ffb06f544afd16191425025d831c2a6d318635e9c8854070f2d/hidapi-0.14.0.post4.tar.gz" }, { "algorithm": "sha256", - "hash": "eecc24722c561348c04f3f0819534028a7dd2e35a16f195625e2465f95fb8c6f", - "url": "https://files.pythonhosted.org/packages/82/42/ff6bf1a9ffb09d7d150bd144ea74774d8c303944cb51075190f224eb8964/hidapi-0.14.0.post2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "6eaff1d120c47e1a121eada8dc85eac007d1ed81f3db7fc0da5b6ed17d8edefb", + "url": "https://files.pythonhosted.org/packages/8a/a8/bb222e3f096467d8e37c717000b9b0c6acee043c1145eaaeba4abfc8cffd/hidapi-0.14.0.post4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl" }, { "algorithm": "sha256", - "hash": "59465c87f028e70162f04d3e69014cd03bb2a4ceed7db6d0a160ec9627fb9324", - "url": "https://files.pythonhosted.org/packages/a6/f7/f6dfb43c37949a1300504569b18857d975f6d92c0a0de52247865356ae55/hidapi-0.14.0.post2-cp312-cp312-musllinux_1_2_i686.whl" + "hash": "6270677da02e86b56b81afd5f6f313736b8315b493f3c8a431da285e3a3c5de9", + "url": "https://files.pythonhosted.org/packages/a8/da/88ebbd465dbaff04e9ef3bbdb4a6ca9d24a3458e4726878dbe26bb69236e/hidapi-0.14.0.post4-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "4a6991f55aebd3f84cc924fd838e0052422a5a3921f5d7df0ce6c9600f09db9a", - "url": "https://files.pythonhosted.org/packages/af/c6/d129b74e0028ca8401ecbeffb9cd1bca377262a5dcd882ea4999ba25d416/hidapi-0.14.0.post2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "4f04de00e40db2efc0bcdd047c160274ba7ccd861100fd87c295dd63cb932f2f", + "url": "https://files.pythonhosted.org/packages/ad/e5/a919eb542a692cc27dc58b1997dd860cace0e4c64e38c8bf9236ff8b95b7/hidapi-0.14.0.post4-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "5eaa04f8fb7b5d9d7e3eeb502317941559ecfc4a76d2527ee0d1d835794ac5aa", - "url": "https://files.pythonhosted.org/packages/b4/d6/10683f04a49cf6ccfa6186940732ed8d15e5c86ea1e399a4dadfec7c1ec2/hidapi-0.14.0.post2-cp312-cp312-macosx_10_9_x86_64.whl" + "hash": "fedb9c3be6a2376de436d13fcb37a686a9b6bc988585bcc4f5ec61cad925e794", + "url": "https://files.pythonhosted.org/packages/ba/c8/52134f7d3e09fd4feb7756ccd872c55bfd1899ee81ceed4f8ad5ae39f457/hidapi-0.14.0.post4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "4d3ca0ff9179bfa2337b36eaa6a4f1a3e4c8e643cf698adfef65700bffb6fe5c", - "url": "https://files.pythonhosted.org/packages/bc/ac/f6009ddff800adcaf0f57b2ec4526d9ae9419d28391e5580904ce6115ba9/hidapi-0.14.0.post2-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "6c0e97ba6b059a309d51b495a8f0d5efbcea8756b640d98b6f6bb9fdef2458ac", - "url": "https://files.pythonhosted.org/packages/bf/6f/90c536b020a8e860f047a2839830a1ade3e1490e67336ecf489b4856eb7b/hidapi-0.14.0.post2.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "3b1bca2741492c67a6cb4d7b57c0db734543556b369d3604505c62a47607767f", - "url": "https://files.pythonhosted.org/packages/e8/1d/7a32933a022dc42d9a796843ceb05c038521318668400da5eada1ac66170/hidapi-0.14.0.post2-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "04fd0c791af679dc6de02205f5fe321e46b7cae0e8d10d7f579abb8bcca0c595", - "url": "https://files.pythonhosted.org/packages/ed/5b/25d7b9794b2017a315573464ea39617e40702acb82dec9c348a52d288433/hidapi-0.14.0.post2-cp311-cp311-musllinux_1_2_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "ef474da943187befd9a55270ba521f42930565b84bd59caa276adeda29669853", - "url": "https://files.pythonhosted.org/packages/f5/d2/ae65b9cecc3ba140b7eff02d3f67ed56203b3715926b3f1f13d82ce7a966/hidapi-0.14.0.post2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "da700db947562f8c0ac530215b74b5a27e4c669916ec99cfb5accd14ba08562c", + "url": "https://files.pythonhosted.org/packages/da/f0/ea437ed339c5f0b446983011000d8cad8c4f8a51ee39e837d16e101b66da/hidapi-0.14.0.post4-cp312-cp312-musllinux_1_2_i686.whl" } ], "project_name": "hidapi", @@ -1682,7 +1376,7 @@ "setuptools>=19.0" ], "requires_python": null, - "version": "0.14.0.post2" + "version": "0.14.0.post4" }, { "artifacts": [ @@ -1711,13 +1405,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "471f1eda55618ee44a3c9960911c35e647d9284c68f077e868df633398f137f0", - "url": "https://files.pythonhosted.org/packages/4e/e7/26045404a30c8a200e960fb54fbaf4b73d12e58cd28e03b306b084253f4f/imageio-2.36.0-py3-none-any.whl" + "hash": "20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf", + "url": "https://files.pythonhosted.org/packages/5c/f9/f78e7f5ac8077c481bf6b43b8bc736605363034b3d5eb3ce8eb79f53f5f1/imageio-2.36.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "1c8f294db862c256e9562354d65aa54725b8dafed7f10f02bb3ec20ec1678850", - "url": "https://files.pythonhosted.org/packages/4f/34/a714fd354f5f7fe650477072d4da21446849b20c02045dcf7ac827495121/imageio-2.36.0.tar.gz" + "hash": "e4e1d231f47f9a9e16100b0f7ce1a86e8856fb4d1c0fa2c4365a316f1746be62", + "url": "https://files.pythonhosted.org/packages/70/aa/2e7a49259339e691ff2b477ae0696b1784a09313c5872700bbbdd00a3030/imageio-2.36.1.tar.gz" } ], "project_name": "imageio", @@ -1782,47 +1476,7 @@ "wheel; extra == \"full\"" ], "requires_python": ">=3.9", - "version": "2.36.0" - }, - { - "artifacts": [ - { - "algorithm": "sha256", - "hash": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "url": "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", - "url": "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" - } - ], - "project_name": "importlib-metadata", - "requires_dists": [ - "flufl.flake8; extra == \"test\"", - "furo; extra == \"doc\"", - "importlib-resources>=1.3; python_version < \"3.9\" and extra == \"test\"", - "ipython; extra == \"perf\"", - "jaraco.packaging>=9.3; extra == \"doc\"", - "jaraco.test>=5.4; extra == \"test\"", - "jaraco.tidelift>=1.4; extra == \"doc\"", - "packaging; extra == \"test\"", - "pyfakefs; extra == \"test\"", - "pytest!=8.1.*,>=6; extra == \"test\"", - "pytest-checkdocs>=2.4; extra == \"check\"", - "pytest-cov; extra == \"cover\"", - "pytest-enabler>=2.2; extra == \"enabler\"", - "pytest-mypy; extra == \"type\"", - "pytest-perf>=0.9.2; extra == \"test\"", - "pytest-ruff>=0.2.1; sys_platform != \"cygwin\" and extra == \"check\"", - "rst.linker>=1.9; extra == \"doc\"", - "sphinx-lint; extra == \"doc\"", - "sphinx>=3.5; extra == \"doc\"", - "typing-extensions>=3.6.4; python_version < \"3.8\"", - "zipp>=3.20" - ], - "requires_python": ">=3.8", - "version": "8.5.0" + "version": "2.36.1" }, { "artifacts": [ @@ -1846,13 +1500,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8", - "url": "https://files.pythonhosted.org/packages/c5/a5/c15ed187f1b3fac445bb42a2dedd8dec1eee1718b35129242049a13a962f/ipython-8.29.0-py3-none-any.whl" + "hash": "46ec58f8d3d076a61d128fe517a51eb730e3aaf0c184ea8c17d16e366660c6a6", + "url": "https://files.pythonhosted.org/packages/04/60/d0feb6b6d9fe4ab89fe8fe5b47cbf6cd936bfd9f1e7ffa9d0015425aeed6/ipython-8.31.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb", - "url": "https://files.pythonhosted.org/packages/85/e0/a3f36dde97e12121106807d80485423ae4c5b27ce60d40d4ab0bab18a9db/ipython-8.29.0.tar.gz" + "hash": "b6a2274606bec6166405ff05e54932ed6e5cfecaca1fc05f2cacde7bb074d70b", + "url": "https://files.pythonhosted.org/packages/01/35/6f90fdddff7a08b7b715fccbd2427b5212c9525cd043d26fdc45bee0708d/ipython-8.31.0.tar.gz" } ], "project_name": "ipython", @@ -1864,7 +1518,7 @@ "docrepr; extra == \"doc\"", "exceptiongroup; extra == \"doc\"", "exceptiongroup; python_version < \"3.11\"", - "intersphinx-registry; extra == \"doc\"", + "intersphinx_registry; extra == \"doc\"", "ipykernel; extra == \"doc\"", "ipykernel; extra == \"kernel\"", "ipyparallel; extra == \"parallel\"", @@ -1887,7 +1541,7 @@ "pandas; extra == \"test-extra\"", "pexpect>4.3; sys_platform != \"win32\" and sys_platform != \"emscripten\"", "pickleshare; extra == \"test\"", - "prompt-toolkit<3.1.0,>=3.0.41", + "prompt_toolkit<3.1.0,>=3.0.41", "pygments>=2.4.0", "pytest-asyncio<0.22; extra == \"test\"", "pytest; extra == \"test\"", @@ -1896,16 +1550,16 @@ "sphinx-rtd-theme; extra == \"doc\"", "sphinx>=1.3; extra == \"doc\"", "sphinxcontrib-jquery; extra == \"doc\"", - "stack-data", + "stack_data", "testpath; extra == \"test\"", "tomli; python_version < \"3.11\" and extra == \"doc\"", "traitlets>=5.13.0", "trio; extra == \"test-extra\"", - "typing-extensions; extra == \"doc\"", - "typing-extensions>=4.6; python_version < \"3.12\"" + "typing_extensions; extra == \"doc\"", + "typing_extensions>=4.6; python_version < \"3.12\"" ], "requires_python": ">=3.10", - "version": "8.29.0" + "version": "8.31.0" }, { "artifacts": [ @@ -1958,13 +1612,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0", - "url": "https://files.pythonhosted.org/packages/20/9f/bc63f0f0737ad7a60800bfd472a4836661adae21f9c2535f3957b1e54ceb/jedi-0.19.1-py2.py3-none-any.whl" + "hash": "a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", + "url": "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd", - "url": "https://files.pythonhosted.org/packages/d6/99/99b493cec4bf43176b678de30f81ed003fd6a647a301b9c927280c600f0a/jedi-0.19.1.tar.gz" + "hash": "4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", + "url": "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz" } ], "project_name": "jedi", @@ -1988,9 +1642,9 @@ "mock==1.0.1; extra == \"docs\"", "mypy==0.971; extra == \"qa\"", "packaging==20.9; extra == \"docs\"", - "parso<0.9.0,>=0.8.3", + "parso<0.9.0,>=0.8.4", "pyparsing==2.4.7; extra == \"docs\"", - "pytest<7.0.0; extra == \"testing\"", + "pytest<9.0.0; extra == \"testing\"", "pytz==2021.1; extra == \"docs\"", "readthedocs-sphinx-ext==2.1.4; extra == \"docs\"", "recommonmark==0.5.0; extra == \"docs\"", @@ -2005,19 +1659,19 @@ "urllib3==1.26.4; extra == \"docs\"" ], "requires_python": ">=3.6", - "version": "0.19.1" + "version": "0.19.2" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", - "url": "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl" + "hash": "aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", + "url": "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", - "url": "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz" + "hash": "8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", + "url": "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz" } ], "project_name": "jinja2", @@ -2026,7 +1680,7 @@ "MarkupSafe>=2.0" ], "requires_python": ">=3.7", - "version": "3.1.4" + "version": "3.1.5" }, { "artifacts": [ @@ -2186,144 +1840,79 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520", - "url": "https://files.pythonhosted.org/packages/84/15/adc15a483506aec6986c01fb7f237c3aec4d9ed4ac10b756e98a76835933/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545", - "url": "https://files.pythonhosted.org/packages/05/83/2857317d04ea46dc5d115f0df7e676997bbd968ced8e2bd6f7f19cfc8d7f/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107", - "url": "https://files.pythonhosted.org/packages/0a/0f/529d0a9fffb4d514f2782c829b0b4b371f7f441d61aa55f1de1c614c4ef3/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b", - "url": "https://files.pythonhosted.org/packages/0d/b5/866f86f5897cd4ab6d25d22e403404766a123f138bd6a02ecb2cdde52c18/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258", - "url": "https://files.pythonhosted.org/packages/0f/00/65061acf64bd5fd34c1f4ae53f20b43b0a017a541f242a60b135b9d1e301/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e", - "url": "https://files.pythonhosted.org/packages/21/e4/c0b6746fd2eb62fe702118b3ca0cb384ce95e1261cfada58ff693aeec08a/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", + "url": "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483", - "url": "https://files.pythonhosted.org/packages/52/be/86cbb9c9a315e98a8dc6b1d23c43cffd91d97d49318854f9c37b0e41cd68/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + "hash": "69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", + "url": "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51", - "url": "https://files.pythonhosted.org/packages/70/d1/c9f96df26b459e15cf8a965304e6e6f4eb291e0f7a9460b4ad97b047561e/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + "hash": "257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", + "url": "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee", - "url": "https://files.pythonhosted.org/packages/80/c5/57fa58276dfdfa612241d640a64ca2f76adc6ffcebdbd135b4ef60095098/kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", + "url": "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", - "url": "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz" + "hash": "23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", + "url": "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz" }, { "algorithm": "sha256", - "hash": "ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb", - "url": "https://files.pythonhosted.org/packages/8b/1b/b5d618f4e58c0675654c1e5051bcf42c776703edb21c02b8c74135541f60/kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", + "url": "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640", - "url": "https://files.pythonhosted.org/packages/8b/e9/26d3edd4c4ad1c5b891d8747a4f81b1b0aba9fb9721de6600a4adc09773b/kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", + "url": "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, { "algorithm": "sha256", - "hash": "4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038", - "url": "https://files.pythonhosted.org/packages/8d/61/de5fb1ca7ad1f9ab7970e340a5b833d735df24689047de6ae71ab9d8d0e7/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl" + "hash": "858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", + "url": "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl" }, { "algorithm": "sha256", - "hash": "5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2", - "url": "https://files.pythonhosted.org/packages/97/9c/0a11c714cf8b6ef91001c8212c4ef207f772dd84540104952c45c1f0a249/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl" + "hash": "cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", + "url": "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3", - "url": "https://files.pythonhosted.org/packages/a1/e7/cd101d8cd2cdfaa42dc06c433df17c8303d31129c9fdd16c0ea37672af91/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl" + "hash": "bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", + "url": "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18", - "url": "https://files.pythonhosted.org/packages/a7/4b/2db7af3ed3af7c35f388d5f53c28e155cd402a55432d800c543dc6deb731/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", + "url": "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" }, { "algorithm": "sha256", - "hash": "612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f", - "url": "https://files.pythonhosted.org/packages/b6/67/3f4850b5e6cffb75ec40577ddf54f7b82b15269cc5097ff2e968ee32ea7d/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", + "url": "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl" }, { "algorithm": "sha256", - "hash": "3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02", - "url": "https://files.pythonhosted.org/packages/b8/01/946852b13057a162a8c32c4c8d2e9ed79f0bb5d86569a40c0b5fb103e373/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", + "url": "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383", - "url": "https://files.pythonhosted.org/packages/ba/d2/0edc00a852e369827f7e05fd008275f550353f1f9bcd55db9363d779fc63/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36", - "url": "https://files.pythonhosted.org/packages/c1/ee/73de8385403faba55f782a41260210528fe3273d0cddcf6d51648202d6d0/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948", - "url": "https://files.pythonhosted.org/packages/d1/e1/66603ad779258843036d45adcbe1af0d1a889a07af4635f8b4ec7dccda35/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052", - "url": "https://files.pythonhosted.org/packages/d3/73/2686990eb8b02d05f3de759d6a23a4ee7d491e659007dd4c075fede4b5d0/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523", - "url": "https://files.pythonhosted.org/packages/e1/72/84f09d45a10bc57a40bb58b81b99d8f22b58b2040c912b7eb97ebf625bf2/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", - "url": "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", - "url": "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a", - "url": "https://files.pythonhosted.org/packages/f2/d8/0fe8c5f5d35878ddd135f44f2af0e4e1d379e1c7b0716f97cdcb88d4fd27/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", - "url": "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", + "url": "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl" } ], "project_name": "kiwisolver", "requires_dists": [], - "requires_python": ">=3.8", - "version": "1.4.7" + "requires_python": ">=3.10", + "version": "1.4.8" }, { "artifacts": [ @@ -2355,16 +1944,6 @@ "hash": "80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d", "url": "https://files.pythonhosted.org/packages/31/8b/94dc8d58704ab87b39faed6f2fc0090b9d90e2e2aa2bbec35c79f3d2a054/lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl" }, - { - "algorithm": "sha256", - "hash": "02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4", - "url": "https://files.pythonhosted.org/packages/1a/76/6a41de4b44d1dcfe4c720d4606de0d7b69b6b450f0bdce16f2e1fb8abc89/lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56", - "url": "https://files.pythonhosted.org/packages/1e/5d/eaa12126e8989c9bdd21d864cbba2b258cb9ee2f574ada1462a0004cfad8/lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, { "algorithm": "sha256", "hash": "78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69", @@ -2375,11 +1954,6 @@ "hash": "80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9", "url": "https://files.pythonhosted.org/packages/44/46/3771e0a4315044aa7b67da892b2fb1f59dfcf0eaff2c8967b2a0a85d5896/lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9", - "url": "https://files.pythonhosted.org/packages/53/a9/6f22cfe9572929656988b72c0de266c5d10755369b575322725f67364c4e/lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl" - }, { "algorithm": "sha256", "hash": "e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3", @@ -2395,20 +1969,10 @@ "hash": "952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43", "url": "https://files.pythonhosted.org/packages/b3/ce/f369815549dbfa4bebed541fa4e1561d69e4f268a1f6f77da886df182dab/lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f", - "url": "https://files.pythonhosted.org/packages/bd/e6/b10fd94710a99a6309f3ad61a4eb480944bbb17fcb41bd2d852fdbee57ee/lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl" - }, { "algorithm": "sha256", "hash": "e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba", "url": "https://files.pythonhosted.org/packages/d0/5d/768a7f2ccebb29604def61842fd54f6f5f75c79e366ee8748dda84de0b13/lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c", - "url": "https://files.pythonhosted.org/packages/ff/e1/99a7ec68b892c9b8c6212617f54e7e9b0304d47edad8c0ff043ae3aeb1a9/lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl" } ], "project_name": "lazy-object-proxy", @@ -2428,21 +1992,6 @@ "hash": "f99b600aa7f65235a5a05d0b9a9f31150c390f31261f2a0ba678e26823ec38f7", "url": "https://files.pythonhosted.org/packages/0b/67/9443509e5d2b6d8587bae3ede5598fa8bd586b1c7701696663ea8af15b5b/llvmlite-0.43.0-cp312-cp312-macosx_10_9_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "c1da416ab53e4f7f3bc8d4eeba36d801cc1894b9fbfbf2022b29b6bad34a7df2", - "url": "https://files.pythonhosted.org/packages/2f/b2/4429433eb2dc8379e2cb582502dca074c23837f8fd009907f78a24de4c25/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "977525a1e5f4059316b183fb4fd34fa858c9eade31f165427a3977c95e3ee749", - "url": "https://files.pythonhosted.org/packages/6b/99/5d00a7d671b1ba1751fc9f19d3b36f3300774c6eebe2bcdb5f6191763eb4/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "3e8d0618cb9bfe40ac38a9633f2493d4d4e9fcc2f438d39a4e854f39cc0f5f98", - "url": "https://files.pythonhosted.org/packages/95/8c/de3276d773ab6ce3ad676df5fab5aac19696b2956319d65d7dd88fb10f19/llvmlite-0.43.0-cp311-cp311-macosx_10_9_x86_64.whl" - }, { "algorithm": "sha256", "hash": "ae2b5b5c3ef67354824fb75517c8db5fbe93bc02cd9671f3c62271626bc041d5", @@ -2457,11 +2006,6 @@ "algorithm": "sha256", "hash": "eccce86bba940bae0d8d48ed925f21dbb813519169246e2ab292b5092aba121f", "url": "https://files.pythonhosted.org/packages/bf/f1/4c205a48488e574ee9f6505d50e84370a978c90f08dab41a42d8f2c576b6/llvmlite-0.43.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "e0a9a1a39d4bf3517f2af9d23d479b4175ead205c592ceeb8b89af48a327ea57", - "url": "https://files.pythonhosted.org/packages/ee/e1/38deed89ced4cf378c61e232265cfe933ccde56ae83c901aa68b477d14b1/llvmlite-0.43.0-cp311-cp311-macosx_11_0_arm64.whl" } ], "project_name": "llvmlite", @@ -2481,46 +2025,16 @@ "hash": "c0131351b8a7226c69f1eba5814cbc9d1d8daaf0fdec1ae3f30508e3de5262d4", "url": "https://files.pythonhosted.org/packages/04/74/f2ae00de7c27984a19b88d2b09ac877031c525b01199d7841ec8fa657fd6/lru_dict-1.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl" }, - { - "algorithm": "sha256", - "hash": "a1efc59bfba6aac33684d87b9e02813b0e2445b2f1c444dae2a0b396ad0ed60c", - "url": "https://files.pythonhosted.org/packages/21/92/4690daefc2602f7c3429ecf54572d37a9e3c372d370344d2185daa4d5ecc/lru_dict-1.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "c95f8751e2abd6f778da0399c8e0239321d560dbc58cb063827123137d213242", - "url": "https://files.pythonhosted.org/packages/36/54/8d56c514cd2333b652bd44c8f1962ab986cbe68e8ad7258c9e0f360cddb6/lru_dict-1.3.0-cp311-cp311-musllinux_1_1_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "cfaf75ac574447afcf8ad998789071af11d2bcf6f947643231f692948839bd98", - "url": "https://files.pythonhosted.org/packages/3c/67/0a29a91087196b02f278d8765120ee4e7486f1f72a4c505fd1cd3109e627/lru_dict-1.3.0-cp311-cp311-musllinux_1_1_aarch64.whl" - }, { "algorithm": "sha256", "hash": "350e2233cfee9f326a0d7a08e309372d87186565e43a691b120006285a0ac549", "url": "https://files.pythonhosted.org/packages/3c/de/5ef2ed75ce55d7059d1b96177ba04fa7ee1f35564f97bdfcd28fccfbe9d2/lru_dict-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "9710737584650a4251b9a566cbb1a86f83437adb209c9ba43a4e756d12faf0d7", - "url": "https://files.pythonhosted.org/packages/4e/63/a0ae20525f9d52f62ac0def47935f8a2b3b6fcd2c145218b9a27fc1fb910/lru_dict-1.3.0-cp311-cp311-macosx_11_0_arm64.whl" - }, { "algorithm": "sha256", "hash": "1958cb70b9542773d6241974646e5410e41ef32e5c9e437d44040d59bd80daf2", "url": "https://files.pythonhosted.org/packages/59/88/d5976e9f70107ce11e45d93c6f0c2d5eaa1fc30bb3c8f57525eda4510dff/lru_dict-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, - { - "algorithm": "sha256", - "hash": "9bd13af06dab7c6ee92284fd02ed9a5613a07d5c1b41948dc8886e7207f86dfd", - "url": "https://files.pythonhosted.org/packages/5b/6e/5b09b069a70028bcf05dbdc57a301fbe8b3bafecf916f2ed5a3065c79a71/lru_dict-1.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "d9b30a8f50c3fa72a494eca6be5810a1b5c89e4f0fda89374f0d1c5ad8d37d51", - "url": "https://files.pythonhosted.org/packages/61/14/f90dee4bc547ae266dbeffd4e11611234bb6af511dea48f3bc8dac1de478/lru_dict-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl" - }, { "algorithm": "sha256", "hash": "bc1cd3ed2cee78a47f11f3b70be053903bda197a873fd146e25c60c8e5a32cd6", @@ -2541,11 +2055,6 @@ "hash": "5ad659cbc349d0c9ba8e536b5f40f96a70c360f43323c29f4257f340d891531c", "url": "https://files.pythonhosted.org/packages/9b/b6/08a623019daec22a40c4d6d2c40851dfa3d129a53b2f9469db8eb13666c1/lru_dict-1.3.0-cp312-cp312-musllinux_1_1_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "20c595764695d20bdc3ab9b582e0cc99814da183544afb83783a36d6741a0dac", - "url": "https://files.pythonhosted.org/packages/a8/c9/6fac0cb67160f0efa3cc76a6a7d04d5e21a516eeb991ebba08f4f8f01ec5/lru_dict-1.3.0-cp311-cp311-macosx_10_9_universal2.whl" - }, { "algorithm": "sha256", "hash": "4eafb188a84483b3231259bf19030859f070321b00326dcb8e8c6cbf7db4b12f", @@ -2556,35 +2065,15 @@ "hash": "82eb230d48eaebd6977a92ddaa6d788f14cf4f4bcf5bbffa4ddfd60d051aa9d4", "url": "https://files.pythonhosted.org/packages/ca/b9/9db79780c8a3cfd66bba6847773061e5cf8a3746950273b9985d47bbfe53/lru_dict-1.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "b84c321ae34f2f40aae80e18b6fa08b31c90095792ab64bb99d2e385143effaa", - "url": "https://files.pythonhosted.org/packages/e9/c6/8c2b81b61e5206910c81b712500736227289aefe4ccfb36137aa21807003/lru_dict-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, { "algorithm": "sha256", "hash": "73593791047e36b37fdc0b67b76aeed439fcea80959c7d46201240f9ec3b2563", "url": "https://files.pythonhosted.org/packages/ea/59/cf891143abe58a455b8eaa9175f0e80f624a146a2bf9a1ca842ee0ef930a/lru_dict-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "abd0c284b26b5c4ee806ca4f33ab5e16b4bf4d5ec9e093e75a6f6287acdde78e", - "url": "https://files.pythonhosted.org/packages/f5/9a/c7a175d10d503b86974cb07141ca175947145dd1c7370fcda86fbbcaf326/lru_dict-1.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "eed24272b4121b7c22f234daed99899817d81d671b3ed030c876ac88bc9dc890", - "url": "https://files.pythonhosted.org/packages/f9/d7/af9733f94df67a2e9e31ef47d4c41aff1836024f135cdbda4743eb628452/lru_dict-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" - }, { "algorithm": "sha256", "hash": "c279068f68af3b46a5d649855e1fb87f5705fe1f744a529d82b2885c0e1fc69d", "url": "https://files.pythonhosted.org/packages/fc/5c/385f080747eb3083af87d8e4c9068f3c4cab89035f6982134889940dafd8/lru_dict-1.3.0-cp312-cp312-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "2a47740652b25900ac5ce52667b2eade28d8b5fdca0ccd3323459df710e8210a", - "url": "https://files.pythonhosted.org/packages/fd/59/2e5086c8e8a05a7282a824a2a37e3c45cd5714e7b83d8bc0267cb3bb5b4f/lru_dict-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl" } ], "project_name": "lru-dict", @@ -2621,61 +2110,16 @@ "hash": "62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1", "url": "https://files.pythonhosted.org/packages/1d/7c/2eeecf87c9a1fca4f84f991067c693e67340f2b7127fc3eca8fa29d75ee3/lxml-5.3.0-cp312-cp312-manylinux_2_28_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79", - "url": "https://files.pythonhosted.org/packages/1d/ce/fb84fb8e3c298f3a245ae3ea6221c2426f1bbaa82d10a88787412a498145/lxml-5.3.0-cp311-cp311-manylinux_2_28_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e", - "url": "https://files.pythonhosted.org/packages/23/0e/caac672ec246d3189a16c4d364ed4f7d6bf856c080215382c06764058c08/lxml-5.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f", - "url": "https://files.pythonhosted.org/packages/25/2f/b20565e808f7f6868aacea48ddcdd7e9e9fb4c799287f21f1a6c7c2e8b71/lxml-5.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" - }, { "algorithm": "sha256", "hash": "c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d", "url": "https://files.pythonhosted.org/packages/3b/ed/4c38ba58defca84f5f0d0ac2480fdcd99fc7ae4b28fc417c93640a6949ae/lxml-5.3.0-cp312-cp312-manylinux_2_28_ppc64le.whl" }, - { - "algorithm": "sha256", - "hash": "eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654", - "url": "https://files.pythonhosted.org/packages/42/07/b29571a58a3a80681722ea8ed0ba569211d9bb8531ad49b5cacf6d409185/lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763", - "url": "https://files.pythonhosted.org/packages/56/b5/645c8c02721d49927c93181de4017164ec0e141413577687c3df8ff0800f/lxml-5.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b", - "url": "https://files.pythonhosted.org/packages/5c/a8/449faa2a3cbe6a99f8d38dcd51a3ee8844c17862841a6f769ea7c2a9cd0f/lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl" - }, { "algorithm": "sha256", "hash": "aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179", "url": "https://files.pythonhosted.org/packages/5d/ea/a6523c7c7f6dc755a6eed3d2f6d6646617cad4d3d6d8ce4ed71bfd2362c8/lxml-5.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, - { - "algorithm": "sha256", - "hash": "aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c", - "url": "https://files.pythonhosted.org/packages/67/a4/1f5fbd3f58d4069000522196b0b776a014f3feec1796da03e495cf23532d/lxml-5.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be", - "url": "https://files.pythonhosted.org/packages/80/8a/df47bff6ad5ac57335bf552babfb2408f9eb680c074ec1ba412a1a6af2c5/lxml-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec", - "url": "https://files.pythonhosted.org/packages/85/3f/6a99a12d9438316f4fc86ef88c5d4c8fb674247b17f3173ecadd8346b671/lxml-5.3.0-cp311-cp311-musllinux_1_2_s390x.whl" - }, { "algorithm": "sha256", "hash": "65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e", @@ -2696,26 +2140,6 @@ "hash": "5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c", "url": "https://files.pythonhosted.org/packages/a5/22/bbd3995437e5745cb4c2b5d89088d70ab19d4feabf8a27a24cecb9745464/lxml-5.3.0-cp312-cp312-manylinux_2_28_s390x.whl" }, - { - "algorithm": "sha256", - "hash": "a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18", - "url": "https://files.pythonhosted.org/packages/ac/8a/ae6325e994e2052de92f894363b038351c50ee38749d30cc6b6d96aaf90f/lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080", - "url": "https://files.pythonhosted.org/packages/b1/72/4d1ad363748a72c7c0411c28be2b0dc7150d91e823eadad3b91a4514cbea/lxml-5.3.0-cp311-cp311-manylinux_2_28_s390x.whl" - }, - { - "algorithm": "sha256", - "hash": "2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4", - "url": "https://files.pythonhosted.org/packages/b4/f9/a181a8ef106e41e3086629c8bdb2d21a942f14c84a0e77452c22d6b22091/lxml-5.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d", - "url": "https://files.pythonhosted.org/packages/b9/93/bde740d5a58cf04cbd38e3dd93ad1e36c2f95553bbf7d57807bc6815d926/lxml-5.3.0-cp311-cp311-musllinux_1_2_aarch64.whl" - }, { "algorithm": "sha256", "hash": "384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e", @@ -2740,16 +2164,6 @@ "algorithm": "sha256", "hash": "e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859", "url": "https://files.pythonhosted.org/packages/eb/6d/d1f1c5e40c64bf62afd7a3f9b34ce18a586a1cccbf71e783cd0a6d8e8971/lxml-5.3.0-cp312-cp312-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16", - "url": "https://files.pythonhosted.org/packages/ee/73/623ecea6ca3c530dd0a4ed0d00d9702e0e85cd5624e2d5b93b005fe00abd/lxml-5.3.0-cp311-cp311-manylinux_2_28_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442", - "url": "https://files.pythonhosted.org/packages/f8/fb/128dddb7f9086236bce0eeae2bfb316d138b49b159f50bc681d56c1bdd19/lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" } ], "project_name": "lxml", @@ -2770,41 +2184,16 @@ "hash": "ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", "url": "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", - "url": "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl" - }, { "algorithm": "sha256", "hash": "9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", "url": "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl" }, - { - "algorithm": "sha256", - "hash": "0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", - "url": "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", - "url": "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl" - }, { "algorithm": "sha256", "hash": "846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", "url": "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl" }, - { - "algorithm": "sha256", - "hash": "93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", - "url": "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", - "url": "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" - }, { "algorithm": "sha256", "hash": "ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", @@ -2830,25 +2219,10 @@ "hash": "1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", "url": "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", - "url": "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", - "url": "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, { "algorithm": "sha256", "hash": "e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", "url": "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", - "url": "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl" } ], "project_name": "markupsafe", @@ -2860,58 +2234,33 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e", - "url": "https://files.pythonhosted.org/packages/de/e3/2976e4e54d7ee76eaf54b7639fdc10a223d05c2bdded7045233e9871e469/matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl" + "hash": "503feb23bd8c8acc75541548a1d709c059b7184cde26314896e10a9f14df5f12", + "url": "https://files.pythonhosted.org/packages/f4/bd/b2f60cf7f57d014ab33e4f74602a2b5bdc657976db8196bbc022185f6f9c/matplotlib-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447", - "url": "https://files.pythonhosted.org/packages/01/75/6c7ce560e95714a10fcbb3367d1304975a1a3e620f72af28921b796403f3/matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "d44cb942af1693cced2604c33a9abcef6205601c445f6d0dc531d813af8a2f5a", + "url": "https://files.pythonhosted.org/packages/42/2a/6d66d0fba41e13e9ca6512a0a51170f43e7e7ed3a8dfa036324100775612/matplotlib-3.10.0-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c", - "url": "https://files.pythonhosted.org/packages/27/75/de5b9cd67648051cae40039da0c8cbc497a0d99acb1a1f3d087cd66d27b7/matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59", + "url": "https://files.pythonhosted.org/packages/44/c7/6b2d8cb7cc251d53c976799cacd3200add56351c175ba89ab9cbd7c1e68a/matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41", - "url": "https://files.pythonhosted.org/packages/28/ba/8be09886eb56ac04a218a1dc3fa728a5c4cac60b019b4f1687885166da00/matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278", + "url": "https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz" }, { "algorithm": "sha256", - "hash": "be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d", - "url": "https://files.pythonhosted.org/packages/35/3e/5713b84a02b24b2a4bd4d6673bfc03017e6654e1d8793ece783b7ed4d484/matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "a994f29e968ca002b50982b27168addfd65f0105610b6be7fa515ca4b5307c95", + "url": "https://files.pythonhosted.org/packages/90/60/2a60342b27b90a16bada939a85e29589902b41073f59668b904b15ea666c/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7", - "url": "https://files.pythonhosted.org/packages/5b/bd/c404502aa1824456d2862dd6b9b0c1917761a51a32f7f83ff8cf94b6d117/matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e", - "url": "https://files.pythonhosted.org/packages/6e/49/dc7384c6c092958e0b75e754efbd9e52500154939c3d715789cee9fb8a53/matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772", - "url": "https://files.pythonhosted.org/packages/77/c2/f9d7fe80a8fcce9bb128d1381c6fe41a8d286d7e18395e273002e8e0fa34/matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9", - "url": "https://files.pythonhosted.org/packages/82/de/54f7f38ce6de79cb77d513bb3eaa4e0b1031e9fd6022214f47943fa53a88/matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92", - "url": "https://files.pythonhosted.org/packages/9e/d8/3d7f706c69e024d4287c1110d74f7dabac91d9843b99eadc90de9efc8869/matplotlib-3.9.2.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f", - "url": "https://files.pythonhosted.org/packages/e6/9a/5991972a560db3ab621312a7ca5efec339ae2122f25901c0846865c4b72f/matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8", + "url": "https://files.pythonhosted.org/packages/a7/b2/d872fc3d753516870d520595ddd8ce4dd44fa797a240999f125f58521ad7/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" } ], "project_name": "matplotlib", @@ -2919,21 +2268,19 @@ "contourpy>=1.0.1", "cycler>=0.10", "fonttools>=4.22.0", - "importlib-resources>=3.2.0; python_version < \"3.10\"", "kiwisolver>=1.3.1", - "meson-python>=0.13.1; extra == \"dev\"", + "meson-python<0.17.0,>=0.13.1; extra == \"dev\"", "numpy>=1.23", - "numpy>=1.25; extra == \"dev\"", "packaging>=20.0", "pillow>=8", - "pybind11>=2.6; extra == \"dev\"", + "pybind11!=2.13.3,>=2.13.2; extra == \"dev\"", "pyparsing>=2.3.1", "python-dateutil>=2.7", "setuptools>=64; extra == \"dev\"", "setuptools_scm>=7; extra == \"dev\"" ], - "requires_python": ">=3.9", - "version": "3.9.2" + "requires_python": ">=3.10", + "version": "3.10.0" }, { "artifacts": [ @@ -3005,24 +2352,6 @@ "requires_python": ">=3.8", "version": "5.10.4" }, - { - "artifacts": [ - { - "algorithm": "sha256", - "hash": "87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", - "url": "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", - "url": "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz" - } - ], - "project_name": "nest-asyncio", - "requires_dists": [], - "requires_python": ">=3.5", - "version": "1.6.0" - }, { "artifacts": [ { @@ -3083,11 +2412,6 @@ "hash": "5df6158e5584eece5fc83294b949fd30b9f1125df7708862205217e068aabf16", "url": "https://files.pythonhosted.org/packages/3c/93/2849300a9184775ba274aba6f82f303343669b0592b7bb0849ea713dabb0/numba-0.60.0.tar.gz" }, - { - "algorithm": "sha256", - "hash": "4142d7ac0210cc86432b818338a2bc368dc773a2f5cf1e32ff7c5b378bd63ee8", - "url": "https://files.pythonhosted.org/packages/57/03/2b4245b05b71c0cee667e6a0b51606dfa7f4157c9093d71c6b208385a611/numba-0.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl" - }, { "algorithm": "sha256", "hash": "38d6ea4c1f56417076ecf8fc327c831ae793282e0ff51080c5094cb726507b1c", @@ -3098,25 +2422,10 @@ "hash": "62908d29fb6a3229c242e981ca27e32a6e606cc253fc9e8faeb0e48760de241e", "url": "https://files.pythonhosted.org/packages/67/88/c4459ccc05674ef02119abf2888ccd3e2fed12a323f52255f4982fc95876/numba-0.60.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "a17b70fc9e380ee29c42717e8cc0bfaa5556c416d94f9aa96ba13acb41bdece8", - "url": "https://files.pythonhosted.org/packages/98/ad/df18d492a8f00d29a30db307904b9b296e37507034eedb523876f3a2e13e/numba-0.60.0-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "3fb02b344a2a80efa6f677aa5c40cd5dd452e1b35f8d1c2af0dfd9ada9978e4b", - "url": "https://files.pythonhosted.org/packages/9a/51/a4dc2c01ce7a850b8e56ff6d5381d047a5daea83d12bad08aa071d34b2ee/numba-0.60.0-cp311-cp311-macosx_11_0_arm64.whl" - }, { "algorithm": "sha256", "hash": "d7da4098db31182fc5ffe4bc42c6f24cd7d1cb8a14b59fd755bfee32e34b8404", "url": "https://files.pythonhosted.org/packages/eb/5c/b5ec752c475e78a6c3676b67c514220dbde2725896bbb0b6ec6ea54b2738/numba-0.60.0-cp312-cp312-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "5f4fde652ea604ea3c86508a3fb31556a6157b2c76c8b51b1d45eb40c8598703", - "url": "https://files.pythonhosted.org/packages/f9/4c/8889ac94c0b33dca80bed11564b8c6d9ea14d7f094e674c58e5c5b05859b/numba-0.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl" } ], "project_name": "numba", @@ -3134,31 +2443,11 @@ "hash": "1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", "url": "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", - "url": "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl" - }, { "algorithm": "sha256", "hash": "675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", "url": "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", - "url": "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", - "url": "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", - "url": "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, { "algorithm": "sha256", "hash": "ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", @@ -3174,11 +2463,6 @@ "hash": "03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", "url": "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl" }, - { - "algorithm": "sha256", - "hash": "7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", - "url": "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, { "algorithm": "sha256", "hash": "9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", @@ -3188,133 +2472,69 @@ "algorithm": "sha256", "hash": "b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", "url": "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", - "url": "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl" } ], "project_name": "numpy", - "requires_dists": [], - "requires_python": ">=3.9", - "version": "1.26.4" - }, - { - "artifacts": [ - { - "algorithm": "sha256", - "hash": "3148f93231ff80d32772bbea78d223ce1766acf69227bd64ca8667ad41ffd6f0", - "url": "https://files.pythonhosted.org/packages/6a/a3/2027858bc93c1e1549f6b1a207fabae25035e21b83f1bfc06b6a61057da5/numpy_quaternion-2023.0.4-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "7f764215c381c2b9d03706023a2a2971fa802af9c2f1c54bfe23cdfe5053c14a", - "url": "https://files.pythonhosted.org/packages/03/88/0d189dce735ab16a3dca9193bb98529b9dfded28861c78d225966e4f74f9/numpy_quaternion-2023.0.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "4b7b97c2be631ea2aa4b8a1061d06562839ae92f4b27c7e66315121ceaeef438", - "url": "https://files.pythonhosted.org/packages/10/9e/cb39cc461d2df0854306a349a6ea5779143e92cf239482c97f3fbdd94a8f/numpy_quaternion-2023.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "6953697db28fa26df84dbc484abd827ac0d258055c14387ebd0592b1e3d36ae0", - "url": "https://files.pythonhosted.org/packages/25/0c/4846fe1fff54905fc2de9c68766469dbb800c3c1e9945ea65183520dd469/numpy_quaternion-2023.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "0dfc980395e230b3ec0ab764ee9417c580efc38e6cb1774f8c81385ecf562e8d", - "url": "https://files.pythonhosted.org/packages/29/4b/950ef7843e4fe2e2d0511b75e9f4ee1f11d194559e401d6d287a33d699a3/numpy_quaternion-2023.0.4-cp312-cp312-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "25bae3075737cf9a37445b3bff792aefd87f7626aeafe399a5c5ab0c8e56df61", - "url": "https://files.pythonhosted.org/packages/60/82/a71aea4192911e2e689463a59605f2c1b8958d05a0cf05285b2c581a76d9/numpy_quaternion-2023.0.4-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "c6fd1f8c8f74637cc1660e1f8b6121b640c2061aac0237cf32021960d80e4d5e", - "url": "https://files.pythonhosted.org/packages/78/e0/6fdac3c6bcdcd248c42d2ce2619240e18262faf08bcd93c86a36a917abb6/numpy_quaternion-2023.0.4-cp311-cp311-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "a5d03e5f11247acd55425b28bc855905bbe1ea7e564d60782252708ea1721383", - "url": "https://files.pythonhosted.org/packages/90/96/1240c9ba095cc7e63b4d2242f1f6524c65fd9d823a44aacb7be899d54df5/numpy-quaternion-2023.0.4.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "b6001d43b3ef6f15ba402cfeec5cabe654c87b458e8b899852b59be60ccddb2f", - "url": "https://files.pythonhosted.org/packages/96/db/1ef4b39f83cf9dda77cc440287287c29857fd32df49a555886a4a2dbafcb/numpy_quaternion-2023.0.4-cp312-cp312-macosx_10_9_x86_64.whl" - }, + "requires_dists": [], + "requires_python": ">=3.9", + "version": "1.26.4" + }, + { + "artifacts": [ { "algorithm": "sha256", - "hash": "6e6ca6f7d0de9499ba33c62a606ddeb625cad146ddd987c8045d35d85c104d08", - "url": "https://files.pythonhosted.org/packages/99/23/f9112b82bfd029c42a14504bebceeafca93fd7ae44a335c7fa6c88c5f3b2/numpy_quaternion-2023.0.4-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "12f39e147c610553ad41815a6cbc5705e29a91f27c2d4ab587e54e3a0e4d5cb7", + "url": "https://files.pythonhosted.org/packages/b3/7d/fb2e06cefad7260179021fde9103e9c5bbeca87cd92a72d45cb02c4eb300/numpy_quaternion-2024.0.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "cc68674de1090f2000dce84c5a807294e286136accb2509a8df205e479a79bcd", - "url": "https://files.pythonhosted.org/packages/be/47/2fe04e3a2b6f1e6d155cb531e49093742f3647fb94428e6808d8bcaa95c9/numpy_quaternion-2023.0.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "214d1792456f3b5738355f09defa90d7130764e8d4abb4a7a5d0b7b3d59300fb", + "url": "https://files.pythonhosted.org/packages/02/63/2a71727726d70f0decb5889d48bcaa24754745afad6a3b73610a129e47c0/numpy_quaternion-2024.0.3-cp312-cp312-macosx_10_13_universal2.whl" }, { "algorithm": "sha256", - "hash": "bf08ab32d8f8b05c9c00b28aea0f83ae6eae7773d4a6218575223f8de3a92908", - "url": "https://files.pythonhosted.org/packages/c5/55/6b66bcb9425d7319a9823f988e02915e231bb70bfd4507e6d4ae6fe38ee4/numpy_quaternion-2023.0.4-cp311-cp311-musllinux_1_2_i686.whl" + "hash": "cf39a8a4506eeda297ca07a508c10c08b3487df851a0e34f070a7bf8fab9f290", + "url": "https://files.pythonhosted.org/packages/86/4c/99e11a59dca7a36056e8efffcc22a63f0a578d06a958d3ec82b5e864da6d/numpy_quaternion-2024.0.3.tar.gz" }, { "algorithm": "sha256", - "hash": "c9726d8d7bfde2ccf1b4b74922d3e59f96c7592591f92b6bea6f7d28d55edbd6", - "url": "https://files.pythonhosted.org/packages/ee/8e/70cc0d744a330a81322b7bd5c9c8c84b65c66f032fe0a87b10086b57df92/numpy_quaternion-2023.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "902afbd64560510be5ef563ba253374e2c51bce37245b4702f0017d019d82ba2", + "url": "https://files.pythonhosted.org/packages/99/f8/a61306b128edd719236edd652016a50f1402982eff31e3d3cace26067504/numpy_quaternion-2024.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "d85ce3c582569d52d5133c29a9b63e12ec457ba47dd188133b7b30857db4f1a8", - "url": "https://files.pythonhosted.org/packages/f0/1a/1142fa59a9862496fb53891b0cfaa88686ea2ffef4852650c35ed9ad5d7e/numpy_quaternion-2023.0.4-cp311-cp311-macosx_10_9_x86_64.whl" + "hash": "bfd64b08027d60a9861db80321fa474f9c20b5b181e61bfb9c60b40132b26257", + "url": "https://files.pythonhosted.org/packages/b6/ba/8284134240cfd37476eaddde6f58a21680e1ec98dd1636318c8e0ef09875/numpy_quaternion-2024.0.3-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "2154b5e96a3214aab3949215216800a101fc5ad9740ab647d0f0790bca5c0213", - "url": "https://files.pythonhosted.org/packages/f6/6f/ad878882b8a8e6a7befc460876d98b1e48e5cba2d9f4e757f52371a5f33a/numpy_quaternion-2023.0.4-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "f366953f33e4d86c2ec6d9024a8ac2bc924c29c8f1d5f1bc4329d408f9994fd5", + "url": "https://files.pythonhosted.org/packages/de/b8/35291839efff99514a5d7bea131b3ab3b395cd2dc77360eb7d36dc4e5b4c/numpy_quaternion-2024.0.3-cp312-cp312-macosx_10_13_x86_64.whl" } ], "project_name": "numpy-quaternion", "requires_dists": [ - "llvmlite<0.32.0; (python_version < \"3.6\" and platform_python_implementation != \"PyPy\") and extra == \"numba\"", - "mkdocs; extra == \"docs\"", - "mktheapidocs[plugin]; extra == \"docs\"", - "numba; (python_version >= \"3.6\" and platform_python_implementation != \"PyPy\") and extra == \"numba\"", - "numba<0.49.0; (python_version < \"3.6\" and platform_python_implementation != \"PyPy\") and extra == \"numba\"", - "numpy<2.0,>=1.13", + "mkdocs-material; extra == \"docs\"", + "mkdocstrings-python; extra == \"docs\"", + "numba>=0.55; implementation_name == \"cpython\"", + "numpy<3,>=1.25", "pymdown-extensions; extra == \"docs\"", - "pytest-cov; extra == \"testing\"", - "pytest; extra == \"testing\"", - "scipy; extra == \"scipy\"" + "scipy<2,>=1.5" ], - "requires_python": null, - "version": "2023.0.4" + "requires_python": ">=3.10", + "version": "2024.0.3" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "8e3d1d1900a8f4d956f6819c246c78081725b9b0888f8549d2a7a49c8daa1303", - "url": "https://files.pythonhosted.org/packages/5c/ba/a4c5986951344f804b5cbd86f0a87d9ea5969e8d13f1e8913e2d8276e0d8/open3d-0.18.0-cp311-cp311-manylinux_2_27_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "b35a68b9fef3e963266db3bb15fbfef20e05787bc61192f61725fde5215f3560", - "url": "https://files.pythonhosted.org/packages/72/31/61ef4fdad29ca6031ecbccbb9c7a23a75f5bec66df79688a03e2765478b2/open3d-0.18.0-cp311-cp311-macosx_10_15_universal2.whl" + "hash": "01e4590dc2209040292ebe509542fbf2bf869ea60bcd9be7a3fe77b65bad3192", + "url": "https://files.pythonhosted.org/packages/2b/95/3723e5ade77c234a1650db11cbe59fe25c4f5af6c224f8ea22ff088bb36a/open3d-0.19.0-cp312-cp312-manylinux_2_31_x86_64.whl" }, { "algorithm": "sha256", - "hash": "2182b818dcd3290dd2ddb0021ad0453bfda99098c931d5b2fc636a341cb3ca70", - "url": "https://files.pythonhosted.org/packages/91/79/7609d49bb8c86d5dcd9684f72449b512d8787708f975fd003acb78c63786/open3d-0.18.0-cp311-cp311-macosx_13_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "882f1e5039a3c1c5ec05183eb650537fd7431238b7ccb2b742ca5479f02f705b", - "url": "https://files.pythonhosted.org/packages/c5/c7/97a2de0176cf9599aa76b3eb5c38943a4bc3e70ada824c8d5d6773108713/open3d-0.18.0-cp311-cp311-manylinux_2_27_aarch64.whl" + "hash": "9e4a8d29443ba4c83010d199d56c96bf553dd970d3351692ab271759cbe2d7ac", + "url": "https://files.pythonhosted.org/packages/37/c5/286c605e087e72ad83eab130451ce13b768caa4374d926dc735edc20da5a/open3d-0.19.0-cp312-cp312-macosx_10_15_universal2.whl" } ], "project_name": "open3d", @@ -3322,6 +2542,7 @@ "addict", "configargparse", "dash>=2.6.0", + "flask>=3.0.0", "ipywidgets>=8.0.4", "matplotlib>=3", "nbformat>=5.7.0", @@ -3334,10 +2555,10 @@ "pyyaml>=5.4.1", "scikit-learn>=0.21", "tqdm", - "werkzeug>=2.2.3" + "werkzeug>=3.0.0" ], "requires_python": ">=3.8", - "version": "0.18.0" + "version": "0.19.0" }, { "artifacts": [ @@ -3473,112 +2694,87 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "730ed5350147db7beb23ddaf072f490329e90a1d059711d364b49fe352ec987b", - "url": "https://files.pythonhosted.org/packages/ad/9b/be8b3d3aec42aa47f6058482ace0d2ca3023477a46643d766e96281d5d31/orjson-3.10.10-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "23458d31fa50ec18e0ec4b0b4343730928296b11111df5f547c75913714116b2", - "url": "https://files.pythonhosted.org/packages/04/b4/538bf6f42eb0fd5a485abbe61e488d401a23fd6d6a758daefcf7811b6807/orjson-3.10.10-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "75c38f5647e02d423807d252ce4528bf6a95bd776af999cb1fb48867ed01d1f6", - "url": "https://files.pythonhosted.org/packages/0e/5e/28f521ee0950d279489db1522e7a2460d0596df7c5ca452e242ff1509cfe/orjson-3.10.10-cp311-cp311-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "0dd57eff09894938b4c86d4b871a479260f9e156fa7f12f8cad4b39ea8028bb5", - "url": "https://files.pythonhosted.org/packages/1d/95/d6a68ab51ed76e3794669dabb51bf7fa6ec2f4745f66e4af4518aeab4b73/orjson-3.10.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + "hash": "e1ba0c5857dd743438acecc1cd0e1adf83f0a81fee558e32b2b36f89e40cee8b", + "url": "https://files.pythonhosted.org/packages/8b/50/fb1a7060b79231c60a688037c2c8e9fe289b5a4378ec1f32cf8d33d9adf8/orjson-3.10.13-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "8564f48f3620861f5ef1e080ce7cd122ee89d7d6dacf25fcae675ff63b4d6e05", - "url": "https://files.pythonhosted.org/packages/21/c6/f1d2ec3ffe9d6a23a62af0477cd11dd2926762e0186a1fad8658a4f48117/orjson-3.10.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl" + "hash": "a3614b00621c77f3f6487792238f9ed1dd8a42f2ec0e6540ee34c2d4e6db813a", + "url": "https://files.pythonhosted.org/packages/35/84/adf8842cf36904e6200acff76156862d48d39705054c1e7c5fa98fe14417/orjson-3.10.13-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl" }, { "algorithm": "sha256", - "hash": "019481fa9ea5ff13b5d5d95e6fd5ab25ded0810c80b150c2c7b1cc8660b662a7", - "url": "https://files.pythonhosted.org/packages/3d/2b/5af226f183ce264bf64f15afe58647b09263dc1bde06aaadae6bbeca17f1/orjson-3.10.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "5f74d878d1efb97a930b8a9f9898890067707d683eb5c7e20730030ecb3fb930", + "url": "https://files.pythonhosted.org/packages/39/67/6f05de77dd383cb623e2807bceae13f136e9f179cd32633b7a27454e953f/orjson-3.10.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" }, { "algorithm": "sha256", - "hash": "c5bf161a32b479034098c5b81f2608f09167ad2fa1c06abd4e527ea6bf4837a9", - "url": "https://files.pythonhosted.org/packages/52/01/eba0226efaa4d4be8e44d9685750428503a3803648878fa5607100a74f81/orjson-3.10.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "eb9bfb14ab8f68d9d9492d4817ae497788a15fd7da72e14dfabc289c3bb088ec", + "url": "https://files.pythonhosted.org/packages/45/0b/8c7eaf1e2152f1e0fb28ae7b22e2b35a6b1992953a1ebe0371ba4d41d3ad/orjson-3.10.13.tar.gz" }, { "algorithm": "sha256", - "hash": "879e99486c0fbb256266c7c6a67ff84f46035e4f8749ac6317cc83dacd7f993a", - "url": "https://files.pythonhosted.org/packages/79/bc/2a0eb0029729f1e466d5a595261446e5c5b6ed9213759ee56b6202f99417/orjson-3.10.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl" + "hash": "c0044b0b8c85a565e7c3ce0a72acc5d35cda60793edf871ed94711e712cb637d", + "url": "https://files.pythonhosted.org/packages/47/0b/838c00ec7f048527aa0382299cd178bbe07c2cb1024b3111883e85d56d1f/orjson-3.10.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl" }, { "algorithm": "sha256", - "hash": "37949383c4df7b4337ce82ee35b6d7471e55195efa7dcb45ab8226ceadb0fe3b", - "url": "https://files.pythonhosted.org/packages/80/44/d36e86b33fc84f224b5f2cdf525adf3b8f9f475753e721c402b1ddef731e/orjson-3.10.10.tar.gz" + "hash": "064b9dbb0217fd64a8d016a8929f2fae6f3312d55ab3036b00b1d17399ab2f3e", + "url": "https://files.pythonhosted.org/packages/48/90/e583d6e29937ec30a164f1d86a0439c1a2477b5aae9f55d94b37a4f5b5f0/orjson-3.10.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "dbf3c20c6a7db69df58672a0d5815647ecf78c8e62a4d9bd284e8621c1fe5ccb", - "url": "https://files.pythonhosted.org/packages/8a/1e/b3abbe352f648f96a418acd1e602b1c77ffcc60cf801a57033da990b2c49/orjson-3.10.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "9c976bad3996aa027cd3aef78aa57873f3c959b6c38719de9724b71bdc7bd14b", + "url": "https://files.pythonhosted.org/packages/69/2f/22ac0c5f46748e9810287a5abaeabdd67f1120a74140db7d529582c92342/orjson-3.10.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "e4d0d9fe174cc7a5bdce2e6c378bcdb4c49b2bf522a8f996aa586020e1b96cee", - "url": "https://files.pythonhosted.org/packages/9f/e7/65a0461574078a38f204575153524876350f0865162faa6e6e300ecaa199/orjson-3.10.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" + "hash": "dd2bcde107221bb9c2fa0c4aaba735a537225104173d7e19cf73f70b3126c993", + "url": "https://files.pythonhosted.org/packages/91/fd/7bdbc0aa374d49cdb917ee51c80851c99889494be81d5e7ec9f5f9cbe149/orjson-3.10.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, { "algorithm": "sha256", - "hash": "3b2625cb37b8fb42e2147404e5ff7ef08712099197a9cd38895006d7053e69d6", - "url": "https://files.pythonhosted.org/packages/bf/22/e17b14ff74646e6c080dccb2859686a820bc6468f6b62ea3fe29a8bd3b05/orjson-3.10.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + "hash": "7184f608ad563032e398f311910bc536e62b9fbdca2041be889afcbc39500de8", + "url": "https://files.pythonhosted.org/packages/ac/90/df06ac390f319a61d55a7a4efacb5d7082859f6ea33f0fdd5181ad0dde0c/orjson-3.10.13-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "dbde6d70cd95ab4d11ea8ac5e738e30764e510fc54d777336eec09bb93b8576c", - "url": "https://files.pythonhosted.org/packages/c0/c9/1bbe5262f5e9df3e1aeec44ca8cc86846c7afb2746fa76bf668a7d0979e9/orjson-3.10.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + "hash": "54433e421618cd5873e51c0e9d0b9fb35f7bf76eb31c8eab20b3595bb713cd3d", + "url": "https://files.pythonhosted.org/packages/b8/cf/aa93b48801b2e42da223ef5a99b3e4970b02e7abea8509dd2a6a083e27fa/orjson-3.10.13-cp312-cp312-musllinux_1_2_i686.whl" }, { "algorithm": "sha256", - "hash": "68b65c93617bcafa7f04b74ae8bc2cc214bd5cb45168a953256ff83015c6747d", - "url": "https://files.pythonhosted.org/packages/da/4b/a705f9d3ae4786955ee0ac840b20960add357e612f1b0a54883d1811fe1a/orjson-3.10.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + "hash": "d36f689e7e1b9b6fb39dbdebc16a6f07cbe994d3644fb1c22953020fc575935f", + "url": "https://files.pythonhosted.org/packages/ea/68/eafb5e2fc84aafccfbd0e9e0552ff297ef5f9b23c7f2600cc374095a50de/orjson-3.10.13-cp312-cp312-musllinux_1_2_armv7l.whl" }, { "algorithm": "sha256", - "hash": "b3be81c42f1242cbed03cbb3973501fcaa2675a0af638f8be494eaf37143d999", - "url": "https://files.pythonhosted.org/packages/dd/99/85780be173e7014428859ba0211e6f2a8f8038ea6ebabe344b42d5daa277/orjson-3.10.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "e8e28406f97fc2ea0c6150f4c1b6e8261453318930b334abc419214c82314f85", - "url": "https://files.pythonhosted.org/packages/de/6c/eb405252e7d9ae9905a12bad582cfe37ef8ef18fdfee941549cb5834c7b2/orjson-3.10.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "65f9886d3bae65be026219c0a5f32dbbe91a9e6272f56d092ab22561ad0ea33b", - "url": "https://files.pythonhosted.org/packages/ed/c0/c7c42a2daeb262da417f70064746b700786ee0811b9a5821d9d37543b29d/orjson-3.10.10-cp312-cp312-musllinux_1_2_aarch64.whl" + "hash": "33ef84f7e9513fb13b3999c2a64b9ca9c8143f3da9722fbf9c9ce51ce0d8076e", + "url": "https://files.pythonhosted.org/packages/f8/5c/b5e144e9adbb1dc7d1fdf54af9510756d09b65081806f905d300a926a755/orjson-3.10.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" } ], "project_name": "orjson", "requires_dists": [], "requires_python": ">=3.8", - "version": "3.10.10" + "version": "3.10.13" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", - "url": "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl" + "hash": "09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", + "url": "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", - "url": "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz" + "hash": "c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", + "url": "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz" } ], "project_name": "packaging", "requires_dists": [], "requires_python": ">=3.8", - "version": "24.1" + "version": "24.2" }, { "artifacts": [ @@ -3602,46 +2798,16 @@ "hash": "fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", "url": "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698", - "url": "https://files.pythonhosted.org/packages/45/fb/c4beeb084718598ba19aa9f5abbc8aed8b42f90930da861fcb1acdb54c3a/pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd", - "url": "https://files.pythonhosted.org/packages/52/11/9eac327a38834f162b8250aab32a6781339c69afe7574368fffe46387edf/pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32", - "url": "https://files.pythonhosted.org/packages/86/4a/03ed6b7ee323cf30404265c284cee9c65c56a212e0a08d9ee06984ba2240/pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl" - }, { "algorithm": "sha256", "hash": "4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", "url": "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz" }, - { - "algorithm": "sha256", - "hash": "66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", - "url": "https://files.pythonhosted.org/packages/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3", - "url": "https://files.pythonhosted.org/packages/b9/57/708135b90391995361636634df1f1130d03ba456e95bcf576fada459115a/pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl" - }, { "algorithm": "sha256", "hash": "5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", "url": "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc", - "url": "https://files.pythonhosted.org/packages/cd/5f/4dba1d39bb9c38d574a9a22548c540177f78ea47b32f99c0ff2ec499fac5/pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, { "algorithm": "sha256", "hash": "a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", @@ -3828,11 +2994,6 @@ "hash": "86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", "url": "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", - "url": "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, { "algorithm": "sha256", "hash": "f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", @@ -3843,31 +3004,6 @@ "hash": "29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", "url": "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, - { - "algorithm": "sha256", - "hash": "0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", - "url": "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", - "url": "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", - "url": "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", - "url": "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", - "url": "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - }, { "algorithm": "sha256", "hash": "166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", @@ -3877,16 +3013,6 @@ "algorithm": "sha256", "hash": "866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", "url": "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", - "url": "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", - "url": "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" } ], "project_name": "pillow", @@ -4142,31 +3268,31 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "e592952ae0297e456c587b6486ed8c3e5f9d0c3519d517bb92dde5fdf4c26b41", - "url": "https://files.pythonhosted.org/packages/2a/03/17a5cc013b9dbe531f5e64e026f7ec4143ffcd77ae055a0c07e6211cb3d6/pyglet-2.0.18-py3-none-any.whl" + "hash": "341cdc506fe97c4d8c4fb35aac89cefcb0ca6bf59eddcf2d1078c327dde1f02e", + "url": "https://files.pythonhosted.org/packages/d3/21/6583a53b9910ece5fd6db9590ae88dc24fd0d5ef76f7c6717b8761388fb8/pyglet-2.0.20-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "7cf9238d70082a2da282759679f8a011cc979753a32224a8ead8ed80e48f99dc", - "url": "https://files.pythonhosted.org/packages/02/f5/2e29be2bf0cbf32ffc5eec0b3ce01cc271428c33f452ce69629ab61556d0/pyglet-2.0.18.tar.gz" + "hash": "702ea52b1fc1b6447904d2edd579212b29f1b3475e098ac49b57647a064accb7", + "url": "https://files.pythonhosted.org/packages/f7/f4/9ff17629bbb818d6fd88f1d74ef117d4eba3bee8a54c14265f86a6c18f86/pyglet-2.0.20.tar.gz" } ], "project_name": "pyglet", "requires_dists": [], "requires_python": ">=3.8", - "version": "2.0.18" + "version": "2.0.20" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "url": "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + "hash": "9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", + "url": "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "url": "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + "hash": "61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", + "url": "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz" } ], "project_name": "pygments", @@ -4174,7 +3300,7 @@ "colorama>=0.4.6; extra == \"windows-terminal\"" ], "requires_python": ">=3.8", - "version": "2.18.0" + "version": "2.19.1" }, { "artifacts": [ @@ -4198,19 +3324,19 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "dfb45ef9a2c1663875ad32378f780b5824628cd3c0a486851e64b8a3341a3e82", - "url": "https://files.pythonhosted.org/packages/07/0a/b57434ae7ecc83a854f0431a380964a575a6474197211d2bae3fa0529484/pymodbus-3.7.4-py3-none-any.whl" + "hash": "68df4a8d32e14a9eca2277141e0e129c019b0c5ad3540c2fd69ae7df2b13a2fb", + "url": "https://files.pythonhosted.org/packages/26/93/e444458244d41d0050c481cd35d3adca14ccd8a45c5eba9b0b39b04a9ca2/pymodbus-3.8.3-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "573c370aea04523403eea1e159616a583cd7b93cfc5c81b07340d3cccd52c99f", - "url": "https://files.pythonhosted.org/packages/0b/bc/f98789706351e778676a3e84ed6203160c4f581092e298eb075bc9e08230/pymodbus-3.7.4.tar.gz" + "hash": "d886186bf7c3cc140f17e830919c23e4cc88334fbb91d6e5e1d7dd05860fe2c8", + "url": "https://files.pythonhosted.org/packages/f7/c7/95ad9774e7ba8547f52d657b09fee7fa02d87532866f561c6d2bb9068b8c/pymodbus-3.8.3.tar.gz" } ], "project_name": "pymodbus", "requires_dists": [ "Sphinx>=7.3.7; extra == \"documentation\"", - "aiohttp>=3.10.5; python_version >= \"3.12\" and extra == \"simulator\"", + "aiohttp>=3.10.6; python_version >= \"3.12\" and extra == \"simulator\"", "aiohttp>=3.8.6; python_version < \"3.12\" and extra == \"simulator\"", "build>=1.2.2; extra == \"development\"", "codespell>=2.3.0; extra == \"development\"", @@ -4228,14 +3354,14 @@ "pytest-xdist>=3.6.1; extra == \"development\"", "pytest>=8.3.3; extra == \"development\"", "recommonmark>=0.7.1; extra == \"documentation\"", - "ruff>=0.5.3; extra == \"development\"", + "ruff>=0.8.2; extra == \"development\"", "sphinx-rtd-theme>=2.0.0; extra == \"documentation\"", "twine>=5.1.1; extra == \"development\"", "types-Pygments; extra == \"development\"", "types-pyserial; extra == \"development\"" ], "requires_python": ">=3.9.0", - "version": "3.7.4" + "version": "3.8.3" }, { "artifacts": [ @@ -4259,13 +3385,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84", - "url": "https://files.pythonhosted.org/packages/be/ec/2eb3cd785efd67806c46c13a17339708ddc346cbb684eade7a6e6f79536a/pyparsing-3.2.0-py3-none-any.whl" + "hash": "506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", + "url": "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c", - "url": "https://files.pythonhosted.org/packages/8c/d5/e5aeee5387091148a19e1145f63606619cb5f20b83fccb63efae6474e7b2/pyparsing-3.2.0.tar.gz" + "hash": "61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a", + "url": "https://files.pythonhosted.org/packages/8b/1a/3544f4f299a47911c2ab3710f534e52fea62a633c96806995da5d25be4b2/pyparsing-3.2.1.tar.gz" } ], "project_name": "pyparsing", @@ -4274,7 +3400,7 @@ "railroad-diagrams; extra == \"diagrams\"" ], "requires_python": ">=3.9", - "version": "3.2.0" + "version": "3.2.1" }, { "artifacts": [ @@ -4387,13 +3513,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", - "url": "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl" + "hash": "50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", + "url": "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", - "url": "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz" + "hash": "965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", + "url": "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz" } ], "project_name": "pytest", @@ -4414,19 +3540,19 @@ "xmlschema; extra == \"dev\"" ], "requires_python": ">=3.8", - "version": "8.3.3" + "version": "8.3.4" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", - "url": "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl" + "hash": "0d0bb693f7b99da304a0634afc0a4b19e49d5e0de2d670f38dc4bfa5727c5075", + "url": "https://files.pythonhosted.org/packages/61/d8/defa05ae50dcd6019a95527200d3b3980043df5aa445d40cb0ef9f7f98ab/pytest_asyncio-0.25.2-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", - "url": "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz" + "hash": "3f8ef9a98f45948ea91a0ed3dc4268b5326c0e7bce73892acc654df4262ad45f", + "url": "https://files.pythonhosted.org/packages/72/df/adcc0d60f1053d74717d21d58c0048479e9cab51464ce0d2965b086bd0e2/pytest_asyncio-0.25.2.tar.gz" } ], "project_name": "pytest-asyncio", @@ -4434,32 +3560,32 @@ "coverage>=6.2; extra == \"testing\"", "hypothesis>=5.7.1; extra == \"testing\"", "pytest<9,>=8.2", - "sphinx-rtd-theme>=1.0; extra == \"docs\"", + "sphinx-rtd-theme>=1; extra == \"docs\"", "sphinx>=5.3; extra == \"docs\"" ], - "requires_python": ">=3.8", - "version": "0.24.0" + "requires_python": ">=3.9", + "version": "0.25.2" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6", - "url": "https://files.pythonhosted.org/packages/24/d3/00e575657422055c4ea220b2f80e8cc6026ab7130372b7067444d1b0ac10/pytest_randomly-3.15.0-py3-none-any.whl" + "hash": "8633d332635a1a0983d3bba19342196807f6afb17c3eef78e02c2f85dade45d6", + "url": "https://files.pythonhosted.org/packages/22/70/b31577d7c46d8e2f9baccfed5067dd8475262a2331ffb0bfdf19361c9bde/pytest_randomly-3.16.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047", - "url": "https://files.pythonhosted.org/packages/c9/d4/6e924a0b2855736d942703dec88dfc98b4fe0881c8fa849b6b0fbb9182fa/pytest_randomly-3.15.0.tar.gz" + "hash": "11bf4d23a26484de7860d82f726c0629837cf4064b79157bd18ec9d41d7feb26", + "url": "https://files.pythonhosted.org/packages/c0/68/d221ed7f4a2a49a664da721b8e87b52af6dd317af2a6cb51549cf17ac4b8/pytest_randomly-3.16.0.tar.gz" } ], "project_name": "pytest-randomly", "requires_dists": [ - "importlib-metadata>=3.6.0; python_version < \"3.10\"", + "importlib-metadata>=3.6; python_version < \"3.10\"", "pytest" ], - "requires_python": ">=3.8", - "version": "3.15.0" + "requires_python": ">=3.9", + "version": "3.16.0" }, { "artifacts": [ @@ -4526,56 +3652,26 @@ "hash": "8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", "url": "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", - "url": "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", - "url": "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - }, { "algorithm": "sha256", "hash": "d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", "url": "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz" }, - { - "algorithm": "sha256", - "hash": "3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", - "url": "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, { "algorithm": "sha256", "hash": "c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", "url": "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", - "url": "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl" - }, { "algorithm": "sha256", "hash": "9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", "url": "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, - { - "algorithm": "sha256", - "hash": "ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", - "url": "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl" - }, { "algorithm": "sha256", "hash": "ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", "url": "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl" }, - { - "algorithm": "sha256", - "hash": "5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", - "url": "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, { "algorithm": "sha256", "hash": "80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", @@ -4590,11 +3686,6 @@ "algorithm": "sha256", "hash": "0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", "url": "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", - "url": "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl" } ], "project_name": "pyyaml", @@ -4648,26 +3739,6 @@ "requires_python": ">=3.8", "version": "2.32.3" }, - { - "artifacts": [ - { - "algorithm": "sha256", - "hash": "8cc4d43cb8e1125e0ff3344e9de678fefd85db3b750b81b2240dc0183af37b35", - "url": "https://files.pythonhosted.org/packages/8f/04/9e36f28be4c0532c0e9207ff9dc01fb13a2b0eb036476a213b0000837d0e/retrying-1.3.4-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "345da8c5765bd982b1d1915deb9102fd3d1f7ad16bd84a9700b85f64d24e8f3e", - "url": "https://files.pythonhosted.org/packages/ce/70/15ce8551d65b324e18c5aa6ef6998880f21ead51ebe5ed743c0950d7d9dd/retrying-1.3.4.tar.gz" - } - ], - "project_name": "retrying", - "requires_dists": [ - "six>=1.7.0" - ], - "requires_python": null, - "version": "1.3.4" - }, { "artifacts": [ { @@ -4692,171 +3763,96 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174", - "url": "https://files.pythonhosted.org/packages/70/2d/5536d28c507a4679179ab15aa0049440e4d3dd6752050fa0843ed11e9354/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821", - "url": "https://files.pythonhosted.org/packages/08/31/6d0df9356b4edb0a3a077f1ef714e25ad21f9f5382fc490c2383691885ea/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739", - "url": "https://files.pythonhosted.org/packages/0e/1c/6039e80b13a08569a304dc13476dc986352dca4598e909384db043b4e2bb/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318", - "url": "https://files.pythonhosted.org/packages/0e/6a/2c9fdcc6d235ac0d61ec4fd9981184689c3e682abd05e3caa49bccb9c298/rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4", - "url": "https://files.pythonhosted.org/packages/0f/f7/a59a673594e6c2ff2dbc44b00fd4ecdec2fc399bb6a7bd82d612699a0121/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3", - "url": "https://files.pythonhosted.org/packages/4f/87/1ac631e923d65cbf36fbcfc6eaa702a169496de1311e54be142f178e53ee/rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5", - "url": "https://files.pythonhosted.org/packages/52/28/356f6a39c1adeb02cf3e5dd526f5e8e54e17899bef045397abcfbf50dffa/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121", - "url": "https://files.pythonhosted.org/packages/55/64/b693f262791b818880d17268f3f8181ef799b0d187f6f731b1772e05a29a/rpds_py-0.20.0.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef", - "url": "https://files.pythonhosted.org/packages/5f/61/3ba1905396b2cb7088f9503a460b87da33452da54d478cb9241f6ad16d00/rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5", - "url": "https://files.pythonhosted.org/packages/7a/8c/668195ab9226d01b7cf7cd9e59c1c0be1df05d602df7ec0cf46f857dcf59/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" - }, - { - "algorithm": "sha256", - "hash": "50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee", - "url": "https://files.pythonhosted.org/packages/7b/dd/0e0dbeb70d8a5357d2814764d467ded98d81d90d3570de4fb05ec7224f6b/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" - }, - { - "algorithm": "sha256", - "hash": "a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6", - "url": "https://files.pythonhosted.org/packages/89/b7/f9682c5cc37fcc035f4a0fc33c1fe92ec9cbfdee0cdfd071cf948f53e0df/rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl" + "hash": "8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", + "url": "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad", - "url": "https://files.pythonhosted.org/packages/90/d7/4112d7655ec8aff168ecc91d4ceb51c557336edde7e6ccf6463691a2f253/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl" + "hash": "e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", + "url": "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz" }, { "algorithm": "sha256", - "hash": "1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6", - "url": "https://files.pythonhosted.org/packages/a2/65/640fb1a89080a8fb6f4bebd3dafb65a2edba82e2e44c33e6eb0f3e7956f1/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + "hash": "0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", + "url": "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl" }, { "algorithm": "sha256", - "hash": "5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209", - "url": "https://files.pythonhosted.org/packages/a7/e8/85835077b782555d6b3416874b702ea6ebd7db1f145283c9252968670dd5/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", + "url": "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489", - "url": "https://files.pythonhosted.org/packages/ab/2a/191374c52d7be0b056cc2a04d718d2244c152f915d4a8d2db2aacc526189/rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl" + "hash": "feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", + "url": "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" }, { "algorithm": "sha256", - "hash": "d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58", - "url": "https://files.pythonhosted.org/packages/ab/44/4f61d64dfed98cc71623f3a7fcb612df636a208b4b2c6611eaa985e130a9/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl" + "hash": "3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", + "url": "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" }, { "algorithm": "sha256", - "hash": "e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940", - "url": "https://files.pythonhosted.org/packages/ae/15/d33c021de5cb793101df9961c3c746dfc476953dbbf5db337d8010dffd4e/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl" + "hash": "27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", + "url": "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl" }, { "algorithm": "sha256", - "hash": "56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b", - "url": "https://files.pythonhosted.org/packages/b8/ad/fc82be4eaceb8d444cb6fc1956ce972b3a0795104279de05e0e4131d0a47/rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", + "url": "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db", - "url": "https://files.pythonhosted.org/packages/d2/b2/725487d29633f64ef8f9cbf4729111a0b61702c8f8e94db1653930f52cce/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", + "url": "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c", - "url": "https://files.pythonhosted.org/packages/dc/c9/5b9aa35acfb58946b4b785bc8e700ac313669e02fb100f3efa6176a83e81/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + "hash": "22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", + "url": "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272", - "url": "https://files.pythonhosted.org/packages/e4/ce/cb316f7970189e217b998191c7cf0da2ede3d5437932c86a7210dc1e9994/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl" + "hash": "f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", + "url": "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96", - "url": "https://files.pythonhosted.org/packages/e4/da/a47d931eb688ccfd77a7389e45935c79c41e8098d984d87335004baccb1d/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl" + "hash": "02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", + "url": "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl" } ], "project_name": "rpds-py", "requires_dists": [], - "requires_python": ">=3.8", - "version": "0.20.0" + "requires_python": ">=3.9", + "version": "0.22.3" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6", - "url": "https://files.pythonhosted.org/packages/c6/29/044048c5e911373827c0e1d3051321b9183b2a4f8d4e2f11c08fcff83f13/scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "b4237ed7b3fdd0a4882792e68ef2545d5baa50aca3bb45aa7df468138ad8f94d", - "url": "https://files.pythonhosted.org/packages/37/59/44985a2bdc95c74e34fef3d10cb5d93ce13b0e2a7baefffe1b53853b502d/scikit_learn-1.5.2.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "f8b0ccd4a902836493e026c03256e8b206656f91fbcc4fde28c57a5b752561f1", - "url": "https://files.pythonhosted.org/packages/49/21/3723de321531c9745e40f1badafd821e029d346155b6c79704e0b7197552/scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "1dad624cffe3062276a0881d4e441bc9e3b19d02d17757cd6ae79a9d192a0027", + "url": "https://files.pythonhosted.org/packages/17/0e/e6bb84074f1081245a165c0ee775ecef24beae9d2f2e24bcac0c9f155f13/scikit_learn-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "f763897fe92d0e903aa4847b0aec0e68cadfff77e8a0687cabd946c89d17e675", - "url": "https://files.pythonhosted.org/packages/4c/75/62e49f8a62bf3c60b0e64d0fce540578ee4f0e752765beb2e1dc7c6d6098/scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "04a5ba45c12a5ff81518aa4f1604e826a45d20e53da47b15871526cda4ff5174", + "url": "https://files.pythonhosted.org/packages/18/0c/a5de627aa57b028aea7026cb3bbeaf63be3158adc118212d6cc7843d939a/scikit_learn-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "3b923d119d65b7bd555c73be5423bf06c0105678ce7e1f558cb4b40b0a5502b1", - "url": "https://files.pythonhosted.org/packages/54/1a/7deb52fa23aebb855431ad659b3c6a2e1709ece582cb3a63d66905e735fe/scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl" + "hash": "30f34bb5fde90e020653bb84dcb38b6c83f90c70680dbd8c38bd9becbad7a127", + "url": "https://files.pythonhosted.org/packages/70/28/77b071f541d75247e6c3403f19aaa634371e972691f6aa1838ca9fd4cc52/scikit_learn-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd", - "url": "https://files.pythonhosted.org/packages/a1/32/4a7a205b14c11225609b75b28402c196e4396ac754dab6a81971b811781c/scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "21fadfc2ad7a1ce8bd1d90f23d17875b84ec765eecbbfc924ff11fb73db582ce", + "url": "https://files.pythonhosted.org/packages/a3/7d/02a96e6fb28ddb213e84b1b4a44148d26ec96fc9db9c74e050277e009892/scikit_learn-1.6.0-cp312-cp312-macosx_12_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "f932a02c3f4956dfb981391ab24bda1dbd90fe3d628e4b42caef3e041c67707a", - "url": "https://files.pythonhosted.org/packages/a4/db/b485c1ac54ff3bd9e7e6b39d3cc6609c4c76a65f52ab0a7b22b6c3ab0e9d/scikit_learn-1.5.2-cp312-cp312-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "1ff45e26928d3b4eb767a8f14a9a6efbf1cbff7c05d1fb0f95f211a89fd4f5de", - "url": "https://files.pythonhosted.org/packages/cd/7a/19fe32c810c5ceddafcfda16276d98df299c8649e24e84d4f00df4a91e01/scikit_learn-1.5.2-cp311-cp311-macosx_12_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "03b6158efa3faaf1feea3faa884c840ebd61b6484167c711548fce208ea09445", - "url": "https://files.pythonhosted.org/packages/ff/91/609961972f694cb9520c4c3d201e377a26583e1eb83bc5a334c893729214/scikit_learn-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl" + "hash": "9d58481f9f7499dff4196927aedd4285a0baec8caa3790efbe205f13de37dd6e", + "url": "https://files.pythonhosted.org/packages/fa/19/5aa2002044afc297ecaf1e3517ed07bba4aece3b5613b5160c1212995fc8/scikit_learn-1.6.0.tar.gz" } ], "project_name": "scikit-learn", @@ -4896,7 +3892,7 @@ "pydata-sphinx-theme>=0.15.3; extra == \"docs\"", "pytest-cov>=2.9.0; extra == \"tests\"", "pytest>=7.1.2; extra == \"tests\"", - "ruff>=0.2.1; extra == \"tests\"", + "ruff>=0.5.1; extra == \"tests\"", "scikit-image>=0.17.2; extra == \"docs\"", "scikit-image>=0.17.2; extra == \"examples\"", "scikit-image>=0.17.2; extra == \"tests\"", @@ -4908,107 +3904,74 @@ "sphinx-copybutton>=0.5.2; extra == \"docs\"", "sphinx-design>=0.5.0; extra == \"docs\"", "sphinx-design>=0.6.0; extra == \"docs\"", - "sphinx-gallery>=0.16.0; extra == \"docs\"", + "sphinx-gallery>=0.17.1; extra == \"docs\"", "sphinx-prompt>=1.4.0; extra == \"docs\"", "sphinx-remove-toctrees>=1.0.0.post1; extra == \"docs\"", "sphinx>=7.3.7; extra == \"docs\"", "sphinxcontrib-sass>=0.3.4; extra == \"docs\"", "sphinxext-opengraph>=0.9.1; extra == \"docs\"", "threadpoolctl>=3.1.0", - "threadpoolctl>=3.1.0; extra == \"install\"" + "threadpoolctl>=3.1.0; extra == \"install\"", + "towncrier>=24.8.0; extra == \"docs\"" ], "requires_python": ">=3.9", - "version": "1.5.2" + "version": "1.6.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "edaf02b82cd7639db00dbff629995ef185c8df4c3ffa71a5562a595765a06ce1", - "url": "https://files.pythonhosted.org/packages/a5/cd/06f72bc9187840f1c99e1a8750aad4216fc7dfdd7df46e6280add14b4822/scipy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "b05d43735bb2f07d689f56f7b474788a13ed8adc484a85aa65c0fd931cf9ccd2", - "url": "https://files.pythonhosted.org/packages/06/57/e6aa6f55729a8f245d8a6984f2855696c5992113a5dc789065020f8be753/scipy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "8475230e55549ab3f207bff11ebfc91c805dc3463ef62eda3ccf593254524ce8", - "url": "https://files.pythonhosted.org/packages/5e/fc/9f1413bef53171f379d786aabc104d4abeea48ee84c553a3e3d8c9f96a9c/scipy-1.14.1-cp311-cp311-macosx_14_0_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417", - "url": "https://files.pythonhosted.org/packages/62/11/4d44a1f274e002784e4dbdb81e0ea96d2de2d1045b2132d5af62cc31fd28/scipy-1.14.1.tar.gz" - }, - { - "algorithm": "sha256", - "hash": "2843f2d527d9eebec9a43e6b406fb7266f3af25a751aa91d62ff416f54170bc5", - "url": "https://files.pythonhosted.org/packages/66/67/6ef192e0e4d77b20cc33a01e743b00bc9e68fb83b88e06e636d2619a8767/scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "8f9ea80f2e65bdaa0b7627fb00cbeb2daf163caa015e59b7516395fe3bd1e066", - "url": "https://files.pythonhosted.org/packages/8e/ee/8a26858ca517e9c64f84b4c7734b89bda8e63bec85c3d2f432d225bb1886/scipy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "fef8c87f8abfb884dac04e97824b61299880c43f4ce675dd2cbeadd3c9b466d2", - "url": "https://files.pythonhosted.org/packages/93/6b/701776d4bd6bdd9b629c387b5140f006185bd8ddea16788a44434376b98f/scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2", - "url": "https://files.pythonhosted.org/packages/a7/c5/02ac82f9bb8f70818099df7e86c3ad28dae64e1347b421d8e3adf26acab6/scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl" + "hash": "161f80a98047c219c257bf5ce1777c574bde36b9d962a46b20d0d7e531f86863", + "url": "https://files.pythonhosted.org/packages/8c/9f/f1544110a3d31183034e05422836505beb438aa56183f2ccef6dcd3b4e3f/scipy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675", - "url": "https://files.pythonhosted.org/packages/b2/ab/070ccfabe870d9f105b04aee1e2860520460ef7ca0213172abfe871463b9/scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl" + "hash": "52475011be29dfcbecc3dfe3060e471ac5155d72e9233e8d5616b84e2b542054", + "url": "https://files.pythonhosted.org/packages/30/22/e3dadf189dcab215be461efe0fd9d288f4c2d99783c4aec2ce80837800b7/scipy-1.15.0-cp312-cp312-macosx_14_0_x86_64.whl" }, { "algorithm": "sha256", - "hash": "631f07b3734d34aced009aaf6fedfd0eb3498a97e581c3b1e5f14a04164a456d", - "url": "https://files.pythonhosted.org/packages/c0/04/2bdacc8ac6387b15db6faa40295f8bd25eccf33f1f13e68a72dc3c60a99e/scipy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl" + "hash": "5beb0a2200372b7416ec73fdae94fe81a6e85e44eb49c35a11ac356d2b8eccc6", + "url": "https://files.pythonhosted.org/packages/35/70/fffb90a725dec6056c9059073856fd99de22a253459a874a63b8b8a012db/scipy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "278266012eb69f4a720827bdd2dc54b2271c97d84255b2faaa8f161a158c3b37", - "url": "https://files.pythonhosted.org/packages/c2/4b/b44bee3c2ddc316b0159b3d87a3d467ef8d7edfd525e6f7364a62cd87d90/scipy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "5972e3f96f7dda4fd3bb85906a17338e65eaddfe47f750e240f22b331c08858e", + "url": "https://files.pythonhosted.org/packages/51/0f/71c9ee2acaac0660a79e36424d367ed5737e4ef27b885f96cd439f451467/scipy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "af29a935803cc707ab2ed7791c44288a682f9c8107bc00f0eccc4f92c08d6e07", - "url": "https://files.pythonhosted.org/packages/c8/53/35b4d41f5fd42f5781dbd0dd6c05d35ba8aa75c84ecddc7d44756cd8da2e/scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl" + "hash": "fde0f3104dfa1dfbc1f230f65506532d0558d43188789eaf68f97e106249a913", + "url": "https://files.pythonhosted.org/packages/63/ca/6b838a2e5e6718d879e8522d1155a068c2a769be04f7da8c5179ead32a7b/scipy-1.15.0-cp312-cp312-macosx_12_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617", - "url": "https://files.pythonhosted.org/packages/ed/05/7f03e680cc5249c4f96c9e4e845acde08eb1aee5bc216eff8a089baa4ddb/scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl" + "hash": "35c68f7044b4e7ad73a3e68e513dda946989e523df9b062bd3cf401a1a882192", + "url": "https://files.pythonhosted.org/packages/b1/07/4e69f6f7185915d77719bf226c1d554a4bb99f27cb92161fdd57b1434343/scipy-1.15.0-cp312-cp312-macosx_14_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "30ac8812c1d2aab7131a79ba62933a2a76f582d5dbbc695192453dae67ad6310", - "url": "https://files.pythonhosted.org/packages/f0/5a/efa92a58dc3a2898705f1dc9dbaf390ca7d4fba26d6ab8cfffb0c72f656f/scipy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "300742e2cc94e36a2880ebe464a1c8b4352a7b0f3e36ec3d2ac006cdbe0219ac", + "url": "https://files.pythonhosted.org/packages/d9/7b/2b8ac283cf32465ed08bc20a83d559fe7b174a484781702ba8accea001d6/scipy-1.15.0.tar.gz" }, { "algorithm": "sha256", - "hash": "eb58ca0abd96911932f688528977858681a59d61a7ce908ffd355957f7025cfc", - "url": "https://files.pythonhosted.org/packages/f6/32/3a6dedd51d68eb7b8e7dc7947d5d841bcb699f1bf4463639554986f4d782/scipy-1.14.1-cp312-cp312-macosx_14_0_x86_64.whl" + "hash": "fe00169cf875bed0b3c40e4da45b57037dc21d7c7bf0c85ed75f210c281488f1", + "url": "https://files.pythonhosted.org/packages/fb/77/74a1ceecb205f5d46fe2cd10071383748ee8891a96b7824a372391a6291c/scipy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" } ], "project_name": "scipy", "requires_dists": [ "Cython; extra == \"test\"", - "array-api-strict>=2.0; extra == \"test\"", + "array-api-strict<2.1.1,>=2.0; extra == \"test\"", "asv; extra == \"test\"", "cython-lint>=0.12.2; extra == \"dev\"", "doit>=0.36.0; extra == \"dev\"", "gmpy2; extra == \"test\"", "hypothesis>=6.30; extra == \"test\"", + "intersphinx_registry; extra == \"doc\"", "jupyterlite-pyodide-kernel; extra == \"doc\"", - "jupyterlite-sphinx>=0.13.1; extra == \"doc\"", + "jupyterlite-sphinx>=0.16.5; extra == \"doc\"", "jupytext; extra == \"doc\"", "matplotlib>=3.5; extra == \"doc\"", "meson; extra == \"test\"", @@ -5016,7 +3979,7 @@ "mypy==1.10.0; extra == \"dev\"", "myst-nb; extra == \"doc\"", "ninja; sys_platform != \"emscripten\" and extra == \"test\"", - "numpy<2.3,>=1.23.5", + "numpy<2.5,>=1.23.5", "numpydoc; extra == \"doc\"", "pooch; extra == \"doc\"", "pooch; extra == \"test\"", @@ -5030,90 +3993,105 @@ "rich-click; extra == \"dev\"", "ruff>=0.0.292; extra == \"dev\"", "scikit-umfpack; extra == \"test\"", + "sphinx-copybutton; extra == \"doc\"", "sphinx-design>=0.4.0; extra == \"doc\"", - "sphinx<=7.3.7,>=5.0.0; extra == \"doc\"", + "sphinx<8.0.0,>=5.0.0; extra == \"doc\"", "threadpoolctl; extra == \"test\"", "types-psutil; extra == \"dev\"", "typing_extensions; extra == \"dev\"" ], "requires_python": ">=3.10", - "version": "1.14.1" + "version": "1.15.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4", - "url": "https://files.pythonhosted.org/packages/de/88/70c5767a0e43eb4451c2200f07d042a4bcd7639276003a9c54a68cfcc1f8/setuptools-70.0.0-py3-none-any.whl" + "hash": "84fb203f278ebcf5cd08f97d3fb96d3fbed4b629d500b29ad60d11e00769b183", + "url": "https://files.pythonhosted.org/packages/4e/6e/abdfaaf5c294c553e7a81cf5d801fbb4f53f5c5b6646de651f92a2667547/setuptools-75.7.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0", - "url": "https://files.pythonhosted.org/packages/aa/60/5db2249526c9b453c5bb8b9f6965fcab0ddb7f40ad734420b3b421f7da44/setuptools-70.0.0.tar.gz" + "hash": "886ff7b16cd342f1d1defc16fc98c9ce3fde69e087a4e1983d7ab634e5f41f4f", + "url": "https://files.pythonhosted.org/packages/ac/57/e6f0bde5a2c333a32fbcce201f906c1fd0b3a7144138712a5e9d9598c5ec/setuptools-75.7.0.tar.gz" } ], "project_name": "setuptools", "requires_dists": [ - "build[virtualenv]>=1.0.3; extra == \"testing\"", - "filelock>=3.4.0; extra == \"testing\"", - "furo; extra == \"docs\"", - "importlib-metadata; extra == \"testing\"", - "ini2toml[lite]>=0.14; extra == \"testing\"", - "jaraco.develop>=7.21; (python_version >= \"3.9\" and sys_platform != \"cygwin\") and extra == \"testing\"", - "jaraco.envs>=2.2; extra == \"testing\"", - "jaraco.packaging>=9.3; extra == \"docs\"", - "jaraco.path>=3.2.0; extra == \"testing\"", - "jaraco.tidelift>=1.4; extra == \"docs\"", - "mypy==1.9; extra == \"testing\"", - "packaging>=23.2; extra == \"testing\"", - "pip>=19.1; extra == \"testing\"", - "pygments-github-lexers==0.0.5; extra == \"docs\"", - "pyproject-hooks!=1.1; extra == \"docs\"", - "pyproject-hooks!=1.1; extra == \"testing\"", - "pytest!=8.1.1,>=6; extra == \"testing\"", - "pytest-checkdocs>=2.4; extra == \"testing\"", - "pytest-cov; platform_python_implementation != \"PyPy\" and extra == \"testing\"", - "pytest-enabler>=2.2; extra == \"testing\"", - "pytest-home>=0.5; extra == \"testing\"", - "pytest-mypy; extra == \"testing\"", - "pytest-perf; sys_platform != \"cygwin\" and extra == \"testing\"", - "pytest-ruff>=0.2.1; sys_platform != \"cygwin\" and extra == \"testing\"", - "pytest-subprocess; extra == \"testing\"", - "pytest-timeout; extra == \"testing\"", - "pytest-xdist>=3; extra == \"testing\"", - "rst.linker>=1.9; extra == \"docs\"", - "sphinx-favicon; extra == \"docs\"", - "sphinx-inline-tabs; extra == \"docs\"", - "sphinx-lint; extra == \"docs\"", - "sphinx-notfound-page<2,>=1; extra == \"docs\"", - "sphinx-reredirects; extra == \"docs\"", - "sphinx>=3.5; extra == \"docs\"", - "sphinxcontrib-towncrier; extra == \"docs\"", - "tomli-w>=1.0.0; extra == \"testing\"", - "tomli; extra == \"testing\"", - "virtualenv>=13.0.0; extra == \"testing\"", - "wheel; extra == \"testing\"" + "build[virtualenv]>=1.0.3; extra == \"test\"", + "filelock>=3.4.0; extra == \"test\"", + "furo; extra == \"doc\"", + "importlib_metadata>=6; python_version < \"3.10\" and extra == \"core\"", + "importlib_metadata>=7.0.2; python_version < \"3.10\" and extra == \"type\"", + "ini2toml[lite]>=0.14; extra == \"test\"", + "jaraco.collections; extra == \"core\"", + "jaraco.develop>=7.21; (python_version >= \"3.9\" and sys_platform != \"cygwin\") and extra == \"test\"", + "jaraco.develop>=7.21; sys_platform != \"cygwin\" and extra == \"type\"", + "jaraco.envs>=2.2; extra == \"test\"", + "jaraco.functools>=4; extra == \"core\"", + "jaraco.packaging>=9.3; extra == \"doc\"", + "jaraco.path>=3.7.2; extra == \"test\"", + "jaraco.test>=5.5; extra == \"test\"", + "jaraco.text>=3.7; extra == \"core\"", + "jaraco.tidelift>=1.4; extra == \"doc\"", + "more_itertools; extra == \"core\"", + "more_itertools>=8.8; extra == \"core\"", + "mypy==1.14.*; extra == \"type\"", + "packaging; extra == \"core\"", + "packaging>=24.2; extra == \"core\"", + "packaging>=24.2; extra == \"test\"", + "pip>=19.1; extra == \"test\"", + "platformdirs>=4.2.2; extra == \"core\"", + "pygments-github-lexers==0.0.5; extra == \"doc\"", + "pyproject-hooks!=1.1; extra == \"doc\"", + "pyproject-hooks!=1.1; extra == \"test\"", + "pytest!=8.1.*,>=6; extra == \"test\"", + "pytest-checkdocs>=2.4; extra == \"check\"", + "pytest-cov; extra == \"cover\"", + "pytest-enabler>=2.2; extra == \"enabler\"", + "pytest-home>=0.5; extra == \"test\"", + "pytest-mypy; extra == \"type\"", + "pytest-perf; sys_platform != \"cygwin\" and extra == \"test\"", + "pytest-ruff>=0.2.1; sys_platform != \"cygwin\" and extra == \"check\"", + "pytest-subprocess; extra == \"test\"", + "pytest-timeout; extra == \"test\"", + "pytest-xdist>=3; extra == \"test\"", + "rst.linker>=1.9; extra == \"doc\"", + "ruff>=0.8.0; sys_platform != \"cygwin\" and extra == \"check\"", + "sphinx-favicon; extra == \"doc\"", + "sphinx-inline-tabs; extra == \"doc\"", + "sphinx-lint; extra == \"doc\"", + "sphinx-notfound-page<2,>=1; extra == \"doc\"", + "sphinx-reredirects; extra == \"doc\"", + "sphinx>=3.5; extra == \"doc\"", + "sphinxcontrib-towncrier; extra == \"doc\"", + "tomli-w>=1.0.0; extra == \"test\"", + "tomli>=2.0.1; python_version < \"3.11\" and extra == \"core\"", + "towncrier<24.7; extra == \"doc\"", + "virtualenv>=13.0.0; extra == \"test\"", + "wheel>=0.43.0; extra == \"core\"", + "wheel>=0.44.0; extra == \"test\"" ], - "requires_python": ">=3.8", - "version": "70.0.0" + "requires_python": ">=3.9", + "version": "75.7.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", - "url": "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl" + "hash": "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", + "url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "url": "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz" + "hash": "ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", + "url": "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz" } ], "project_name": "six", "requires_dists": [], "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7", - "version": "1.16.0" + "version": "1.17.0" }, { "artifacts": [ @@ -5201,28 +4179,30 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd", - "url": "https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl" + "hash": "26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", + "url": "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad", - "url": "https://files.pythonhosted.org/packages/58/83/6ba9844a41128c62e810fddddd72473201f3eacde02046066142a2d96cc5/tqdm-4.66.5.tar.gz" + "hash": "f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", + "url": "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz" } ], "project_name": "tqdm", "requires_dists": [ "colorama; platform_system == \"Windows\"", "ipywidgets>=6; extra == \"notebook\"", + "nbval; extra == \"dev\"", + "pytest-asyncio>=0.24; extra == \"dev\"", "pytest-cov; extra == \"dev\"", "pytest-timeout; extra == \"dev\"", - "pytest-xdist; extra == \"dev\"", "pytest>=6; extra == \"dev\"", + "requests; extra == \"discord\"", "requests; extra == \"telegram\"", "slack-sdk; extra == \"slack\"" ], "requires_python": ">=3.7", - "version": "4.66.5" + "version": "4.67.1" }, { "artifacts": [ @@ -5256,13 +4236,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "fe2ddcf5b091e4d93bb7b689b947b84ad7a62ca862225f2c70cef1caaac4bd32", - "url": "https://files.pythonhosted.org/packages/a7/45/a0d1b0474f280b5191ce6be739533514c9fe4a0315aed75ed58741d536c7/trimesh-4.5.1-py3-none-any.whl" + "hash": "c56ccbf7e2783eadcc1eec191273fcb08801c74a03f2a08c8a5dcc3d55b031e3", + "url": "https://files.pythonhosted.org/packages/28/d0/8852c9f296b5d979a48d764117ff27a96115d74cb6f8ba083744867415a5/trimesh-4.5.3-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "2e85179fdbee1e872aa00d42a5b28605a05302968857a8321a4dfa4390725b1c", - "url": "https://files.pythonhosted.org/packages/e9/18/fe1b29de4d4739ec2c96351b3d104512acbf1181e0a9516ebf3ccf6e548f/trimesh-4.5.1.tar.gz" + "hash": "b1af60399f64f4715d744c5195754068bfeb98981b92feb0c15d016c99379f87", + "url": "https://files.pythonhosted.org/packages/e8/2c/a8ae7ebb5179d31528d0df903e83ea3b71e8da25626440a7c634a4daa099/trimesh-4.5.3.tar.gz" } ], "project_name": "trimesh", @@ -5279,7 +4259,7 @@ "jsonschema; extra == \"easy\"", "lxml; extra == \"easy\"", "manifold3d>=2.3.0; extra == \"easy\"", - "mapbox-earcut>=1.0.2; python_version >= \"3.9\" and extra == \"easy\"", + "mapbox_earcut>=1.0.2; python_version >= \"3.9\" and extra == \"easy\"", "matplotlib; extra == \"test-more\"", "meshio; extra == \"recommend\"", "networkx; extra == \"easy\"", @@ -5292,7 +4272,7 @@ "pyinstrument; extra == \"test\"", "pymeshlab; extra == \"test-more\"", "pyright; extra == \"test-more\"", - "pytest-beartype; python_version >= \"3.10\" and extra == \"test_more\"", + "pytest-beartype; python_version >= \"3.10\" and extra == \"test-more\"", "pytest-cov; extra == \"test\"", "pytest; extra == \"test\"", "rtree; extra == \"easy\"", @@ -5310,25 +4290,25 @@ "xxhash; extra == \"easy\"" ], "requires_python": ">=3.8", - "version": "4.5.1" + "version": "4.5.3" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "7939eca4a8b4f9c6491b6e8ef160caee9a21d32e18534a57d5ed90aee47c66b4", - "url": "https://files.pythonhosted.org/packages/c3/ad/c4b3275d21c5be79487c4f6ed7cd13336997746fe099236cb29256a44a90/types_aiofiles-24.1.0.20240626-py3-none-any.whl" + "hash": "11d4e102af0627c02e8c1d17736caa3c39de1058bea37e2f4de6ef11a5b652ab", + "url": "https://files.pythonhosted.org/packages/ff/da/77902220df98ce920444cf3611fa0b1cf0dc2cfa5a137c55e93829aa458e/types_aiofiles-24.1.0.20241221-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "48604663e24bc2d5038eac05ccc33e75799b0779e93e13d6a8f711ddc306ac08", - "url": "https://files.pythonhosted.org/packages/13/e9/013940b017c313c2e15c64017268fdb0c25e0638621fb8a5d9ebe00fb0f4/types-aiofiles-24.1.0.20240626.tar.gz" + "hash": "c40f6c290b0af9e902f7f3fa91213cf5bb67f37086fb21dc0ff458253586ad55", + "url": "https://files.pythonhosted.org/packages/ab/5e/f984b9ddc7eecdf31e683e692d933f3672276ed95aad6adb9aea9ecbdc29/types_aiofiles-24.1.0.20241221.tar.gz" } ], "project_name": "types-aiofiles", "requires_dists": [], "requires_python": ">=3.8", - "version": "24.1.0.20240626" + "version": "24.1.0.20241221" }, { "artifacts": [ @@ -5390,49 +4370,49 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "27c8cc2d058ccb14946eebcaaa503088f4f6dbc4fb6093d3d456a49aef2753f6", - "url": "https://files.pythonhosted.org/packages/aa/4c/5c684b333135a6fb085bb5a5bdfd962937f80bec06745a88fd551e29f4d9/types_python_dateutil-2.9.0.20240906-py3-none-any.whl" + "hash": "e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", + "url": "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "9706c3b68284c25adffc47319ecc7947e5bb86b3773f843c73906fd598bc176e", - "url": "https://files.pythonhosted.org/packages/3e/d9/9c9ec2d870af7aa9b722ce4fd5890bb55b1d18898df7f1d069cab194bb2a/types-python-dateutil-2.9.0.20240906.tar.gz" + "hash": "18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", + "url": "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz" } ], "project_name": "types-python-dateutil", "requires_dists": [], "requires_python": ">=3.8", - "version": "2.9.0.20240906" + "version": "2.9.0.20241206" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "deda34c5c655265fc517b546c902aa6eed2ef8d3e921e4765fe606fe2afe8d35", - "url": "https://files.pythonhosted.org/packages/f3/ad/ffbad24e2bc8f20bf047ec22af0c0a92f6ce2071eb21c9103df600cda6de/types_PyYAML-6.0.12.20240808-py3-none-any.whl" + "hash": "fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6", + "url": "https://files.pythonhosted.org/packages/e8/c1/48474fbead512b70ccdb4f81ba5eb4a58f69d100ba19f17c92c0c4f50ae6/types_PyYAML-6.0.12.20241230-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "b8f76ddbd7f65440a8bda5526a9607e4c7a322dc2f8e1a8c405644f9a6f4b9af", - "url": "https://files.pythonhosted.org/packages/dd/08/6f5737f645571b7a0b1ebd2fe8b5cf1ee4ec3e707866ca96042a86fc1d10/types-PyYAML-6.0.12.20240808.tar.gz" + "hash": "7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c", + "url": "https://files.pythonhosted.org/packages/9a/f9/4d566925bcf9396136c0a2e5dc7e230ff08d86fa011a69888dd184469d80/types_pyyaml-6.0.12.20241230.tar.gz" } ], "project_name": "types-pyyaml", "requires_dists": [], "requires_python": ">=3.8", - "version": "6.0.12.20240808" + "version": "6.0.12.20241230" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "1d1e79faeaf9d42def77f3c304893dea17a97cae98168ac69f3cb465516ee8da", - "url": "https://files.pythonhosted.org/packages/5f/6e/425219be1dfc954c3e129b3ea70407abc78c1bd6414d0c7180df9940ca1f/types_requests-2.32.0.20240907-py3-none-any.whl" + "hash": "4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747", + "url": "https://files.pythonhosted.org/packages/d7/01/485b3026ff90e5190b5e24f1711522e06c79f4a56c8f4b95848ac072e20f/types_requests-2.32.0.20241016-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "ff33935f061b5e81ec87997e91050f7b4af4f82027a7a7a9d9aaea04a963fdf8", - "url": "https://files.pythonhosted.org/packages/9f/94/b6f90e5f09e1d621d5cd6d1057d5d28d4019d95f06eab205afa743ba1907/types-requests-2.32.0.20240907.tar.gz" + "hash": "0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95", + "url": "https://files.pythonhosted.org/packages/fa/3c/4f2a430c01a22abd49a583b6b944173e39e7d01b688190a5618bd59a2e22/types-requests-2.32.0.20241016.tar.gz" } ], "project_name": "types-requests", @@ -5440,25 +4420,25 @@ "urllib3>=2" ], "requires_python": ">=3.8", - "version": "2.32.0.20240907" + "version": "2.32.0.20241016" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "15b38c8e63ca34f42f6063ff4b1dd662ea20086166d5ad6a102e670a52574120", - "url": "https://files.pythonhosted.org/packages/f6/5a/636fbcd7baf3d4d9f971581587bafba37d8b3dff498233be43f394e0eb9f/types_setuptools-74.1.0.20240907-py3-none-any.whl" + "hash": "7cbfd3bf2944f88bbcdd321b86ddd878232a277be95d44c78a53585d78ebc2f6", + "url": "https://files.pythonhosted.org/packages/41/2f/051d5d23711209d4077d95c62fa8ef6119df7298635e3a929e50376219d1/types_setuptools-75.6.0.20241223-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "0abdb082552ca966c1e5fc244e4853adc62971f6cd724fb1d8a3713b580e5a65", - "url": "https://files.pythonhosted.org/packages/4b/80/7098cc47e64861d9591dd18ad2dffde9b63da6037dbad38f2eadd1124866/types-setuptools-74.1.0.20240907.tar.gz" + "hash": "d9478a985057ed48a994c707f548e55aababa85fe1c9b212f43ab5a1fffd3211", + "url": "https://files.pythonhosted.org/packages/53/48/a89068ef20e3bbb559457faf0fd3c18df6df5df73b4b48ebf466974e1f54/types_setuptools-75.6.0.20241223.tar.gz" } ], "project_name": "types-setuptools", "requires_dists": [], "requires_python": ">=3.8", - "version": "74.1.0.20240907" + "version": "75.6.0.20241223" }, { "artifacts": [ @@ -5522,13 +4502,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", - "url": "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + "hash": "1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", + "url": "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", - "url": "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + "hash": "f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", + "url": "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz" } ], "project_name": "urllib3", @@ -5539,8 +4519,8 @@ "pysocks!=1.5.7,<2.0,>=1.5.6; extra == \"socks\"", "zstandard>=0.18.0; extra == \"zstd\"" ], - "requires_python": ">=3.8", - "version": "2.2.3" + "requires_python": ">=3.9", + "version": "2.3.0" }, { "artifacts": [ @@ -5591,121 +4571,76 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "b80f0c51681c517604152eb6a572f5a9378f877763231fddb883ba2f968e8817", - "url": "https://files.pythonhosted.org/packages/fd/bd/d34c4b7918453506d2149208b175368738148ffc4ba256d7fd8708956732/websockets-13.0.1-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "699ba9dd6a926f82a277063603fc8d586b89f4cb128efc353b749b641fcddda7", - "url": "https://files.pythonhosted.org/packages/20/95/e002ec55688b751d3c9cc131c1960af7e440d95e1954c441535b9da2bf36/websockets-13.0.1-cp311-cp311-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "8eb2b9a318542153674c6e377eb8cb9ca0fc011c04475110d3477862f15d29f0", - "url": "https://files.pythonhosted.org/packages/2e/67/631d4b1f28fef6f12730c0cbe982203a9d6814768c2ab1e0a352d9a07a97/websockets-13.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "46af561eba6f9b0848b2c9d2427086cabadf14e0abdd9fde9d72d447df268418", - "url": "https://files.pythonhosted.org/packages/39/29/d9df0a1daedebefaeea88fb8071539604df09fd0f1bfb73bf58333aa3eb6/websockets-13.0.1-cp311-cp311-musllinux_1_2_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "1f613289f4a94142f914aafad6c6c87903de78eae1e140fa769a7385fb232fdf", - "url": "https://files.pythonhosted.org/packages/46/d2/814a61226af313c1bc289cfe3a10f87bf426b6f2d9df0f927c47afab7612/websockets-13.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "f9c9e258e3d5efe199ec23903f5da0eeaad58cf6fccb3547b74fd4750e5ac47a", - "url": "https://files.pythonhosted.org/packages/4e/51/23ed2d239f1c3087c1431d41cfd159865df0bc35bb0c89973e3b6a0fff9b/websockets-13.0.1-cp312-cp312-macosx_10_9_universal2.whl" - }, - { - "algorithm": "sha256", - "hash": "6b41a1b3b561f1cba8321fb32987552a024a8f67f0d05f06fcf29f0090a1b956", - "url": "https://files.pythonhosted.org/packages/57/8d/814a7ef62b916b0f39108ad2e4d9b4cb0f8c640f8c30202fb63041598ada/websockets-13.0.1-cp312-cp312-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "cf2fae6d85e5dc384bf846f8243ddaa9197f3a1a70044f59399af001fd1f51d4", - "url": "https://files.pythonhosted.org/packages/62/6b/85fb8c13b278db7d45e27ff6ee0db3009b0fadef7c37c85e6cb4a0fbf08e/websockets-13.0.1-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "b5a06d7f60bc2fc378a333978470dfc4e1415ee52f5f0fce4f7853eb10c1e9df", - "url": "https://files.pythonhosted.org/packages/7d/9a/f88e186059f6b89f8bb08461d9fda7a26940b7b8897c7d7f02aead40b7e4/websockets-13.0.1-cp311-cp311-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "4d6ece65099411cfd9a48d13701d7438d9c34f479046b34c50ff60bb8834e43e", - "url": "https://files.pythonhosted.org/packages/8f/1c/78687e0267b09412409ac134f10fd14d14ac6475da892a8b09a02d0f6ae2/websockets-13.0.1.tar.gz" + "hash": "4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e", + "url": "https://files.pythonhosted.org/packages/b0/0b/c7e5d11020242984d9d37990310520ed663b942333b83a033c2f20191113/websockets-14.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "c44ca9ade59b2e376612df34e837013e2b273e6c92d7ed6636d0556b6f4db93d", - "url": "https://files.pythonhosted.org/packages/90/9b/59866695cfd05e785c90932fef3dae4682eb4e06e7076b7c53478f25faad/websockets-13.0.1-cp312-cp312-musllinux_1_2_i686.whl" + "hash": "ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed", + "url": "https://files.pythonhosted.org/packages/55/64/55698544ce29e877c9188f1aee9093712411a8fc9732cca14985e49a8e9c/websockets-14.1-cp312-cp312-macosx_10_13_universal2.whl" }, { "algorithm": "sha256", - "hash": "139add0f98206cb74109faf3611b7783ceafc928529c62b389917a037d4cfdf4", - "url": "https://files.pythonhosted.org/packages/94/6e/eaf95894042ba8a05a125fe8bcf9ee3572fef6edbcbf49478f4991c027cc/websockets-13.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58", + "url": "https://files.pythonhosted.org/packages/8d/a7/62e551fdcd7d44ea74a006dc193aba370505278ad76efd938664531ce9d6/websockets-14.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "9bbc525f4be3e51b89b2a700f5746c2a6907d2e2ef4513a8daafc98198b92237", - "url": "https://files.pythonhosted.org/packages/9b/47/20af68a313b6453d2d094ccc497b7232e8475175d234e3e5bef5088521e5/websockets-13.0.1-cp312-cp312-musllinux_1_2_x86_64.whl" + "hash": "87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d", + "url": "https://files.pythonhosted.org/packages/a2/b1/b088f67c2b365f2c86c7b48edb8848ac27e508caf910a9d9d831b2f343cb/websockets-14.1-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "5df891c86fe68b2c38da55b7aea7095beca105933c697d719f3f45f4220a5e0e", - "url": "https://files.pythonhosted.org/packages/9b/e8/ba740eab2a9c5b903ea94d9a2a448db63f0a296265aee976d17abf734758/websockets-13.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058", + "url": "https://files.pythonhosted.org/packages/ad/ed/1532786f55922c1e9c4d329608e36a15fdab186def3ca9eb10d7465bc1cc/websockets-14.1-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "0f52504023b1480d458adf496dc1c9e9811df4ba4752f0bc1f89ae92f4f07d0c", - "url": "https://files.pythonhosted.org/packages/a1/7e/5987299eb7e131216c9027b05a65f149cbc2bde7c582e694d9eed6ec3d40/websockets-13.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707", + "url": "https://files.pythonhosted.org/packages/c1/89/2a09db1bbb40ba967a1b8225b07b7df89fea44f06de9365f17f684d0f7e6/websockets-14.1-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "f73e676a46b0fe9426612ce8caeca54c9073191a77c3e9d5c94697aef99296af", - "url": "https://files.pythonhosted.org/packages/ad/8b/a378d21124011737e0e490a8a6ef778914b03e50c8d938de2f2170a20dbd/websockets-13.0.1-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45", + "url": "https://files.pythonhosted.org/packages/c1/c8/84191455d8660e2a0bdb33878d4ee5dfa4a2cedbcdc88bbd097303b65bfa/websockets-14.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" }, { "algorithm": "sha256", - "hash": "b8ac5b46fd798bbbf2ac6620e0437c36a202b08e1f827832c4bf050da081b501", - "url": "https://files.pythonhosted.org/packages/c0/85/0cbfe7b0e0dd3d885cd87b0523c6690ae7369feaf3aab5a23e95bdb4fefa/websockets-13.0.1-cp311-cp311-musllinux_1_2_aarch64.whl" + "hash": "9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a", + "url": "https://files.pythonhosted.org/packages/ca/c1/f983138cd56e7d3079f1966e81f77ce6643f230cd309f73aa156bb181749/websockets-14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "47236c13be337ef36546004ce8c5580f4b1150d9538b27bf8a5ad8edf23ccfab", - "url": "https://files.pythonhosted.org/packages/ce/ba/a1315d569cc2dadaafda74a9cea16ab5d68142525937f1994442d969b306/websockets-13.0.1-cp312-cp312-musllinux_1_2_aarch64.whl" + "hash": "eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05", + "url": "https://files.pythonhosted.org/packages/cf/53/1bf0c06618b5ac35f1d7906444b9958f8485682ab0ea40dee7b17a32da1e/websockets-14.1-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "52aed6ef21a0f1a2a5e310fb5c42d7555e9c5855476bbd7173c3aa3d8a0302f2", - "url": "https://files.pythonhosted.org/packages/e8/2e/c80cafbab86f8c399ba8323efff298b7062055724146391443d266e9c49b/websockets-13.0.1-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4", + "url": "https://files.pythonhosted.org/packages/ea/fb/160f66960d495df3de63d9bcff78e1b42545b2a123cc611950ffe6468016/websockets-14.1-cp312-cp312-musllinux_1_2_i686.whl" }, { "algorithm": "sha256", - "hash": "fac2d146ff30d9dd2fcf917e5d147db037a5c573f0446c564f16f1f94cf87462", - "url": "https://files.pythonhosted.org/packages/f8/4e/ffa2f1aad2da67e483fb7bad6c69f80c786f4e85d1942a39d7b275b084ed/websockets-13.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8", + "url": "https://files.pythonhosted.org/packages/f4/1b/380b883ce05bb5f45a905b61790319a28958a9ab1e4b6b95ff5464b60ca1/websockets-14.1.tar.gz" } ], "project_name": "websockets", "requires_dists": [], - "requires_python": ">=3.8", - "version": "13.0.1" + "requires_python": ">=3.9", + "version": "14.1" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "6e589e0b303561b8b1a61d363ee05b1d7de6ca12f27a3a25269ae6ee93e363fd", - "url": "https://files.pythonhosted.org/packages/66/bd/3773fa5a55f78a8ba99b87cdf02029417056c63c6200f1a7ba275013746f/werkzeug-3.0.5-py3-none-any.whl" + "hash": "54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", + "url": "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "033bc3783777078517f32ae3ba9e86e9bc38bdbf139b1a5a3af9679a64ed1293", - "url": "https://files.pythonhosted.org/packages/f3/bf/720c3f5b7910d3918ac3b2d4c41465502a3ef34a9b9ec43a49cdf0ea6937/werkzeug-3.0.5.tar.gz" + "hash": "60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", + "url": "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz" } ], "project_name": "werkzeug", @@ -5713,8 +4648,8 @@ "MarkupSafe>=2.1.1", "watchdog>=2.3; extra == \"watchdog\"" ], - "requires_python": ">=3.8", - "version": "3.0.5" + "requires_python": ">=3.9", + "version": "3.1.3" }, { "artifacts": [ @@ -5733,44 +4668,6 @@ "requires_dists": [], "requires_python": ">=3.7", "version": "4.0.13" - }, - { - "artifacts": [ - { - "algorithm": "sha256", - "hash": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", - "url": "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", - "url": "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" - } - ], - "project_name": "zipp", - "requires_dists": [ - "big-O; extra == \"test\"", - "furo; extra == \"doc\"", - "importlib-resources; python_version < \"3.9\" and extra == \"test\"", - "jaraco.functools; extra == \"test\"", - "jaraco.itertools; extra == \"test\"", - "jaraco.packaging>=9.3; extra == \"doc\"", - "jaraco.test; extra == \"test\"", - "jaraco.tidelift>=1.4; extra == \"doc\"", - "more-itertools; extra == \"test\"", - "pytest!=8.1.*,>=6; extra == \"test\"", - "pytest-checkdocs>=2.4; extra == \"check\"", - "pytest-cov; extra == \"cover\"", - "pytest-enabler>=2.2; extra == \"enabler\"", - "pytest-ignore-flaky; extra == \"test\"", - "pytest-mypy; extra == \"type\"", - "pytest-ruff>=0.2.1; sys_platform != \"cygwin\" and extra == \"check\"", - "rst.linker>=1.9; extra == \"doc\"", - "sphinx-lint; extra == \"doc\"", - "sphinx>=3.5; extra == \"doc\"" - ], - "requires_python": ">=3.8", - "version": "3.20.2" } ], "platform_tag": null @@ -5778,8 +4675,9 @@ ], "only_builds": [], "only_wheels": [], + "overridden": [], "path_mappings": {}, - "pex_version": "2.3.1", + "pex_version": "2.16.2", "pip_version": "24.0", "prefer_older_binary": false, "requirements": [ @@ -5790,15 +4688,15 @@ "aiofiles~=24.1.0", "aiologger~=0.7.0", "aiorun~=2024.8.1", - "apispec-webframeworks~=1.1.0", - "apispec[yaml]~=6.6.1", + "apispec-webframeworks~=1.2.0", + "apispec[yaml]~=6.8.1", "autopep8~=2.3.1", - "ciso8601~=2.3.1", - "colorlog~=6.8.2", + "ciso8601~=2.3.2", + "colorlog~=6.9.0", "dataclasses-jsonschema[apispec,fast-dateparsing,fast-validation]~=2.16.0", "easyhid~=0.0.10", "fanucpy~=0.1.14", - "fastuuid~=0.9.3", + "fastuuid~=0.11.0", "flask-swagger-ui~=4.11.1", "flask_cors~=5.0.0", "gTTS~=2.5.3", @@ -5806,43 +4704,43 @@ "hidapi~=0.14.0", "lark==1.2.2", "lru-dict~=1.3.0", - "numpy-quaternion[numba,scipy]~=2023.0.4", + "numpy-quaternion[numba,scipy]~=2024.0.3", "numpy>=1.26.4", - "open3d==0.18.0", + "open3d==0.19.0", "openapi-spec-validator~=0.7.1", "opencv-contrib-python~=4.10.0.84", "opencv-stubs[opencv-contrib]==0.0.10", - "orjson~=3.10.7", - "packaging~=24.1", + "orjson~=3.10.13", + "packaging~=24.2", "pydub-stubs==0.25.1.1", "pydub~=0.25.1", "pyhumps==3.8.0", - "pymodbus~=3.7.4", + "pymodbus~=3.8.3", "pyserial~=3.5", "pyspacemouse~=1.1.4", - "pytest-asyncio~=0.24.0", - "pytest-randomly~=3.15.0", + "pytest-asyncio~=0.25.1", + "pytest-randomly~=3.16.0", "pytest-repeat~=0.9.3", - "pytest~=8.3.3", + "pytest~=8.3.4", "python-dateutil~=2.9.0.post0", "requests~=2.32.3", - "setuptools~=70.0.0", + "setuptools~=75.7.0", "sqlitedict~=2.1.0", - "types-PyYAML==6.0.12.20240808", - "types-aiofiles==24.1.0.20240626", + "types-PyYAML==6.0.12.20241230", + "types-aiofiles==24.1.0.20241221", "types-orjson==3.6.2", "types-playsound~=1.3.1.3", - "types-python-dateutil==2.9.0.20240906", - "types-requests==2.32.0.20240907", - "types-setuptools==74.1.0.20240907", + "types-python-dateutil==2.9.0.20241206", + "types-requests==2.32.0.20241016", + "types-setuptools==75.6.0.20241223", "types_flask_cors~=5.0.0.20240902", "typing-inspect~=0.9.0", "websocket-client~=1.8.0", - "websockets~=13.0.1", - "werkzeug~=3.0.4" + "websockets~=14.1", + "werkzeug~=3.1.3" ], "requires_python": [ - "<3.13,>=3.11" + "<3.13,>=3.12" ], "resolver_version": "pip-2020-resolver", "style": "universal", diff --git a/3rdparty/flake8_lockfile.txt b/3rdparty/flake8_lockfile.txt index 85c3b3eab..25cc4567d 100644 --- a/3rdparty/flake8_lockfile.txt +++ b/3rdparty/flake8_lockfile.txt @@ -6,7 +6,7 @@ // { // "version": 3, // "valid_for_interpreter_constraints": [ -// "CPython<3.13,>=3.11" +// "CPython<3.13,>=3.12" // ], // "generated_with_requirements": [ // "flake8-absolute-import", @@ -30,6 +30,7 @@ "allow_wheels": true, "build_isolation": true, "constraints": [], + "excluded": [], "locked_resolves": [ { "locked_requirements": [ @@ -37,13 +38,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", - "url": "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl" + "hash": "ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", + "url": "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", - "url": "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz" + "hash": "8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", + "url": "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz" } ], "project_name": "attrs", @@ -59,24 +60,23 @@ "hypothesis; extra == \"cov\"", "hypothesis; extra == \"dev\"", "hypothesis; extra == \"tests\"", - "importlib-metadata; python_version < \"3.8\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"benchmark\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"cov\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"dev\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"tests\"", - "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\") and extra == \"tests-mypy\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"benchmark\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"cov\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"dev\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests\"", + "mypy>=1.11.1; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests-mypy\"", "myst-parser; extra == \"docs\"", - "pre-commit; extra == \"dev\"", + "pre-commit-uv; extra == \"dev\"", "pympler; extra == \"benchmark\"", "pympler; extra == \"cov\"", "pympler; extra == \"dev\"", "pympler; extra == \"tests\"", "pytest-codspeed; extra == \"benchmark\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"benchmark\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"cov\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"dev\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"tests\"", - "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\") and extra == \"tests-mypy\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"benchmark\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"cov\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"dev\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests\"", + "pytest-mypy-plugins; (platform_python_implementation == \"CPython\" and python_version >= \"3.10\") and extra == \"tests-mypy\"", "pytest-xdist[psutil]; extra == \"benchmark\"", "pytest-xdist[psutil]; extra == \"cov\"", "pytest-xdist[psutil]; extra == \"dev\"", @@ -90,8 +90,8 @@ "sphinxcontrib-towncrier; extra == \"docs\"", "towncrier<24.7; extra == \"docs\"" ], - "requires_python": ">=3.7", - "version": "24.2.0" + "requires_python": ">=3.8", + "version": "24.3.0" }, { "artifacts": [ @@ -159,18 +159,18 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "25bc3867f7338ee3b3e0916bf8b8a0b743f53a9a5175782ddc4325ed4f386b89", - "url": "https://files.pythonhosted.org/packages/2b/3c/8885a79ae7bebfab19716969de9810722ff45354e4ccc974a090bc478eaa/flake8_bugbear-24.8.19-py3-none-any.whl" + "hash": "1b6967436f65ca22a42e5373aaa6f2d87966ade9aa38d4baf2a1be550767545e", + "url": "https://files.pythonhosted.org/packages/b9/21/0a875f75fbe4008bd171e2fefa413536258fe6b4cfaaa087986de74588f4/flake8_bugbear-24.12.12-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "9b77627eceda28c51c27af94560a72b5b2c97c016651bdce45d8f56c180d2d32", - "url": "https://files.pythonhosted.org/packages/00/b3/80043856ed90ceef0e95c01ed12d6bb7d4d76356e526450f0a9aeeb0a7b7/flake8_bugbear-24.8.19.tar.gz" + "hash": "46273cef0a6b6ff48ca2d69e472f41420a42a46e24b2a8972e4f0d6733d12a64", + "url": "https://files.pythonhosted.org/packages/c7/25/48ba712ff589b0149f21135234f9bb45c14d6689acc6151b5e2ff8ac2ae9/flake8_bugbear-24.12.12.tar.gz" } ], "project_name": "flake8-bugbear", "requires_dists": [ - "attrs>=19.2.0", + "attrs>=22.2.0", "coverage; extra == \"dev\"", "flake8>=6.0.0", "hypothesis; extra == \"dev\"", @@ -180,7 +180,7 @@ "tox; extra == \"dev\"" ], "requires_python": ">=3.8.1", - "version": "24.8.19" + "version": "24.12.12" }, { "artifacts": [ @@ -245,21 +245,21 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "b0387fb2ea200441bd142309e716fb7b8f4b0937bdf5f8b7c0c118a5f5e2b8ed", - "url": "https://files.pythonhosted.org/packages/32/46/ba219b0e774b68993008afe963fd809d2ba28de45ad2f4c8acc345f15249/flake8_tidy_imports-4.10.0-py3-none-any.whl" + "hash": "607a76a7c2a9dec682e214f0692d4e7876862a618b766cef8f16979efac1ce22", + "url": "https://files.pythonhosted.org/packages/06/3b/d3c1b7f47a20c41b4811e15a783d29b1e83921422152a9770c66dea1017e/flake8_tidy_imports-4.11.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "bd6cf86465402d2b86903009b748d85a628e599e17b76e810c9857e3a2815173", - "url": "https://files.pythonhosted.org/packages/76/7e/e4b9e42a5434e7f819f50f47b1bd1c04b71539d22f06e917e0d0846e412c/flake8_tidy_imports-4.10.0.tar.gz" + "hash": "fcd57e275a9f4f8163db2ecb17c9c942d311750e2315cf9ae931f22f7043d496", + "url": "https://files.pythonhosted.org/packages/d7/03/9ea93e3ab6e26a6c5da23c95318101491b92f5a0777d1e80cf2e39d11d02/flake8_tidy_imports-4.11.0.tar.gz" } ], "project_name": "flake8-tidy-imports", "requires_dists": [ - "flake8>=3.8.0" + "flake8>=3.8" ], - "requires_python": ">=3.8", - "version": "4.10.0" + "requires_python": ">=3.9", + "version": "4.11.0" }, { "artifacts": [ @@ -319,13 +319,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "34793ba60488e7cccbecdef3a7fe151656372ef94fdac9fe004c52a4000a6d44", - "url": "https://files.pythonhosted.org/packages/fd/1b/bc096603b79edbac62899cbe852bd5ccdf0f8e8a7faa9f7390ee1995cedb/vulture-2.13-py2.py3-none-any.whl" + "hash": "d9a90dba89607489548a49d557f8bac8112bd25d3cbc8aeef23e860811bd5ed9", + "url": "https://files.pythonhosted.org/packages/a0/56/0cc15b8ff2613c1d5c3dc1f3f576ede1c43868c1bc2e5ccaa2d4bcd7974d/vulture-2.14-py2.py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "78248bf58f5eaffcc2ade306141ead73f437339950f80045dce7f8b078e5a1aa", - "url": "https://files.pythonhosted.org/packages/1d/7d/e78586863119fe28741c347988f892301319ce05edd11dbe0b45b18cc3b9/vulture-2.13.tar.gz" + "hash": "cb8277902a1138deeab796ec5bef7076a6e0248ca3607a3f3dee0b6d9e9b8415", + "url": "https://files.pythonhosted.org/packages/8e/25/925f35db758a0f9199113aaf61d703de891676b082bd7cf73ea01d6000f7/vulture-2.14.tar.gz" } ], "project_name": "vulture", @@ -333,7 +333,7 @@ "tomli>=1.1.0; python_version < \"3.11\"" ], "requires_python": ">=3.8", - "version": "2.13" + "version": "2.14" } ], "platform_tag": null @@ -341,8 +341,9 @@ ], "only_builds": [], "only_wheels": [], + "overridden": [], "path_mappings": {}, - "pex_version": "2.3.1", + "pex_version": "2.16.2", "pip_version": "24.0", "prefer_older_binary": false, "requirements": [ @@ -355,7 +356,7 @@ "vulture" ], "requires_python": [ - "<3.13,>=3.11" + "<3.13,>=3.12" ], "resolver_version": "pip-2020-resolver", "style": "universal", diff --git a/3rdparty/mypy-requirements.txt b/3rdparty/mypy-requirements.txt index 96414dbf3..cd91b50f5 100644 --- a/3rdparty/mypy-requirements.txt +++ b/3rdparty/mypy-requirements.txt @@ -1,2 +1,2 @@ -mypy==1.11.2 +mypy==1.14.1 numpy~=1.26.4 \ No newline at end of file diff --git a/3rdparty/mypy_lockfile.txt b/3rdparty/mypy_lockfile.txt index 6ca06d638..91b8716f3 100644 --- a/3rdparty/mypy_lockfile.txt +++ b/3rdparty/mypy_lockfile.txt @@ -6,10 +6,10 @@ // { // "version": 3, // "valid_for_interpreter_constraints": [ -// "CPython<3.13,>=3.11" +// "CPython<3.13,>=3.12" // ], // "generated_with_requirements": [ -// "mypy==1.11.2", +// "mypy==1.14.1", // "numpy~=1.26.4" // ], // "manylinux": "manylinux2014", @@ -25,6 +25,7 @@ "allow_wheels": true, "build_isolation": true, "constraints": [], + "excluded": [], "locked_resolves": [ { "locked_requirements": [ @@ -32,67 +33,53 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12", - "url": "https://files.pythonhosted.org/packages/42/3a/bdf730640ac523229dd6578e8a581795720a9321399de494374afc437ec5/mypy-1.11.2-py3-none-any.whl" + "hash": "b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1", + "url": "https://files.pythonhosted.org/packages/a0/b5/32dd67b69a16d088e533962e5044e51004176a9952419de0370cdaead0f8/mypy-1.14.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca", - "url": "https://files.pythonhosted.org/packages/04/c8/b19a760fab491c22c51975cf74e3d253b8c8ce2be7afaa2490fbf95a8c59/mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89", + "url": "https://files.pythonhosted.org/packages/03/d2/8bc0aeaaf2e88c977db41583559319f1821c069e943ada2701e86d0430b7/mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36", - "url": "https://files.pythonhosted.org/packages/04/e4/1a9051e2ef10296d206519f1df13d2cc896aea39e8683302f89bf5792a59/mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e", + "url": "https://files.pythonhosted.org/packages/04/90/f53971d3ac39d8b68bbaab9a4c6c58c8caa4d5fd3d587d16f5927eeeabe1/mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl" }, { "algorithm": "sha256", - "hash": "e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318", - "url": "https://files.pythonhosted.org/packages/35/3a/ed7b12ecc3f6db2f664ccf85cb2e004d3e90bec928e9d7be6aa2f16b7cdf/mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl" + "hash": "30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14", + "url": "https://files.pythonhosted.org/packages/43/1b/b38c079609bb4627905b74fc6a49849835acf68547ac33d8ceb707de5f52/mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79", - "url": "https://files.pythonhosted.org/packages/5c/86/5d7cbc4974fd564550b80fbb8103c05501ea11aa7835edf3351d90095896/mypy-1.11.2.tar.gz" + "hash": "cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9", + "url": "https://files.pythonhosted.org/packages/6b/75/2ed0d2964c1ffc9971c729f7a544e9cd34b2cdabbe2d11afd148d7838aa2/mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104", - "url": "https://files.pythonhosted.org/packages/88/57/7e7e39f2619c8f74a22efb9a4c4eff32b09d3798335625a124436d121d89/mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl" + "hash": "8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11", + "url": "https://files.pythonhosted.org/packages/a1/5f/7b8051552d4da3c51bbe8fcafffd76a6823779101a2b198d80886cd8f08e/mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl" }, { "algorithm": "sha256", - "hash": "3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca", - "url": "https://files.pythonhosted.org/packages/b6/49/ee5adf6a49ff13f4202d949544d3d08abb0ea1f3e7f2a6d5b4c10ba0360a/mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385", - "url": "https://files.pythonhosted.org/packages/e2/aa/cc56fb53ebe14c64f1fe91d32d838d6f4db948b9494e200d2f61b820b85d/mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987", - "url": "https://files.pythonhosted.org/packages/f3/3c/350a9da895f8a7e87ade0028b962be0252d152e0c2fbaafa6f0658b4d0d4/mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4", - "url": "https://files.pythonhosted.org/packages/fc/a6/37f7544666b63a27e46c48f49caeee388bf3ce95f9c570eb5cfba5234405/mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl" + "hash": "7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6", + "url": "https://files.pythonhosted.org/packages/b9/eb/2c92d8ea1e684440f54fa49ac5d9a5f19967b7b472a281f419e69a8d228e/mypy-1.14.1.tar.gz" } ], "project_name": "mypy", "requires_dists": [ "lxml; extra == \"reports\"", - "mypy-extensions>=1.0.0", + "mypy_extensions>=1.0.0", + "orjson; extra == \"faster-cache\"", "pip; extra == \"install-types\"", "psutil>=4.0; extra == \"dmypy\"", "setuptools>=50; extra == \"mypyc\"", "tomli>=1.1.0; python_version < \"3.11\"", - "typing-extensions>=4.6.0" + "typing_extensions>=4.6.0" ], "requires_python": ">=3.8", - "version": "1.11.2" + "version": "1.14.1" }, { "artifacts": [ @@ -119,31 +106,11 @@ "hash": "1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", "url": "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", - "url": "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl" - }, { "algorithm": "sha256", "hash": "675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", "url": "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, - { - "algorithm": "sha256", - "hash": "4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", - "url": "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", - "url": "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl" - }, - { - "algorithm": "sha256", - "hash": "666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", - "url": "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, { "algorithm": "sha256", "hash": "ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", @@ -159,11 +126,6 @@ "hash": "03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", "url": "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl" }, - { - "algorithm": "sha256", - "hash": "7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", - "url": "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, { "algorithm": "sha256", "hash": "9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", @@ -173,11 +135,6 @@ "algorithm": "sha256", "hash": "b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", "url": "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", - "url": "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl" } ], "project_name": "numpy", @@ -209,16 +166,17 @@ ], "only_builds": [], "only_wheels": [], + "overridden": [], "path_mappings": {}, - "pex_version": "2.3.1", + "pex_version": "2.16.2", "pip_version": "24.0", "prefer_older_binary": false, "requirements": [ - "mypy==1.11.2", + "mypy==1.14.1", "numpy~=1.26.4" ], "requires_python": [ - "<3.13,>=3.11" + "<3.13,>=3.12" ], "resolver_version": "pip-2020-resolver", "style": "universal", diff --git a/3rdparty/pytest_lockfile.txt b/3rdparty/pytest_lockfile.txt index 813408e3c..6ac44bc2f 100644 --- a/3rdparty/pytest_lockfile.txt +++ b/3rdparty/pytest_lockfile.txt @@ -6,7 +6,7 @@ // { // "version": 3, // "valid_for_interpreter_constraints": [ -// "CPython<3.13,>=3.11" +// "CPython<3.13,>=3.12" // ], // "generated_with_requirements": [ // "pygments", @@ -30,6 +30,7 @@ "allow_wheels": true, "build_isolation": true, "constraints": [], + "excluded": [], "locked_resolves": [ { "locked_requirements": [ @@ -37,93 +38,53 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e", - "url": "https://files.pythonhosted.org/packages/cc/56/e1d75e8981a2a92c2a777e67c26efa96c66da59d645423146eb9ff3a851b/coverage-7.6.4-pp39.pp310-none-any.whl" + "hash": "fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f", + "url": "https://files.pythonhosted.org/packages/a1/70/de81bfec9ed38a64fc44a77c7665e20ca507fc3265597c28b0d989e4082e/coverage-7.6.10-pp39.pp310-none-any.whl" }, { "algorithm": "sha256", - "hash": "4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522", - "url": "https://files.pythonhosted.org/packages/13/f2/3a0bf1841a97c0654905e2ef531170f02c89fad2555879db8fe41a097871/coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl" + "hash": "abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", + "url": "https://files.pythonhosted.org/packages/04/62/4e6887e9be060f5d18f1dd58c2838b2d9646faf353232dec4e2d4b1c8644/coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546", - "url": "https://files.pythonhosted.org/packages/20/e7/c3ad33b179ab4213f0d70da25a9c214d52464efa11caeab438592eb1d837/coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", + "url": "https://files.pythonhosted.org/packages/15/d1/febf59030ce1c83b7331c3546d7317e5120c5966471727aa7ac157729c4b/coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117", - "url": "https://files.pythonhosted.org/packages/27/03/932c2c5717a7fa80cd43c6a07d3177076d97b79f12f40f882f9916db0063/coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl" + "hash": "204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", + "url": "https://files.pythonhosted.org/packages/4b/7e/5ac4c90192130e7cf8b63153fe620c8bfd9068f89a6d9b5f26f1550f7a26/coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" }, { "algorithm": "sha256", - "hash": "ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b", - "url": "https://files.pythonhosted.org/packages/36/91/fc02e8d8e694f557752120487fd982f654ba1421bbaa5560debf96ddceda/coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + "hash": "714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", + "url": "https://files.pythonhosted.org/packages/66/02/603ce0ac2d02bc7b393279ef618940b4a0535b0868ee791140bda9ecfa40/coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl" }, { "algorithm": "sha256", - "hash": "0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2", - "url": "https://files.pythonhosted.org/packages/3c/eb/634d7dfab24ac3b790bebaf9da0f4a5352cbc125ce6a9d5c6cf4c6cae3c7/coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl" + "hash": "7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", + "url": "https://files.pythonhosted.org/packages/84/ba/ac14d281f80aab516275012e8875991bb06203957aa1e19950139238d658/coverage-7.6.10.tar.gz" }, { "algorithm": "sha256", - "hash": "29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73", - "url": "https://files.pythonhosted.org/packages/52/12/3669b6382792783e92046730ad3327f53b2726f0603f4c311c4da4824222/coverage-7.6.4.tar.gz" + "hash": "27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", + "url": "https://files.pythonhosted.org/packages/86/77/19d09ea06f92fdf0487499283b1b7af06bc422ea94534c8fe3a4cd023641/coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl" }, { "algorithm": "sha256", - "hash": "51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25", - "url": "https://files.pythonhosted.org/packages/53/ed/a38401079ad320ad6e054a01ec2b61d270511aeb3c201c80e99c841229d5/coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl" + "hash": "c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", + "url": "https://files.pythonhosted.org/packages/b6/67/5479b9f2f99fcfb49c0d5cf61912a5255ef80b6e80a3cddba39c38146cf4/coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl" }, { "algorithm": "sha256", - "hash": "12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2", - "url": "https://files.pythonhosted.org/packages/7d/e7/9291de916d084f41adddfd4b82246e68d61d6a75747f075f7e64628998d2/coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl" + "hash": "e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", + "url": "https://files.pythonhosted.org/packages/d7/45/8a707f23c202208d7b286d78ad6233f50dcf929319b664b6cc18a03c1aae/coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b", - "url": "https://files.pythonhosted.org/packages/87/31/9c0cf84f0dfcbe4215b7eb95c31777cdc0483c13390e69584c8150c85175/coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27", - "url": "https://files.pythonhosted.org/packages/8a/3c/37a9d81bbd4b23bc7d46ca820e16174c613579c66342faa390a271d2e18b/coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db", - "url": "https://files.pythonhosted.org/packages/b5/4e/ebfc6944b96317df8b537ae875d2e57c27b84eb98820bc0a1055f358f056/coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl" - }, - { - "algorithm": "sha256", - "hash": "5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52", - "url": "https://files.pythonhosted.org/packages/c0/70/6b0627e5bd68204ee580126ed3513140b2298995c1233bd67404b4e44d0e/coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e", - "url": "https://files.pythonhosted.org/packages/cc/57/cb08f0eda0389a9a8aaa4fc1f9fec7ac361c3e2d68efd5890d7042c18aa3/coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5", - "url": "https://files.pythonhosted.org/packages/ce/9c/4337f468ef0ab7a2e0887a9c9da0e58e2eada6fc6cbee637a4acd5dfd8a9/coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl" - }, - { - "algorithm": "sha256", - "hash": "1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613", - "url": "https://files.pythonhosted.org/packages/d5/3f/0af47dcb9327f65a45455fbca846fe96eb57c153af46c4754a3ba678938a/coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718", - "url": "https://files.pythonhosted.org/packages/d5/c9/2c7681a9b3ca6e6f43d489c2e6653a53278ed857fd6e7010490c307b0a47/coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl" - }, - { - "algorithm": "sha256", - "hash": "2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1", - "url": "https://files.pythonhosted.org/packages/d9/0d/8e3ed00f1266ef7472a4e33458f42e39492e01a64281084fb3043553d3f1/coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl" + "hash": "e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", + "url": "https://files.pythonhosted.org/packages/dc/03/0334a79b26ecf59958f2fe9dd1f5ab3e2f88db876f5071933de39af09647/coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" } ], "project_name": "coverage", @@ -131,7 +92,7 @@ "tomli; python_full_version <= \"3.11.0a6\" and extra == \"toml\"" ], "requires_python": ">=3.9", - "version": "7.6.4" + "version": "7.6.10" }, { "artifacts": [ @@ -173,19 +134,19 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", - "url": "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl" + "hash": "09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", + "url": "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", - "url": "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz" + "hash": "c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", + "url": "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz" } ], "project_name": "packaging", "requires_dists": [], "requires_python": ">=3.8", - "version": "24.1" + "version": "24.2" }, { "artifacts": [ @@ -232,13 +193,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "url": "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + "hash": "9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", + "url": "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "url": "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + "hash": "61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", + "url": "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz" } ], "project_name": "pygments", @@ -246,19 +207,19 @@ "colorama>=0.4.6; extra == \"windows-terminal\"" ], "requires_python": ">=3.8", - "version": "2.18.0" + "version": "2.19.1" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", - "url": "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl" + "hash": "50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", + "url": "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", - "url": "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz" + "hash": "965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", + "url": "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz" } ], "project_name": "pytest", @@ -279,19 +240,19 @@ "xmlschema; extra == \"dev\"" ], "requires_python": ">=3.8", - "version": "8.3.3" + "version": "8.3.4" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", - "url": "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl" + "hash": "0d0bb693f7b99da304a0634afc0a4b19e49d5e0de2d670f38dc4bfa5727c5075", + "url": "https://files.pythonhosted.org/packages/61/d8/defa05ae50dcd6019a95527200d3b3980043df5aa445d40cb0ef9f7f98ab/pytest_asyncio-0.25.2-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", - "url": "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz" + "hash": "3f8ef9a98f45948ea91a0ed3dc4268b5326c0e7bce73892acc654df4262ad45f", + "url": "https://files.pythonhosted.org/packages/72/df/adcc0d60f1053d74717d21d58c0048479e9cab51464ce0d2965b086bd0e2/pytest_asyncio-0.25.2.tar.gz" } ], "project_name": "pytest-asyncio", @@ -299,28 +260,28 @@ "coverage>=6.2; extra == \"testing\"", "hypothesis>=5.7.1; extra == \"testing\"", "pytest<9,>=8.2", - "sphinx-rtd-theme>=1.0; extra == \"docs\"", + "sphinx-rtd-theme>=1; extra == \"docs\"", "sphinx>=5.3; extra == \"docs\"" ], - "requires_python": ">=3.8", - "version": "0.24.0" + "requires_python": ">=3.9", + "version": "0.25.2" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", - "url": "https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl" + "hash": "eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", + "url": "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857", - "url": "https://files.pythonhosted.org/packages/74/67/00efc8d11b630c56f15f4ad9c7f9223f1e5ec275aaae3fa9118c6a223ad2/pytest-cov-5.0.0.tar.gz" + "hash": "fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0", + "url": "https://files.pythonhosted.org/packages/be/45/9b538de8cef30e17c7b45ef42f538a94889ed6a16f2387a6c89e73220651/pytest-cov-6.0.0.tar.gz" } ], "project_name": "pytest-cov", "requires_dists": [ - "coverage[toml]>=5.2.1", + "coverage[toml]>=7.5", "fields; extra == \"testing\"", "hunter; extra == \"testing\"", "process-tests; extra == \"testing\"", @@ -328,8 +289,8 @@ "pytest>=4.6", "virtualenv; extra == \"testing\"" ], - "requires_python": ">=3.8", - "version": "5.0.0" + "requires_python": ">=3.9", + "version": "6.0.0" }, { "artifacts": [ @@ -357,22 +318,22 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6", - "url": "https://files.pythonhosted.org/packages/24/d3/00e575657422055c4ea220b2f80e8cc6026ab7130372b7067444d1b0ac10/pytest_randomly-3.15.0-py3-none-any.whl" + "hash": "8633d332635a1a0983d3bba19342196807f6afb17c3eef78e02c2f85dade45d6", + "url": "https://files.pythonhosted.org/packages/22/70/b31577d7c46d8e2f9baccfed5067dd8475262a2331ffb0bfdf19361c9bde/pytest_randomly-3.16.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047", - "url": "https://files.pythonhosted.org/packages/c9/d4/6e924a0b2855736d942703dec88dfc98b4fe0881c8fa849b6b0fbb9182fa/pytest_randomly-3.15.0.tar.gz" + "hash": "11bf4d23a26484de7860d82f726c0629837cf4064b79157bd18ec9d41d7feb26", + "url": "https://files.pythonhosted.org/packages/c0/68/d221ed7f4a2a49a664da721b8e87b52af6dd317af2a6cb51549cf17ac4b8/pytest_randomly-3.16.0.tar.gz" } ], "project_name": "pytest-randomly", "requires_dists": [ - "importlib-metadata>=3.6.0; python_version < \"3.10\"", + "importlib-metadata>=3.6; python_version < \"3.10\"", "pytest" ], - "requires_python": ">=3.8", - "version": "3.15.0" + "requires_python": ">=3.9", + "version": "3.16.0" }, { "artifacts": [ @@ -420,8 +381,9 @@ ], "only_builds": [], "only_wheels": [], + "overridden": [], "path_mappings": {}, - "pex_version": "2.3.1", + "pex_version": "2.16.2", "pip_version": "24.0", "prefer_older_binary": false, "requirements": [ @@ -434,7 +396,7 @@ "pytest-timeout" ], "requires_python": [ - "<3.13,>=3.11" + "<3.13,>=3.12" ], "resolver_version": "pip-2020-resolver", "style": "universal", diff --git a/3rdparty/requirements.txt b/3rdparty/requirements.txt index 30c9a5c41..6e6771c4e 100644 --- a/3rdparty/requirements.txt +++ b/3rdparty/requirements.txt @@ -5,53 +5,53 @@ PyYAML~=6.0.2 aiofiles~=24.1.0 aiologger~=0.7.0 aiorun~=2024.8.1 -apispec-webframeworks~=1.1.0 # dependency on Flask has to be specified manually! -apispec[yaml]~=6.6.1 +apispec-webframeworks~=1.2.0 # dependency on Flask has to be specified manually! +apispec[yaml]~=6.8.1 autopep8~=2.3.1 -colorlog~=6.8.2 -ciso8601~=2.3.1 +colorlog~=6.9.0 +ciso8601~=2.3.2 dataclasses-jsonschema[fast-validation,apispec,fast-dateparsing]~=2.16.0 easyhid~=0.0.10 fanucpy~=0.1.14 -fastuuid~=0.9.3 +fastuuid~=0.11.0 flask-swagger-ui~=4.11.1 flask_cors~=5.0.0 types_flask_cors~=5.0.0.20240902 gTTS~=2.5.3 hidapi~=0.14.0 lru-dict~=1.3.0 -numpy-quaternion[scipy,numba]~=2023.0.4 +numpy-quaternion[scipy,numba]~=2024.0.3 numpy>=1.26.4 # numpy 2.x.y is blocked by fanucpy -open3d==0.18.0 +open3d==0.19.0 openapi-spec-validator~=0.7.1 opencv-contrib-python~=4.10.0.84 -orjson~=3.10.7 -packaging~=24.1 +orjson~=3.10.13 +packaging~=24.2 pydub~=0.25.1 pyhumps==3.8.0 pyserial~=3.5 pyspacemouse~=1.1.4 -pytest-asyncio~=0.24.0 -pytest-randomly~=3.15.0 +pytest-asyncio~=0.25.1 +pytest-randomly~=3.16.0 pytest-repeat~=0.9.3 -pytest~=8.3.3 +pytest~=8.3.4 python-dateutil~=2.9.0.post0 requests~=2.32.3 -setuptools~=70.0.0 +setuptools~=75.7.0 sqlitedict~=2.1.0 types-playsound~=1.3.1.3 typing-inspect~=0.9.0 gr-urchin~=0.0.29 websocket-client~=1.8.0 -websockets~=13.0.1 -werkzeug~=3.0.4 -types-PyYAML==6.0.12.20240808 -types-aiofiles==24.1.0.20240626 +websockets~=14.1 +werkzeug~=3.1.3 +types-PyYAML==6.0.12.20241230 +types-aiofiles==24.1.0.20241221 types-orjson==3.6.2 -types-python-dateutil==2.9.0.20240906 -types-requests==2.32.0.20240907 -types-setuptools==74.1.0.20240907 +types-python-dateutil==2.9.0.20241206 +types-requests==2.32.0.20241016 +types-setuptools==75.6.0.20241223 pydub-stubs==0.25.1.1 opencv-stubs[opencv-contrib]==0.0.10 lark==1.2.2 -pymodbus~=3.7.4 \ No newline at end of file +pymodbus~=3.8.3 \ No newline at end of file diff --git a/3rdparty/setuptools-requirements.txt b/3rdparty/setuptools-requirements.txt index d6fc62393..a104cd2a9 100644 --- a/3rdparty/setuptools-requirements.txt +++ b/3rdparty/setuptools-requirements.txt @@ -1 +1 @@ -setuptools==74.1.2 \ No newline at end of file +setuptools==75.7.0 \ No newline at end of file diff --git a/3rdparty/setuptools_lockfile.txt b/3rdparty/setuptools_lockfile.txt index e93b0951f..eef34a805 100644 --- a/3rdparty/setuptools_lockfile.txt +++ b/3rdparty/setuptools_lockfile.txt @@ -6,10 +6,10 @@ // { // "version": 3, // "valid_for_interpreter_constraints": [ -// "CPython<3.13,>=3.11" +// "CPython<3.13,>=3.12" // ], // "generated_with_requirements": [ -// "setuptools==74.1.2" +// "setuptools==75.7.0" // ], // "manylinux": "manylinux2014", // "requirement_constraints": [], @@ -24,6 +24,7 @@ "allow_wheels": true, "build_isolation": true, "constraints": [], + "excluded": [], "locked_resolves": [ { "locked_requirements": [ @@ -31,13 +32,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308", - "url": "https://files.pythonhosted.org/packages/cb/9c/9ad11ac06b97e55ada655f8a6bea9d1d3f06e120b178cd578d80e558191d/setuptools-74.1.2-py3-none-any.whl" + "hash": "84fb203f278ebcf5cd08f97d3fb96d3fbed4b629d500b29ad60d11e00769b183", + "url": "https://files.pythonhosted.org/packages/4e/6e/abdfaaf5c294c553e7a81cf5d801fbb4f53f5c5b6646de651f92a2667547/setuptools-75.7.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "95b40ed940a1c67eb70fc099094bd6e99c6ee7c23aa2306f4d2697ba7916f9c6", - "url": "https://files.pythonhosted.org/packages/3e/2c/f0a538a2f91ce633a78daaeb34cbfb93a54bd2132a6de1f6cec028eee6ef/setuptools-74.1.2.tar.gz" + "hash": "886ff7b16cd342f1d1defc16fc98c9ce3fde69e087a4e1983d7ab634e5f41f4f", + "url": "https://files.pythonhosted.org/packages/ac/57/e6f0bde5a2c333a32fbcce201f906c1fd0b3a7144138712a5e9d9598c5ec/setuptools-75.7.0.tar.gz" } ], "project_name": "setuptools", @@ -45,24 +46,27 @@ "build[virtualenv]>=1.0.3; extra == \"test\"", "filelock>=3.4.0; extra == \"test\"", "furo; extra == \"doc\"", - "importlib-metadata>=6; python_version < \"3.10\" and extra == \"core\"", - "importlib-metadata>=7.0.2; python_version < \"3.10\" and extra == \"type\"", - "importlib-resources>=5.10.2; python_version < \"3.9\" and extra == \"core\"", + "importlib_metadata>=6; python_version < \"3.10\" and extra == \"core\"", + "importlib_metadata>=7.0.2; python_version < \"3.10\" and extra == \"type\"", "ini2toml[lite]>=0.14; extra == \"test\"", + "jaraco.collections; extra == \"core\"", "jaraco.develop>=7.21; (python_version >= \"3.9\" and sys_platform != \"cygwin\") and extra == \"test\"", "jaraco.develop>=7.21; sys_platform != \"cygwin\" and extra == \"type\"", "jaraco.envs>=2.2; extra == \"test\"", + "jaraco.functools>=4; extra == \"core\"", "jaraco.packaging>=9.3; extra == \"doc\"", - "jaraco.path>=3.2.0; extra == \"test\"", - "jaraco.test; extra == \"test\"", + "jaraco.path>=3.7.2; extra == \"test\"", + "jaraco.test>=5.5; extra == \"test\"", "jaraco.text>=3.7; extra == \"core\"", "jaraco.tidelift>=1.4; extra == \"doc\"", - "more-itertools>=8.8; extra == \"core\"", - "mypy==1.11.*; extra == \"type\"", - "packaging>=23.2; extra == \"test\"", - "packaging>=24; extra == \"core\"", + "more_itertools; extra == \"core\"", + "more_itertools>=8.8; extra == \"core\"", + "mypy==1.14.*; extra == \"type\"", + "packaging; extra == \"core\"", + "packaging>=24.2; extra == \"core\"", + "packaging>=24.2; extra == \"test\"", "pip>=19.1; extra == \"test\"", - "platformdirs>=2.6.2; extra == \"core\"", + "platformdirs>=4.2.2; extra == \"core\"", "pygments-github-lexers==0.0.5; extra == \"doc\"", "pyproject-hooks!=1.1; extra == \"doc\"", "pyproject-hooks!=1.1; extra == \"test\"", @@ -78,7 +82,7 @@ "pytest-timeout; extra == \"test\"", "pytest-xdist>=3; extra == \"test\"", "rst.linker>=1.9; extra == \"doc\"", - "ruff>=0.5.2; sys_platform != \"cygwin\" and extra == \"check\"", + "ruff>=0.8.0; sys_platform != \"cygwin\" and extra == \"check\"", "sphinx-favicon; extra == \"doc\"", "sphinx-inline-tabs; extra == \"doc\"", "sphinx-lint; extra == \"doc\"", @@ -93,8 +97,8 @@ "wheel>=0.43.0; extra == \"core\"", "wheel>=0.44.0; extra == \"test\"" ], - "requires_python": ">=3.8", - "version": "74.1.2" + "requires_python": ">=3.9", + "version": "75.7.0" } ], "platform_tag": null @@ -102,15 +106,16 @@ ], "only_builds": [], "only_wheels": [], + "overridden": [], "path_mappings": {}, - "pex_version": "2.3.1", + "pex_version": "2.16.2", "pip_version": "24.0", "prefer_older_binary": false, "requirements": [ - "setuptools==74.1.2" + "setuptools==75.7.0" ], "requires_python": [ - "<3.13,>=3.11" + "<3.13,>=3.12" ], "resolver_version": "pip-2020-resolver", "style": "universal", diff --git a/build-support/install_ur_dependencies.sh b/build-support/install_ur_dependencies.sh index e02c92eb2..afe9b0993 100755 --- a/build-support/install_ur_dependencies.sh +++ b/build-support/install_ur_dependencies.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash apt-get install -y -q --no-install-recommends \ - ros-jazzy-ros-base=0.11.0-1noble.20241018.114811 \ - ros-jazzy-ur=2.4.13-1noble.20241118.195218 \ - ros-jazzy-moveit-py=2.10.0-1noble.20241108.205840 + ros-jazzy-ros-base=0.11.0-1noble.20250115.204954 \ + ros-jazzy-ur=3.0.2-1noble.20250202.035908 \ + ros-jazzy-moveit-py=2.12.1-1noble.20250202.033533 diff --git a/compose-files/fit-demo/docker-compose.yml b/compose-files/fit-demo/docker-compose.yml index 1697b55c1..01aa2b9df 100644 --- a/compose-files/fit-demo/docker-compose.yml +++ b/compose-files/fit-demo/docker-compose.yml @@ -186,7 +186,7 @@ services: - "10040:10040" fit-demo-project: - image: registry.gitlab.com/kinalisoft/test-it-off/project:2.0.2 + image: registry.gitlab.com/kinalisoft/test-it-off/project:2.2.0 container_name: "fit-demo-project" ports: - "10000-10001:10000-10001" @@ -200,7 +200,7 @@ services: - fit-demo-asset-network fit-demo-nginx: - image: nginx:1.27.1 + image: nginx:1.27.3 container_name: "fit-demo-nginx" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf diff --git a/compose-files/ur-demo/docker-compose.yml b/compose-files/ur-demo/docker-compose.yml index 03cf89d20..312331739 100644 --- a/compose-files/ur-demo/docker-compose.yml +++ b/compose-files/ur-demo/docker-compose.yml @@ -110,7 +110,7 @@ services: - "10040:10040" ur-demo-project: - image: registry.gitlab.com/kinalisoft/test-it-off/project:2.0.2 + image: registry.gitlab.com/kinalisoft/test-it-off/project:2.2.0 container_name: "ur-demo-project" ports: - "10000-10001:10000-10001" @@ -123,7 +123,7 @@ services: - ur-demo-network ur-demo-nginx: - image: nginx:1.27.1 + image: nginx:1.27.3 container_name: "ur-demo-nginx" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf diff --git a/pants-plugins/macros.py b/pants-plugins/macros.py index f94208ce8..5c4498d60 100644 --- a/pants-plugins/macros.py +++ b/pants-plugins/macros.py @@ -15,12 +15,12 @@ def arcor2_setup_py(**kwargs): "Intended Audience :: Developers", "Topic :: Software Development :: Build Tools", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", - "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Natural Language :: English", "Topic :: Scientific/Engineering" ] - kwargs["python_requires"] = "==3.11.*" # we support only Python 3.11 + kwargs["python_requires"] = "==3.12.*" # we support only Python 3.12 return setup_py(**kwargs) diff --git a/pants.ci.toml b/pants.ci.toml index 34b7293cd..c75850588 100644 --- a/pants.ci.toml +++ b/pants.ci.toml @@ -10,7 +10,7 @@ log = true use_coverage = true [coverage-py] -interpreter_constraints = ["==3.11.*"] +interpreter_constraints = ["==3.12.*"] report = ["xml"] global_report = true diff --git a/pants.toml b/pants.toml index e39b35bf2..e91a1224f 100644 --- a/pants.toml +++ b/pants.toml @@ -1,5 +1,5 @@ [GLOBAL] -pants_version = "2.22.0" +pants_version = "2.24.0" colors = true process_execution_local_parallelism = 4 @@ -35,22 +35,27 @@ root_patterns = [ ] [python] -interpreter_constraints = [">=3.11,<3.13"] +interpreter_constraints = [">=3.12,<3.13"] enable_resolves = true [python.resolves] python-default = "3rdparty/constraints.txt" flake8 = "3rdparty/flake8_lockfile.txt" +black = "3rdparty/black_lockfile.txt" mypy = "3rdparty/mypy_lockfile.txt" pytest = "3rdparty/pytest_lockfile.txt" setuptools = "3rdparty/setuptools_lockfile.txt" [python-bootstrap] -search_path = ["", "/usr/bin/python3.11"] +search_path = ["", "/usr/bin/python3.12"] [flake8] install_from_resolve = "flake8" +[black] +install_from_resolve = "black" +interpreter_constraints = [">=3.12,<3.13"] + [mypy] install_from_resolve = "mypy" @@ -63,7 +68,7 @@ install_from_resolve = "setuptools" [test] use_coverage = false -extra_env_vars = ["PYTHONDEVMODE=1", "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/jazzy/opt/rviz_ogre_vendor/lib:/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/opt/gz_math_vendor/lib:/opt/ros/jazzy/opt/gz_utils_vendor/lib:/opt/ros/jazzy/opt/gz_cmake_vendor/lib:/opt/ros/jazzy/lib:/opt/ros/jazzy/opt/sdformat_vendor/lib", "HOME=/tmp"] # "PYTHONWARNINGS=error" not useable due to DeprecationWarning in networkx-2.2 +extra_env_vars = ["LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/jazzy/opt/rviz_ogre_vendor/lib:/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/opt/gz_math_vendor/lib:/opt/ros/jazzy/opt/gz_utils_vendor/lib:/opt/ros/jazzy/opt/gz_cmake_vendor/lib:/opt/ros/jazzy/lib:/opt/ros/jazzy/opt/sdformat_vendor/lib", "HOME=/tmp", "PYTHONDEVMODE=1"] # "PYTHONWARNINGS=error" not useable due to DeprecationWarning in networkx-2.2 timeout_default = 600 [python-infer] diff --git a/pyproject.toml b/pyproject.toml index 36fc99ffb..48555fab8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,3 @@ [tool.black] line-length = 120 -target-version = ['py311'] \ No newline at end of file +target-version = ['py312'] \ No newline at end of file diff --git a/pytest.ini b/pytest.ini index 6c6e4aab0..9a1336a3d 100644 --- a/pytest.ini +++ b/pytest.ini @@ -6,5 +6,5 @@ log_cli = 1 log_cli_level = INFO log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s) log_cli_date_format=%Y-%m-%d %H:%M:%S -asyncio_mode=strict +# asyncio_mode=strict pythonpath = /opt/ros/jazzy/lib/python3.12/site-packages /opt/ros/jazzy/local/lib/python3.12/dist-packages \ No newline at end of file diff --git a/src/docker/arcor2_3d_mouse/Dockerfile b/src/docker/arcor2_3d_mouse/Dockerfile index f4acc4ca6..abd678a8d 100644 --- a/src/docker/arcor2_3d_mouse/Dockerfile +++ b/src/docker/arcor2_3d_mouse/Dockerfile @@ -1,14 +1,14 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_3d_mouse.scripts/mouse_launcher.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_3d_mouse.scripts/mouse_launcher.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm # curl is for healthcheck RUN apt-get update \ diff --git a/src/docker/arcor2_arserver/Dockerfile b/src/docker/arcor2_arserver/Dockerfile index 2fc597aa4..08053987b 100644 --- a/src/docker/arcor2_arserver/Dockerfile +++ b/src/docker/arcor2_arserver/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_arserver.scripts/arserver.pex /binary.pex RUN PEX_TOOLS=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_arserver.scripts/arserver.pex /binary.pex RUN PEX_TOOLS=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm RUN apt-get update \ && apt-get install -y -q --no-install-recommends libgl1-mesa-glx=22.3.6-1+deb12u1 libglib2.0-0=2.80.0-6ubuntu3.2 \ diff --git a/src/docker/arcor2_build/Dockerfile b/src/docker/arcor2_build/Dockerfile index b0d1ce8cf..09d6240ef 100644 --- a/src/docker/arcor2_build/Dockerfile +++ b/src/docker/arcor2_build/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_build.scripts/build.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_build.scripts/build.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm # curl is for healthcheck RUN apt-get update \ diff --git a/src/docker/arcor2_calibration/Dockerfile b/src/docker/arcor2_calibration/Dockerfile index d820ce7f0..23060f759 100644 --- a/src/docker/arcor2_calibration/Dockerfile +++ b/src/docker/arcor2_calibration/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_calibration.scripts/calibration.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_calibration.scripts/calibration.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm # libgomp1 and libusb-1.0-0 are because of Open3D # curl is for healthcheck diff --git a/src/docker/arcor2_dobot/Dockerfile b/src/docker/arcor2_dobot/Dockerfile index bb8092c7a..69a17570d 100644 --- a/src/docker/arcor2_dobot/Dockerfile +++ b/src/docker/arcor2_dobot/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_dobot.scripts/dobot.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_dobot.scripts/dobot.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm # curl is for healthcheck RUN apt-get update \ diff --git a/src/docker/arcor2_execution/Dockerfile b/src/docker/arcor2_execution/Dockerfile index 9b87c545d..8a1e3b7ba 100644 --- a/src/docker/arcor2_execution/Dockerfile +++ b/src/docker/arcor2_execution/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_execution.scripts/execution.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_execution.scripts/execution.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm RUN apt-get update \ && apt-get install -y -q --no-install-recommends libgl1-mesa-glx=22.3.6-1+deb12u1 libglib2.0-0=2.80.0-6ubuntu3.2 \ diff --git a/src/docker/arcor2_execution_proxy/Dockerfile b/src/docker/arcor2_execution_proxy/Dockerfile index 56cb186d9..c4bf573b7 100644 --- a/src/docker/arcor2_execution_proxy/Dockerfile +++ b/src/docker/arcor2_execution_proxy/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_execution_rest_proxy.scripts/execution_rest_proxy.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_execution_rest_proxy.scripts/execution_rest_proxy.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm RUN mkdir -p /root/tokens \ && mkdir -p /root/project diff --git a/src/docker/arcor2_fanuc/Dockerfile b/src/docker/arcor2_fanuc/Dockerfile index 1b256b96e..7bffadf52 100644 --- a/src/docker/arcor2_fanuc/Dockerfile +++ b/src/docker/arcor2_fanuc/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_fanuc.scripts/fanuc.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_fanuc.scripts/fanuc.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm # curl is for healthcheck RUN apt-get update \ diff --git a/src/docker/arcor2_fanuc_upload_object_types/Dockerfile b/src/docker/arcor2_fanuc_upload_object_types/Dockerfile index 065c1f9d5..f583e7bf1 100644 --- a/src/docker/arcor2_fanuc_upload_object_types/Dockerfile +++ b/src/docker/arcor2_fanuc_upload_object_types/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_fanuc.scripts/upload_objects.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_fanuc.scripts/upload_objects.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm ENTRYPOINT ["/bin/app/pex"] COPY --from=deps /bin/app /bin/app diff --git a/src/docker/arcor2_scene/Dockerfile b/src/docker/arcor2_scene/Dockerfile index 1e664940e..59aa16b6b 100644 --- a/src/docker/arcor2_scene/Dockerfile +++ b/src/docker/arcor2_scene/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_scene.scripts/scene.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_scene.scripts/scene.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm # libgomp1 and libusb-1.0-0 are because of Open3D # curl is for healthcheck diff --git a/src/docker/arcor2_upload_builtin_objects/Dockerfile b/src/docker/arcor2_upload_builtin_objects/Dockerfile index 90ad69783..7f495aa79 100644 --- a/src/docker/arcor2_upload_builtin_objects/Dockerfile +++ b/src/docker/arcor2_upload_builtin_objects/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2.scripts/upload_builtin_objects.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2.scripts/upload_builtin_objects.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm ENTRYPOINT ["/bin/app/pex"] COPY --from=deps /bin/app /bin/app diff --git a/src/docker/arcor2_upload_fit_demo/Dockerfile b/src/docker/arcor2_upload_fit_demo/Dockerfile index 838da881c..234b93235 100644 --- a/src/docker/arcor2_upload_fit_demo/Dockerfile +++ b/src/docker/arcor2_upload_fit_demo/Dockerfile @@ -1,12 +1,12 @@ -FROM python:3.11.10-bookworm as deps +FROM python:3.12.8-bookworm as deps COPY src.python.arcor2_fit_demo.scripts/upload_objects.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=deps --compile /bin/app -FROM python:3.11.10-bookworm as srcs +FROM python:3.12.8-bookworm as srcs COPY src.python.arcor2_fit_demo.scripts/upload_objects.pex /binary.pex RUN PEX_TOOLS=1 PYTHONOPTIMIZE=1 /usr/local/bin/python /binary.pex venv --scope=srcs --compile /bin/app -FROM python:3.11.10-bookworm +FROM python:3.12.8-bookworm ENTRYPOINT ["/bin/app/pex"] COPY --from=deps /bin/app /bin/app diff --git a/src/docker/arcor2_ur/BUILD b/src/docker/arcor2_ur/BUILD index 9428788d1..c17a555f4 100644 --- a/src/docker/arcor2_ur/BUILD +++ b/src/docker/arcor2_ur/BUILD @@ -1,2 +1,7 @@ shell_source(name="start.sh", source="start.sh") -docker_image(name="arcor2_ur", repository="arcor2/arcor2_ur", dependencies=[":start.sh", "build-support:install_ur_dependencies.sh"], image_tags=["1.5.0"]) +docker_image( + name="arcor2_ur", + repository="arcor2/arcor2_ur", + dependencies=[":start.sh", "build-support:install_ur_dependencies.sh"], + image_tags=["1.5.0"], +) diff --git a/src/docker/arcor2_ur/Dockerfile b/src/docker/arcor2_ur/Dockerfile index 5d58b3b04..5d4a67477 100644 --- a/src/docker/arcor2_ur/Dockerfile +++ b/src/docker/arcor2_ur/Dockerfile @@ -1,16 +1,16 @@ -FROM ubuntu:noble-20241011 AS deps +FROM ubuntu:noble-20241118.1 AS deps COPY src.python.arcor2_ur.scripts/ur.pex /binary.pex RUN apt-get update && apt-get install -y -q --no-install-recommends \ python3=3.12.3-0ubuntu2 RUN PEX_TOOLS=1 python3 /binary.pex venv --scope=deps --compile /bin/app -FROM ubuntu:noble-20241011 AS srcs +FROM ubuntu:noble-20241118.1 AS srcs COPY src.python.arcor2_ur.scripts/ur.pex /binary.pex RUN apt-get update && apt-get install -y -q --no-install-recommends \ python3=3.12.3-0ubuntu2 RUN PEX_TOOLS=1 python3 /binary.pex venv --scope=srcs --compile /bin/app -FROM ubuntu:noble-20241011 +FROM ubuntu:noble-20241118.1 ARG DEBIAN_FRONTEND=noninteractive diff --git a/src/python/arcor2/data/common.py b/src/python/arcor2/data/common.py index aa1cb0750..69d991ebe 100644 --- a/src/python/arcor2/data/common.py +++ b/src/python/arcor2/data/common.py @@ -42,7 +42,7 @@ def set(cls) -> set[int]: class FlowTypes(StrEnum): - DEFAULT: str = "default" + DEFAULT = "default" class LinkToActionOutput(NamedTuple): @@ -407,8 +407,8 @@ class ActionParameterException(Arcor2Exception): @dataclass class ActionParameter(Parameter): class TypeEnum(StrEnum): - PROJECT_PARAMETER: str = "project_parameter" - LINK: str = "link" + PROJECT_PARAMETER = "project_parameter" + LINK = "link" def str_from_value(self) -> str: val = json.loads(self.value) @@ -759,59 +759,3 @@ class WebApiError(JsonSchemaMixin, Arcor2Exception): def __str__(self): return f"{self.service} ({self.type}): {self.message}" - - -@dataclass -class Direction(JsonSchemaMixin): - x: float = 0.0 - y: float = 0.0 - z: float = 0.0 - - @classmethod - def from_position(cls, position: Position) -> Direction: - return Direction(position.x, position.y, position.z) - - -class BodyJointId(IntEnum): - PELVIS = 0 - SPINE_NAVEL = 1 - SPINE_CHEST = 2 - NECK = 3 - CLAVICLE_LEFT = 4 - SHOULDER_LEFT = 5 - ELBOW_LEFT = 6 - WRIST_LEFT = 7 - HAND_LEFT = 8 - HANDTIP_LEFT = 9 - THUMB_LEFT = 10 - CLAVICLE_RIGHT = 11 - SHOULDER_RIGHT = 12 - ELBOW_RIGHT = 13 - WRIST_RIGHT = 14 - HAND_RIGHT = 15 - HANDTIP_RIGHT = 16 - THUMB_RIGHT = 17 - HIP_LEFT = 18 - KNEE_LEFT = 19 - ANKLE_LEFT = 20 - FOOT_LEFT = 21 - HIP_RIGHT = 22 - KNEE_RIGHT = 23 - ANKLE_RIGHT = 24 - FOOT_RIGHT = 25 - HEAD = 26 - NOSE = 27 - EYE_LEFT = 28 - EAR_LEFT = 29 - EYE_RIGHT = 30 - EAR_RIGHT = 31 - - @classmethod - def from_str_or_default(cls, maybe_str: str | None) -> BodyJointId: - if maybe_str is None: - return cls.SPINE_CHEST - try: - val = int(maybe_str) - return cls(val) - except (TypeError, ValueError): - return cls.SPINE_CHEST diff --git a/src/python/arcor2/data/events.py b/src/python/arcor2/data/events.py index 05be2322f..dc6733376 100644 --- a/src/python/arcor2/data/events.py +++ b/src/python/arcor2/data/events.py @@ -16,10 +16,10 @@ @dataclass class Event(JsonSchemaMixin): class Type(common.StrEnum): - ADD: str = "add" - UPDATE: str = "update" - REMOVE: str = "remove" - UPDATE_BASE: str = "update_base" + ADD = "add" + UPDATE = "update" + REMOVE = "remove" + UPDATE_BASE = "update_base" event: str = field(init=False) change_type: Optional[Type] = field(init=False) @@ -36,9 +36,9 @@ class Notification(Event): @dataclass class Data(JsonSchemaMixin): class Level(common.StrEnum): - INFO: str = "Info" - WARN: str = "Warn" - ERROR: str = "Error" + INFO = "Info" + WARN = "Warn" + ERROR = "Error" message: str level: Level @@ -72,14 +72,14 @@ class PackageState(Event): @dataclass class Data(JsonSchemaMixin): class StateEnum(Enum): - STARTED: str = "started" # started, but not fully running yet - RUNNING: str = "running" - STOPPING: str = "stopping" # it may take some time to stop the package - STOPPED: str = "stopped" - PAUSING: str = "pausing" # it may take some time to pause the package - PAUSED: str = "paused" - RESUMING: str = "resuming" - UNDEFINED: str = "undefined" + STARTED = "started" # started, but not fully running yet + RUNNING = "running" + STOPPING = "stopping" # it may take some time to stop the package + STOPPED = "stopped" + PAUSING = "pausing" # it may take some time to pause the package + PAUSED = "paused" + RESUMING = "resuming" + UNDEFINED = "undefined" state: StateEnum = StateEnum.UNDEFINED package_id: Optional[str] = None diff --git a/src/python/arcor2/data/object_type.py b/src/python/arcor2/data/object_type.py index 039b917b8..d33961b73 100644 --- a/src/python/arcor2/data/object_type.py +++ b/src/python/arcor2/data/object_type.py @@ -10,11 +10,11 @@ class Model3dType(Enum): - NONE: str = "None" - BOX: str = "Box" - CYLINDER: str = "Cylinder" - SPHERE: str = "Sphere" - MESH: str = "Mesh" + NONE = "None" + BOX = "Box" + CYLINDER = "Cylinder" + SPHERE = "Sphere" + MESH = "Mesh" @dataclass diff --git a/src/python/arcor2/flask.py b/src/python/arcor2/flask.py index 61ad1ec16..cec6cc1c7 100644 --- a/src/python/arcor2/flask.py +++ b/src/python/arcor2/flask.py @@ -149,9 +149,11 @@ def run_app( openapi_version="3.0.2", plugins=[FlaskPlugin(), DataclassesPlugin()], info={ - "description": "Dependencies: none" - if dependencies is None - else f'Dependencies: {", ".join([f"{k} {v}" for k, v in dependencies.items()])}' + "description": ( + "Dependencies: none" + if dependencies is None + else f'Dependencies: {", ".join([f"{k} {v}" for k, v in dependencies.items()])}' + ) }, ) diff --git a/src/python/arcor2/object_types/abstract.py b/src/python/arcor2/object_types/abstract.py index 28408e965..0c8b86c7b 100644 --- a/src/python/arcor2/object_types/abstract.py +++ b/src/python/arcor2/object_types/abstract.py @@ -28,7 +28,7 @@ class Settings(JsonSchemaMixin): pass -class Generic(metaclass=abc.ABCMeta): +class Generic(metaclass=abc.ABCMeta): # noqa:B024 """Generic object.""" DYNAMIC_PARAMS: DynamicParamDict = {} diff --git a/src/python/arcor2/object_types/tests/BUILD b/src/python/arcor2/object_types/tests/BUILD index 1b57bc3eb..78b1bf508 100644 --- a/src/python/arcor2/object_types/tests/BUILD +++ b/src/python/arcor2/object_types/tests/BUILD @@ -2,7 +2,6 @@ python_tests( runtime_package_dependencies=[ "src/python/arcor2_scene/scripts:scene", ], - interpreter_constraints=["==3.11.*"], ) python_test_utils( diff --git a/src/python/arcor2/object_types/tests/test_utils.py b/src/python/arcor2/object_types/tests/test_utils.py index 665934eea..b333c8436 100644 --- a/src/python/arcor2/object_types/tests/test_utils.py +++ b/src/python/arcor2/object_types/tests/test_utils.py @@ -7,9 +7,9 @@ class MyEnum(StrEnum): - OPT1: str = "opt1" - OPT2: str = "opt2" - OPT3: str = "opt3" + OPT1 = "opt1" + OPT2 = "opt2" + OPT3 = "opt3" @dataclass diff --git a/src/python/arcor2/object_types/utils.py b/src/python/arcor2/object_types/utils.py index 0ba35bc48..8e453111b 100644 --- a/src/python/arcor2/object_types/utils.py +++ b/src/python/arcor2/object_types/utils.py @@ -163,6 +163,9 @@ def get_settings_def(type_def: type[Generic]) -> type[Settings]: else: settings_cls = param.annotation + if not isinstance(settings_cls, type): + raise Arcor2Exception("Settings annotation is not a class.") + if not is_dataclass(settings_cls): raise Arcor2Exception("Settings misses @dataclass decorator.") @@ -203,10 +206,20 @@ def base_from_source(source: str | ast.AST, cls_name: str) -> list[str]: def iterate_over_actions( type_def: type[Generic], -) -> Iterator[tuple[str, Callable[[Any,], Any]]]: +) -> Iterator[ + tuple[ + str, + Callable[ + [ + Any, + ], + Any, + ], + ] +]: for method_name, method in inspect.getmembers(type_def, inspect.isroutine): try: - if not isinstance(method.__action__, ActionMetadata): + if not isinstance(method.__action__, ActionMetadata): # type: ignore continue except AttributeError: continue diff --git a/src/python/arcor2/rest.py b/src/python/arcor2/rest.py index 367245e16..8aa693834 100644 --- a/src/python/arcor2/rest.py +++ b/src/python/arcor2/rest.py @@ -99,8 +99,7 @@ def call( raw_params: bool = False, files: OptFiles = None, timeout: OptTimeout = None, -) -> None: - ... +) -> None: ... # single value-returning overloads @@ -115,8 +114,7 @@ def call( raw_params: bool = False, files: OptFiles = None, timeout: OptTimeout = None, -) -> Primitive: - ... +) -> Primitive: ... @overload @@ -130,8 +128,7 @@ def call( raw_params: bool = False, files: OptFiles = None, timeout: OptTimeout = None, -) -> DataClass: - ... +) -> DataClass: ... @overload @@ -145,8 +142,7 @@ def call( raw_params: bool = False, files: OptFiles = None, timeout: OptTimeout = None, -) -> BytesIO: - ... +) -> BytesIO: ... # list-returning overloads @@ -161,8 +157,7 @@ def call( raw_params: bool = False, files: OptFiles = None, timeout: OptTimeout = None, -) -> list[Primitive]: - ... +) -> list[Primitive]: ... @overload @@ -176,8 +171,7 @@ def call( raw_params: bool = False, files: OptFiles = None, timeout: OptTimeout = None, -) -> list[DataClass]: - ... +) -> list[DataClass]: ... @overload @@ -191,8 +185,7 @@ def call( raw_params: bool = False, files: OptFiles = None, timeout: OptTimeout = None, -) -> list[BytesIO]: - ... +) -> list[BytesIO]: ... def call( diff --git a/src/python/arcor2/test_objects/dummy_multiarm_robot.py b/src/python/arcor2/test_objects/dummy_multiarm_robot.py index d2fb79c49..cea2ff0aa 100644 --- a/src/python/arcor2/test_objects/dummy_multiarm_robot.py +++ b/src/python/arcor2/test_objects/dummy_multiarm_robot.py @@ -12,8 +12,8 @@ class DummyMultiArmRobot(MultiArmRobot): _ABSTRACT = False class Arms(StrEnum): - left: str = "left" - right: str = "right" + left = "left" + right = "right" GRIPPERS: dict[str, set[str]] = { Arms.left: {"l_gripper_1", "l_gripper_2"}, diff --git a/src/python/arcor2/ws_server.py b/src/python/arcor2/ws_server.py index 05429a4d4..5e90bab0f 100644 --- a/src/python/arcor2/ws_server.py +++ b/src/python/arcor2/ws_server.py @@ -6,7 +6,7 @@ import websockets from aiologger.levels import LogLevel from dataclasses_jsonschema import ValidationError -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2 import env, json from arcor2.data.events import Event @@ -19,11 +19,11 @@ ReqT = TypeVar("ReqT", bound=RPC.Request) RespT = TypeVar("RespT", bound=RPC.Response) -RPC_CB = Callable[[ReqT, WsClient], Coroutine[Any, Any, None | RespT]] +RPC_CB = Callable[[ReqT, ServerConnection], Coroutine[Any, Any, None | RespT]] RPC_DICT_TYPE = dict[str, tuple[type[RPC], RPC_CB]] EventT = TypeVar("EventT", bound=Event) -EVENT_DICT_TYPE = dict[str, tuple[type[EventT], Callable[[EventT, WsClient], Coroutine[Any, Any, None]]]] +EVENT_DICT_TYPE = dict[str, tuple[type[EventT], Callable[[EventT, ServerConnection], Coroutine[Any, Any, None]]]] def custom_exception_handler(loop: asyncio.AbstractEventLoop, context: dict[str, Any]) -> None: @@ -34,7 +34,7 @@ def custom_exception_handler(loop: asyncio.AbstractEventLoop, context: dict[str, loop.stop() -async def send_json_to_client(client: WsClient, data: str) -> None: +async def send_json_to_client(client: ServerConnection, data: str) -> None: try: await client.send(data) except websockets.exceptions.ConnectionClosed: diff --git a/src/python/arcor2_arserver/execution.py b/src/python/arcor2_arserver/execution.py index 98930bede..0946c66dc 100644 --- a/src/python/arcor2_arserver/execution.py +++ b/src/python/arcor2_arserver/execution.py @@ -6,7 +6,8 @@ import aiofiles import websockets from aiofiles import tempfile -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.client import connect +from websockets.asyncio.server import ServerConnection from arcor2 import helpers as hlp from arcor2 import rest @@ -118,7 +119,7 @@ async def build_and_upload_package(project_id: str, package_name: str) -> str: return package_id -async def manager_request(req: rpc.common.RPC.Request, ui: None | WsClient = None) -> rpc.common.RPC.Response: +async def manager_request(req: rpc.common.RPC.Request, ui: None | ServerConnection = None) -> rpc.common.RPC.Response: assert req.id not in MANAGER_RPC_RESPONSES MANAGER_RPC_RESPONSES[req.id] = RespQueue(maxsize=1) @@ -129,29 +130,26 @@ async def manager_request(req: rpc.common.RPC.Request, ui: None | WsClient = Non async def project_manager_client(handle_manager_incoming_messages) -> None: - while True: - logger.info("Attempting connection to manager...") - + async for manager_client in connect(EXE_URL): try: - async with websockets.connect(EXE_URL) as manager_client: - logger.info("Connected to manager.") - - future = asyncio.ensure_future(handle_manager_incoming_messages(manager_client)) - - while True: - if future.done(): - break - - try: - msg = await asyncio.wait_for(MANAGER_RPC_REQUEST_QUEUE.get(), 1.0) - except asyncio.TimeoutError: - continue - - try: - await manager_client.send(msg.to_json()) - except websockets.exceptions.ConnectionClosed: - await MANAGER_RPC_REQUEST_QUEUE.put(msg) - break - except ConnectionRefusedError as e: + logger.info("Connected to manager.") + + future = asyncio.ensure_future(handle_manager_incoming_messages(manager_client)) + + while True: + if future.done(): + break + + try: + msg = await asyncio.wait_for(MANAGER_RPC_REQUEST_QUEUE.get(), 1.0) + except asyncio.TimeoutError: + continue + + try: + await manager_client.send(msg.to_json()) + except websockets.exceptions.ConnectionClosed: + await MANAGER_RPC_REQUEST_QUEUE.put(msg) + break + except websockets.exceptions.ConnectionClosed as e: logger.error(e) - await asyncio.sleep(delay=1.0) + continue diff --git a/src/python/arcor2_arserver/globals.py b/src/python/arcor2_arserver/globals.py index 5f4204678..b87361f2b 100644 --- a/src/python/arcor2_arserver/globals.py +++ b/src/python/arcor2_arserver/globals.py @@ -2,7 +2,7 @@ from collections import defaultdict from typing import Any -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2.data import events from arcor2.object_types.abstract import Generic @@ -32,7 +32,7 @@ TEMPORARY_PACKAGE: bool = False -RegisteredUiDict = defaultdict[str, set[WsClient]] +RegisteredUiDict = defaultdict[str, set[ServerConnection]] ROBOT_JOINTS_REGISTERED_UIS: RegisteredUiDict = defaultdict(lambda: set()) # robot, UIs ROBOT_EEF_REGISTERED_UIS: RegisteredUiDict = defaultdict(lambda: set()) # robot, UIs diff --git a/src/python/arcor2_arserver/lock/lock.py b/src/python/arcor2_arserver/lock/lock.py index 8cc4bc83a..fa107c68f 100644 --- a/src/python/arcor2_arserver/lock/lock.py +++ b/src/python/arcor2_arserver/lock/lock.py @@ -21,23 +21,23 @@ class Lock: class Owners(cmn.StrEnum): """Values that can be used as lock owner substitution.""" - SERVER: str = "SERVER" + SERVER = "SERVER" class SpecialValues(cmn.StrEnum): """Values for special locking cases e.g. global variable access.""" - SCENE: str = "SCENE" - PROJECT: str = "PROJECT" - RUNNING_ACTION: str = "ACTION" - ADDING_OBJECT: str = "ADDING_OBJECT" + SCENE = "SCENE" + PROJECT = "PROJECT" + RUNNING_ACTION = "ACTION" + ADDING_OBJECT = "ADDING_OBJECT" class ErrMessages(cmn.StrEnum): """Lock general error messages.""" - SOMETHING_LOCKED: str = "There are locked objects" - SOMETHING_LOCKED_IN_TREE: str = "Part of tree is locked" - LOCK_FAIL: str = "Locking failed, try again" - NOT_LOCKED: str = "Object not locked" + SOMETHING_LOCKED = "There are locked objects" + SOMETHING_LOCKED_IN_TREE = "Part of tree is locked" + LOCK_FAIL = "Locking failed, try again" + NOT_LOCKED = "Object not locked" __slots__ = ( "_scene", diff --git a/src/python/arcor2_arserver/lock/structures.py b/src/python/arcor2_arserver/lock/structures.py index dda2ae17b..a02945603 100644 --- a/src/python/arcor2_arserver/lock/structures.py +++ b/src/python/arcor2_arserver/lock/structures.py @@ -1,6 +1,6 @@ from __future__ import annotations -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2_arserver.lock.common import ObjIds, obj_ids_to_list from arcor2_arserver.lock.exceptions import CannotUnlock, LockingException @@ -9,7 +9,7 @@ class LockEventData: __slots__ = "obj_ids", "owner", "lock", "client" - def __init__(self, obj_ids: ObjIds, owner: str, lock: bool = False, client: None | WsClient = None): + def __init__(self, obj_ids: ObjIds, owner: str, lock: bool = False, client: None | ServerConnection = None): self.obj_ids = obj_ids_to_list(obj_ids) self.owner = owner self.lock = lock diff --git a/src/python/arcor2_arserver/models.py b/src/python/arcor2_arserver/models.py index 5d17b491a..266efe184 100644 --- a/src/python/arcor2_arserver/models.py +++ b/src/python/arcor2_arserver/models.py @@ -19,7 +19,7 @@ def _rename_childs(obj: type[JsonSchemaMixin] | type[Enum]) -> None: if "." in child_obj.__qualname__: child_obj.__name__ = "".join(child_obj.__qualname__.split(".")) - child_obj.__renamed__ = None + child_obj.__renamed__ = None # type: ignore _rename_childs(child_obj) diff --git a/src/python/arcor2_arserver/notifications.py b/src/python/arcor2_arserver/notifications.py index 96e8d353d..213cc3b8d 100644 --- a/src/python/arcor2_arserver/notifications.py +++ b/src/python/arcor2_arserver/notifications.py @@ -1,6 +1,6 @@ import asyncio -from websockets.server import WebSocketServerProtocol +from websockets.asyncio.server import ServerConnection from arcor2 import ws_server from arcor2.data import events @@ -16,5 +16,5 @@ async def broadcast_event(event: events.Event) -> None: await asyncio.gather(*[ws_server.send_json_to_client(intf, message) for intf in glob.USERS.interfaces]) -async def event(interface: WebSocketServerProtocol, event: events.Event) -> None: +async def event(interface: ServerConnection, event: events.Event) -> None: await ws_server.send_json_to_client(interface, event.to_json()) diff --git a/src/python/arcor2_arserver/object_types/source.py b/src/python/arcor2_arserver/object_types/source.py index 3d83eb80a..75389b3b1 100644 --- a/src/python/arcor2_arserver/object_types/source.py +++ b/src/python/arcor2_arserver/object_types/source.py @@ -35,6 +35,7 @@ def new_object_type(parent: ObjectTypeMeta, child: ObjectTypeMeta) -> AST: ) ], decorator_list=[], + type_params=[], ) # TODO add docstring with description (if provided) diff --git a/src/python/arcor2_arserver/object_types/tests/BUILD b/src/python/arcor2_arserver/object_types/tests/BUILD index 282bac82e..dabf212d7 100644 --- a/src/python/arcor2_arserver/object_types/tests/BUILD +++ b/src/python/arcor2_arserver/object_types/tests/BUILD @@ -1 +1 @@ -python_tests(interpreter_constraints=["==3.11.*"]) +python_tests() diff --git a/src/python/arcor2_arserver/rpc/camera.py b/src/python/arcor2_arserver/rpc/camera.py index 33f3c9000..6c1a0681b 100644 --- a/src/python/arcor2_arserver/rpc/camera.py +++ b/src/python/arcor2_arserver/rpc/camera.py @@ -1,6 +1,6 @@ import asyncio -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2.cached import UpdateableCachedScene from arcor2.exceptions import Arcor2Exception @@ -17,7 +17,7 @@ from arcor2_calibration_data import client as calib_client -async def camera_color_image_cb(req: CameraColorImage.Request, ui: WsClient) -> CameraColorImage.Response: +async def camera_color_image_cb(req: CameraColorImage.Request, ui: ServerConnection) -> CameraColorImage.Response: glob.LOCK.scene_or_exception() await ensure_write_locked(req.args.id, glob.USERS.user_name(ui)) @@ -30,7 +30,7 @@ async def camera_color_image_cb(req: CameraColorImage.Request, ui: WsClient) -> async def camera_color_parameters_cb( - req: CameraColorParameters.Request, ui: WsClient + req: CameraColorParameters.Request, ui: ServerConnection ) -> CameraColorParameters.Response: glob.LOCK.scene_or_exception() @@ -64,7 +64,7 @@ async def calibrate_camera(scene: UpdateableCachedScene, camera: Camera) -> None await notif.broadcast_event(ProcessState(ProcessState.Data(CAMERA_CALIB, ProcessState.Data.StateEnum.Finished))) -async def calibrate_camera_cb(req: CalibrateCamera.Request, ui: WsClient) -> None: +async def calibrate_camera_cb(req: CalibrateCamera.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() ensure_scene_started() diff --git a/src/python/arcor2_arserver/rpc/execution.py b/src/python/arcor2_arserver/rpc/execution.py index d87d3c4b3..76fa5d36c 100644 --- a/src/python/arcor2_arserver/rpc/execution.py +++ b/src/python/arcor2_arserver/rpc/execution.py @@ -1,6 +1,6 @@ import asyncio -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2.exceptions import Arcor2Exception from arcor2_arserver import globals as glob @@ -9,7 +9,7 @@ from arcor2_arserver_data import rpc -async def build_project_cb(req: rpc.b.BuildProject.Request, ui: WsClient) -> rpc.b.BuildProject.Response: +async def build_project_cb(req: rpc.b.BuildProject.Request, ui: ServerConnection) -> rpc.b.BuildProject.Response: """Builds project and uploads resulting package to the execution unit. :param req: @@ -25,7 +25,7 @@ async def build_project_cb(req: rpc.b.BuildProject.Request, ui: WsClient) -> rpc return resp -async def temporary_package_cb(req: rpc.b.TemporaryPackage.Request, ui: WsClient) -> None: +async def temporary_package_cb(req: rpc.b.TemporaryPackage.Request, ui: ServerConnection) -> None: async with glob.LOCK.get_lock(): project = glob.LOCK.project_or_exception() diff --git a/src/python/arcor2_arserver/rpc/lock.py b/src/python/arcor2_arserver/rpc/lock.py index 4373b8529..eda166f32 100644 --- a/src/python/arcor2_arserver/rpc/lock.py +++ b/src/python/arcor2_arserver/rpc/lock.py @@ -1,4 +1,4 @@ -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2_arserver import globals as glob from arcor2_arserver import logger @@ -6,7 +6,7 @@ from arcor2_arserver_data import rpc as srpc -async def write_lock_cb(req: srpc.lock.WriteLock.Request, ui: WsClient) -> None: +async def write_lock_cb(req: srpc.lock.WriteLock.Request, ui: ServerConnection) -> None: user_name = glob.USERS.user_name(ui) if await glob.LOCK.is_write_locked(req.args.object_id, user_name, req.args.lock_tree): @@ -17,20 +17,20 @@ async def write_lock_cb(req: srpc.lock.WriteLock.Request, ui: WsClient) -> None: raise CannotLock(glob.LOCK.ErrMessages.LOCK_FAIL.value) -async def write_unlock_cb(req: srpc.lock.WriteUnlock.Request, ui: WsClient) -> None: +async def write_unlock_cb(req: srpc.lock.WriteUnlock.Request, ui: ServerConnection) -> None: await glob.LOCK.write_unlock(req.args.object_id, glob.USERS.user_name(ui), notify=True) -async def read_lock_cb(req: srpc.lock.ReadLock.Request, ui: WsClient) -> None: +async def read_lock_cb(req: srpc.lock.ReadLock.Request, ui: ServerConnection) -> None: # TODO currently unused, maybe delete? if not await glob.LOCK.read_lock(req.args.object_id, glob.USERS.user_name(ui)): raise CannotLock(glob.LOCK.ErrMessages.LOCK_FAIL.value) -async def read_unlock_cb(req: srpc.lock.ReadUnlock.Request, ui: WsClient) -> None: +async def read_unlock_cb(req: srpc.lock.ReadUnlock.Request, ui: ServerConnection) -> None: # TODO currently unused, maybe delete? await glob.LOCK.read_unlock(req.args.object_id, glob.USERS.user_name(ui)) -async def update_lock_cb(req: srpc.lock.UpdateLock.Request, ui: WsClient) -> None: +async def update_lock_cb(req: srpc.lock.UpdateLock.Request, ui: ServerConnection) -> None: await glob.LOCK.update_lock(req.args.object_id, glob.USERS.user_name(ui), req.args.new_type) diff --git a/src/python/arcor2_arserver/rpc/objects.py b/src/python/arcor2_arserver/rpc/objects.py index 64ba2edb9..4ce9778e1 100644 --- a/src/python/arcor2_arserver/rpc/objects.py +++ b/src/python/arcor2_arserver/rpc/objects.py @@ -2,7 +2,7 @@ from dataclasses import dataclass, field from typing import NamedTuple -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2 import helpers as hlp from arcor2.cached import CachedProject, CachedScene @@ -47,7 +47,7 @@ class AimedObject: _objects_being_aimed: dict[str, AimedObject] = {} # key == user_name -async def object_aiming_start_cb(req: srpc.o.ObjectAimingStart.Request, ui: WsClient) -> None: +async def object_aiming_start_cb(req: srpc.o.ObjectAimingStart.Request, ui: ServerConnection) -> None: """Starts the aiming process for a selected object (with mesh) and robot. Only possible when the scene is started/online. @@ -124,7 +124,7 @@ async def object_aiming_prune() -> None: _objects_being_aimed.pop(td, None) -async def object_aiming_check(ui: WsClient) -> AimingTuple: +async def object_aiming_check(ui: ServerConnection) -> AimingTuple: """Gets object that is being aimed by the user or exception. :param ui: @@ -144,7 +144,7 @@ async def object_aiming_check(ui: WsClient) -> AimingTuple: return AimingTuple(fo, user_name) -async def object_aiming_cancel_cb(req: srpc.o.ObjectAimingCancel.Request, ui: WsClient) -> None: +async def object_aiming_cancel_cb(req: srpc.o.ObjectAimingCancel.Request, ui: ServerConnection) -> None: """Cancel aiming of the object. :param req: @@ -163,7 +163,7 @@ async def object_aiming_cancel_cb(req: srpc.o.ObjectAimingCancel.Request, ui: Ws async def object_aiming_add_point_cb( - req: srpc.o.ObjectAimingAddPoint.Request, ui: WsClient + req: srpc.o.ObjectAimingAddPoint.Request, ui: ServerConnection ) -> srpc.o.ObjectAimingAddPoint.Response: scene = glob.LOCK.scene_or_exception() fo, user_name = await object_aiming_check(ui) @@ -200,7 +200,7 @@ async def object_aiming_add_point_cb( return r -async def object_aiming_done_cb(req: srpc.o.ObjectAimingDone.Request, ui: WsClient) -> None: +async def object_aiming_done_cb(req: srpc.o.ObjectAimingDone.Request, ui: ServerConnection) -> None: """Calls scene service to get a new pose for the object. In case of success, robot and object are kept locked, unlocking is responsibility of ui. @@ -257,7 +257,7 @@ async def object_aiming_done_cb(req: srpc.o.ObjectAimingDone.Request, ui: WsClie return None -async def new_object_type_cb(req: srpc.o.NewObjectType.Request, ui: WsClient) -> None: +async def new_object_type_cb(req: srpc.o.NewObjectType.Request, ui: ServerConnection) -> None: async with ctx_write_lock(glob.LOCK.SpecialValues.ADDING_OBJECT, glob.USERS.user_name(ui)): meta = req.args @@ -322,7 +322,7 @@ async def new_object_type_cb(req: srpc.o.NewObjectType.Request, ui: WsClient) -> return None -async def update_object_model_cb(req: srpc.o.UpdateObjectModel.Request, ui: WsClient) -> None: +async def update_object_model_cb(req: srpc.o.UpdateObjectModel.Request, ui: ServerConnection) -> None: can_modify_scene() glob.LOCK.scene_or_exception(True) # only allow while editing scene @@ -358,11 +358,13 @@ async def update_object_model_cb(req: srpc.o.UpdateObjectModel.Request, ui: WsCl asyncio.ensure_future(notif.broadcast_event(evt)) -async def get_object_actions_cb(req: srpc.o.GetActions.Request, ui: WsClient) -> srpc.o.GetActions.Response: +async def get_object_actions_cb(req: srpc.o.GetActions.Request, ui: ServerConnection) -> srpc.o.GetActions.Response: return srpc.o.GetActions.Response(data=list(glob.OBJECT_TYPES[req.args.type].actions.values())) -async def get_object_types_cb(req: srpc.o.GetObjectTypes.Request, ui: WsClient) -> srpc.o.GetObjectTypes.Response: +async def get_object_types_cb( + req: srpc.o.GetObjectTypes.Request, ui: ServerConnection +) -> srpc.o.GetObjectTypes.Response: return srpc.o.GetObjectTypes.Response(data=[obj.meta for obj in glob.OBJECT_TYPES.values()]) @@ -372,7 +374,7 @@ def check_scene_for_object_type(scene: CachedScene, object_type: str) -> None: async def delete_object_type_cb( - req: srpc.o.DeleteObjectTypes.Request, ui: WsClient + req: srpc.o.DeleteObjectTypes.Request, ui: ServerConnection ) -> srpc.o.DeleteObjectTypes.Response: async def _delete_model(obj_type: ObjectTypeData) -> None: # do not care so much if delete_model fails @@ -476,7 +478,7 @@ def check_override( return obj -async def add_override_cb(req: srpc.o.AddOverride.Request, ui: WsClient) -> None: +async def add_override_cb(req: srpc.o.AddOverride.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() project = glob.LOCK.project_or_exception() @@ -499,7 +501,7 @@ async def add_override_cb(req: srpc.o.AddOverride.Request, ui: WsClient) -> None asyncio.ensure_future(notif.broadcast_event(evt)) -async def update_override_cb(req: srpc.o.UpdateOverride.Request, ui: WsClient) -> None: +async def update_override_cb(req: srpc.o.UpdateOverride.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() project = glob.LOCK.project_or_exception() @@ -521,7 +523,7 @@ async def update_override_cb(req: srpc.o.UpdateOverride.Request, ui: WsClient) - asyncio.ensure_future(notif.broadcast_event(evt)) -async def delete_override_cb(req: srpc.o.DeleteOverride.Request, ui: WsClient) -> None: +async def delete_override_cb(req: srpc.o.DeleteOverride.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() project = glob.LOCK.project_or_exception() @@ -545,7 +547,9 @@ async def delete_override_cb(req: srpc.o.DeleteOverride.Request, ui: WsClient) - asyncio.ensure_future(notif.broadcast_event(evt)) -async def object_type_usage_cb(req: srpc.o.ObjectTypeUsage.Request, ui: WsClient) -> srpc.o.ObjectTypeUsage.Response: +async def object_type_usage_cb( + req: srpc.o.ObjectTypeUsage.Request, ui: ServerConnection +) -> srpc.o.ObjectTypeUsage.Response: resp = srpc.o.ObjectTypeUsage.Response() resp.data = set() # mypy does not recognize it correctly with Response(data=set()) diff --git a/src/python/arcor2_arserver/rpc/project.py b/src/python/arcor2_arserver/rpc/project.py index 4e54b56e7..03a6f3087 100644 --- a/src/python/arcor2_arserver/rpc/project.py +++ b/src/python/arcor2_arserver/rpc/project.py @@ -3,7 +3,7 @@ from contextlib import asynccontextmanager from typing import Any, AsyncGenerator -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2 import helpers as hlp from arcor2 import transformations as tr @@ -77,7 +77,7 @@ async def managed_project(project_id: str, make_copy: bool = False) -> AsyncGene asyncio.ensure_future(storage.update_project(project)) -async def cancel_action_cb(req: srpc.p.CancelAction.Request, ui: WsClient) -> None: +async def cancel_action_cb(req: srpc.p.CancelAction.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() proj = glob.LOCK.project_or_exception() @@ -119,7 +119,7 @@ async def cancel_action_cb(req: srpc.p.CancelAction.Request, ui: WsClient) -> No glob.RUNNING_ACTION_PARAMS = None -async def execute_action_cb(req: srpc.p.ExecuteAction.Request, ui: WsClient) -> None: +async def execute_action_cb(req: srpc.p.ExecuteAction.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() proj = glob.LOCK.project_or_exception() @@ -193,7 +193,7 @@ async def execute_action_cb(req: srpc.p.ExecuteAction.Request, ui: WsClient) -> return None -async def list_projects_cb(req: srpc.p.ListProjects.Request, ui: WsClient) -> srpc.p.ListProjects.Response: +async def list_projects_cb(req: srpc.p.ListProjects.Request, ui: ServerConnection) -> srpc.p.ListProjects.Response: async def project_info(project_id: str) -> srpc.p.ListProjects.Response.Data: project = await storage.get_project(project_id) @@ -235,11 +235,11 @@ async def project_info(project_id: str) -> srpc.p.ListProjects.Response.Data: return resp -async def get_project_cb(req: srpc.p.GetProject.Request, ui: WsClient) -> srpc.p.GetProject.Response: +async def get_project_cb(req: srpc.p.GetProject.Request, ui: ServerConnection) -> srpc.p.GetProject.Response: return srpc.p.GetProject.Response(data=(await storage.get_project(req.args.id)).project) -async def add_ap_using_robot_cb(req: srpc.p.AddApUsingRobot.Request, ui: WsClient) -> None: +async def add_ap_using_robot_cb(req: srpc.p.AddApUsingRobot.Request, ui: ServerConnection) -> None: async def notify(ap: common.BareActionPoint, ori: common.NamedOrientation, joi: common.ProjectRobotJoints) -> None: ap_evt = sevts.p.ActionPointChanged(ap) ap_evt.change_type = Event.Type.ADD @@ -284,7 +284,7 @@ async def notify(ap: common.BareActionPoint, ori: common.NamedOrientation, joi: async def add_action_point_joints_using_robot_cb( - req: srpc.p.AddActionPointJointsUsingRobot.Request, ui: WsClient + req: srpc.p.AddActionPointJointsUsingRobot.Request, ui: ServerConnection ) -> None: hlp.is_valid_identifier(req.args.name) proj = glob.LOCK.project_or_exception() @@ -319,7 +319,7 @@ async def add_action_point_joints_using_robot_cb( async def update_action_point_joints_using_robot_cb( - req: srpc.p.UpdateActionPointJointsUsingRobot.Request, ui: WsClient + req: srpc.p.UpdateActionPointJointsUsingRobot.Request, ui: ServerConnection ) -> None: proj = glob.LOCK.project_or_exception() @@ -343,7 +343,7 @@ async def update_action_point_joints_using_robot_cb( return None -async def update_action_point_joints_cb(req: srpc.p.UpdateActionPointJoints.Request, ui: WsClient) -> None: +async def update_action_point_joints_cb(req: srpc.p.UpdateActionPointJoints.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() ap, robot_joints = proj.ap_and_joints(req.args.joints_id) @@ -364,7 +364,7 @@ async def update_action_point_joints_cb(req: srpc.p.UpdateActionPointJoints.Requ return None -async def remove_action_point_joints_cb(req: srpc.p.RemoveActionPointJoints.Request, ui: WsClient) -> None: +async def remove_action_point_joints_cb(req: srpc.p.RemoveActionPointJoints.Request, ui: ServerConnection) -> None: """Removes joints from action point. :param req: @@ -391,7 +391,7 @@ async def remove_action_point_joints_cb(req: srpc.p.RemoveActionPointJoints.Requ return None -async def rename_action_point_cb(req: srpc.p.RenameActionPoint.Request, ui: WsClient) -> None: +async def rename_action_point_cb(req: srpc.p.RenameActionPoint.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() ap = proj.bare_action_point(req.args.action_point_id) @@ -440,7 +440,7 @@ def detect_ap_loop(proj: CachedProject, ap: common.BareActionPoint, new_parent_i break -async def update_action_point_parent_cb(req: srpc.p.UpdateActionPointParent.Request, ui: WsClient) -> None: +async def update_action_point_parent_cb(req: srpc.p.UpdateActionPointParent.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() proj = glob.LOCK.project_or_exception() user_name = glob.USERS.user_name(ui) @@ -542,7 +542,7 @@ async def update_ap_position( asyncio.ensure_future(notif.broadcast_event(ap_evt)) -async def update_action_point_position_cb(req: srpc.p.UpdateActionPointPosition.Request, ui: WsClient) -> None: +async def update_action_point_position_cb(req: srpc.p.UpdateActionPointPosition.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() ap = proj.bare_action_point(req.args.action_point_id) user_name = glob.USERS.user_name(ui) @@ -558,7 +558,9 @@ async def update_action_point_position_cb(req: srpc.p.UpdateActionPointPosition. await update_ap_position(proj, ap, req.args.new_position) -async def update_action_point_using_robot_cb(req: srpc.p.UpdateActionPointUsingRobot.Request, ui: WsClient) -> None: +async def update_action_point_using_robot_cb( + req: srpc.p.UpdateActionPointUsingRobot.Request, ui: ServerConnection +) -> None: scene = glob.LOCK.scene_or_exception() proj = glob.LOCK.project_or_exception() ensure_scene_started() @@ -579,7 +581,7 @@ async def update_action_point_using_robot_cb(req: srpc.p.UpdateActionPointUsingR return None -async def add_action_point_orientation_cb(req: srpc.p.AddActionPointOrientation.Request, ui: WsClient) -> None: +async def add_action_point_orientation_cb(req: srpc.p.AddActionPointOrientation.Request, ui: ServerConnection) -> None: """Adds orientation and joints to the action point. :param req: @@ -607,7 +609,9 @@ async def add_action_point_orientation_cb(req: srpc.p.AddActionPointOrientation. return None -async def update_action_point_orientation_cb(req: srpc.p.UpdateActionPointOrientation.Request, ui: WsClient) -> None: +async def update_action_point_orientation_cb( + req: srpc.p.UpdateActionPointOrientation.Request, ui: ServerConnection +) -> None: """Updates orientation of the action point. :param req: @@ -629,7 +633,7 @@ async def update_action_point_orientation_cb(req: srpc.p.UpdateActionPointOrient async def add_action_point_orientation_using_robot_cb( - req: srpc.p.AddActionPointOrientationUsingRobot.Request, ui: WsClient + req: srpc.p.AddActionPointOrientationUsingRobot.Request, ui: ServerConnection ) -> None: """Adds orientation and joints to the action point. @@ -671,7 +675,7 @@ async def add_action_point_orientation_using_robot_cb( async def update_action_point_orientation_using_robot_cb( - req: srpc.p.UpdateActionPointOrientationUsingRobot.Request, ui: WsClient + req: srpc.p.UpdateActionPointOrientationUsingRobot.Request, ui: ServerConnection ) -> None: """Updates orientation and joint of the action point. @@ -707,7 +711,9 @@ async def update_action_point_orientation_using_robot_cb( return None -async def remove_action_point_orientation_cb(req: srpc.p.RemoveActionPointOrientation.Request, ui: WsClient) -> None: +async def remove_action_point_orientation_cb( + req: srpc.p.RemoveActionPointOrientation.Request, ui: ServerConnection +) -> None: """Removes orientation. :param req: @@ -740,7 +746,7 @@ async def remove_action_point_orientation_cb(req: srpc.p.RemoveActionPointOrient return None -async def open_project_cb(req: srpc.p.OpenProject.Request, ui: WsClient) -> None: +async def open_project_cb(req: srpc.p.OpenProject.Request, ui: ServerConnection) -> None: """Opens a project. This can be done even when a scene or another project is opened. @@ -767,7 +773,7 @@ async def open_project_cb(req: srpc.p.OpenProject.Request, ui: WsClient) -> None return None -async def save_project_cb(req: srpc.p.SaveProject.Request, ui: WsClient) -> None: +async def save_project_cb(req: srpc.p.SaveProject.Request, ui: ServerConnection) -> None: async with glob.LOCK.get_lock(req.dry_run): proj = glob.LOCK.project_or_exception() @@ -788,7 +794,7 @@ async def save_project_cb(req: srpc.p.SaveProject.Request, ui: WsClient) -> None return None -async def new_project_cb(req: srpc.p.NewProject.Request, ui: WsClient) -> None: +async def new_project_cb(req: srpc.p.NewProject.Request, ui: ServerConnection) -> None: if glob.LOCK.project: raise Arcor2Exception("Project has to be closed first.") @@ -851,7 +857,7 @@ async def new_project_cb(req: srpc.p.NewProject.Request, ui: WsClient) -> None: return None -async def close_project_cb(req: srpc.p.CloseProject.Request, ui: WsClient) -> None: +async def close_project_cb(req: srpc.p.CloseProject.Request, ui: ServerConnection) -> None: async with glob.LOCK.get_lock(req.dry_run): proj = glob.LOCK.project_or_exception() can_modify_scene() @@ -866,7 +872,7 @@ async def close_project_cb(req: srpc.p.CloseProject.Request, ui: WsClient) -> No return None -async def add_action_point_cb(req: srpc.p.AddActionPoint.Request, ui: WsClient) -> None: +async def add_action_point_cb(req: srpc.p.AddActionPoint.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() proj = glob.LOCK.project_or_exception() @@ -891,7 +897,7 @@ async def add_action_point_cb(req: srpc.p.AddActionPoint.Request, ui: WsClient) return None -async def remove_action_point_cb(req: srpc.p.RemoveActionPoint.Request, ui: WsClient) -> None: +async def remove_action_point_cb(req: srpc.p.RemoveActionPoint.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() user_name = glob.USERS.user_name(ui) @@ -959,7 +965,7 @@ async def remove_action_point_cb(req: srpc.p.RemoveActionPoint.Request, ui: WsCl return None -async def copy_action_point_cb(req: srpc.p.CopyActionPoint.Request, ui: WsClient) -> None: +async def copy_action_point_cb(req: srpc.p.CopyActionPoint.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() async def copy_action_point( @@ -1076,7 +1082,7 @@ async def copy_action_point( await notif.broadcast_event(action_added_evt) -async def add_action_cb(req: srpc.p.AddAction.Request, ui: WsClient) -> None: +async def add_action_cb(req: srpc.p.AddAction.Request, ui: ServerConnection) -> None: """Adds new action to project. Used also when duplicating action. @@ -1115,7 +1121,7 @@ async def add_action_cb(req: srpc.p.AddAction.Request, ui: WsClient) -> None: return None -async def update_action_cb(req: srpc.p.UpdateAction.Request, ui: WsClient) -> None: +async def update_action_cb(req: srpc.p.UpdateAction.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() proj = glob.LOCK.project_or_exception() @@ -1148,7 +1154,7 @@ async def update_action_cb(req: srpc.p.UpdateAction.Request, ui: WsClient) -> No return None -async def remove_action_cb(req: srpc.p.RemoveAction.Request, ui: WsClient) -> None: +async def remove_action_cb(req: srpc.p.RemoveAction.Request, ui: ServerConnection) -> None: def check_action_usage(proj: CachedProject, action: common.Action) -> None: # check parameters for act in proj.actions: @@ -1190,7 +1196,7 @@ def check_action_usage(proj: CachedProject, action: common.Action) -> None: return None -async def add_logic_item_cb(req: srpc.p.AddLogicItem.Request, ui: WsClient) -> None: +async def add_logic_item_cb(req: srpc.p.AddLogicItem.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() proj = glob.LOCK.project_or_exception(must_have_logic=True) user_name = glob.USERS.user_name(ui) @@ -1220,7 +1226,7 @@ async def add_logic_item_cb(req: srpc.p.AddLogicItem.Request, ui: WsClient) -> N return None -async def update_logic_item_cb(req: srpc.p.UpdateLogicItem.Request, ui: WsClient) -> None: +async def update_logic_item_cb(req: srpc.p.UpdateLogicItem.Request, ui: ServerConnection) -> None: # TODO lock RPC when used scene = glob.LOCK.scene_or_exception() @@ -1249,7 +1255,7 @@ async def update_logic_item_cb(req: srpc.p.UpdateLogicItem.Request, ui: WsClient return None -async def remove_logic_item_cb(req: srpc.p.RemoveLogicItem.Request, ui: WsClient) -> None: +async def remove_logic_item_cb(req: srpc.p.RemoveLogicItem.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception(must_have_logic=True) logic_item = proj.logic_item(req.args.logic_item_id) @@ -1269,7 +1275,7 @@ async def remove_logic_item_cb(req: srpc.p.RemoveLogicItem.Request, ui: WsClient return None -async def add_project_parameter_cb(req: srpc.p.AddProjectParameter.Request, ui: WsClient) -> None: +async def add_project_parameter_cb(req: srpc.p.AddProjectParameter.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() async with ctx_write_lock(glob.LOCK.SpecialValues.PROJECT, glob.USERS.user_name(ui)): @@ -1287,7 +1293,7 @@ async def add_project_parameter_cb(req: srpc.p.AddProjectParameter.Request, ui: return None -async def update_project_parameter_cb(req: srpc.p.UpdateProjectParameter.Request, ui: WsClient) -> None: +async def update_project_parameter_cb(req: srpc.p.UpdateProjectParameter.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() param = proj.parameter(req.args.id) user_name = glob.USERS.user_name(ui) @@ -1315,7 +1321,7 @@ async def update_project_parameter_cb(req: srpc.p.UpdateProjectParameter.Request await glob.LOCK.write_unlock(param.id, user_name, True) -async def remove_project_parameter_cb(req: srpc.p.RemoveProjectParameter.Request, ui: WsClient) -> None: +async def remove_project_parameter_cb(req: srpc.p.RemoveProjectParameter.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() pparam = proj.parameter(req.args.id) @@ -1343,7 +1349,7 @@ async def remove_project_parameter_cb(req: srpc.p.RemoveProjectParameter.Request asyncio.ensure_future(notif.broadcast_event(evt)) -async def delete_project_cb(req: srpc.p.DeleteProject.Request, ui: WsClient) -> None: +async def delete_project_cb(req: srpc.p.DeleteProject.Request, ui: ServerConnection) -> None: if glob.LOCK.project: raise Arcor2Exception("Project has to be closed first.") @@ -1360,7 +1366,7 @@ async def delete_project_cb(req: srpc.p.DeleteProject.Request, ui: WsClient) -> return None -async def rename_project_cb(req: srpc.p.RenameProject.Request, ui: WsClient) -> None: +async def rename_project_cb(req: srpc.p.RenameProject.Request, ui: ServerConnection) -> None: unique_name(req.args.new_name, (await project_names())) # TODO workaround for https://gitlab.com/kinalisoft/test-it-off/project/-/issues/16 @@ -1385,7 +1391,7 @@ async def rename_project_cb(req: srpc.p.RenameProject.Request, ui: WsClient) -> return None -async def copy_project_cb(req: srpc.p.CopyProject.Request, ui: WsClient) -> None: +async def copy_project_cb(req: srpc.p.CopyProject.Request, ui: ServerConnection) -> None: async with ctx_write_lock(req.args.source_id, glob.USERS.user_name(ui)): unique_name(req.args.target_name, (await project_names())) @@ -1402,7 +1408,7 @@ async def copy_project_cb(req: srpc.p.CopyProject.Request, ui: WsClient) -> None return None -async def update_project_description_cb(req: srpc.p.UpdateProjectDescription.Request, ui: WsClient) -> None: +async def update_project_description_cb(req: srpc.p.UpdateProjectDescription.Request, ui: ServerConnection) -> None: async with ctx_write_lock(req.args.project_id, glob.USERS.user_name(ui)): async with managed_project(req.args.project_id) as project: project.description = req.args.new_description @@ -1414,7 +1420,7 @@ async def update_project_description_cb(req: srpc.p.UpdateProjectDescription.Req return None -async def update_project_has_logic_cb(req: srpc.p.UpdateProjectHasLogic.Request, ui: WsClient) -> None: +async def update_project_has_logic_cb(req: srpc.p.UpdateProjectHasLogic.Request, ui: ServerConnection) -> None: async with ctx_write_lock(req.args.project_id, glob.USERS.user_name(ui)): async with managed_project(req.args.project_id) as project: if project.has_logic and not req.args.new_has_logic: @@ -1436,7 +1442,7 @@ async def update_project_has_logic_cb(req: srpc.p.UpdateProjectHasLogic.Request, return None -async def rename_action_point_joints_cb(req: srpc.p.RenameActionPointJoints.Request, ui: WsClient) -> None: +async def rename_action_point_joints_cb(req: srpc.p.RenameActionPointJoints.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() ap, joints = proj.ap_and_joints(req.args.joints_id) @@ -1458,7 +1464,9 @@ async def rename_action_point_joints_cb(req: srpc.p.RenameActionPointJoints.Requ return None -async def rename_action_point_orientation_cb(req: srpc.p.RenameActionPointOrientation.Request, ui: WsClient) -> None: +async def rename_action_point_orientation_cb( + req: srpc.p.RenameActionPointOrientation.Request, ui: ServerConnection +) -> None: proj = glob.LOCK.project_or_exception() ap, ori = proj.bare_ap_and_orientation(req.args.orientation_id) @@ -1480,7 +1488,7 @@ async def rename_action_point_orientation_cb(req: srpc.p.RenameActionPointOrient return None -async def rename_action_cb(req: srpc.p.RenameAction.Request, ui: WsClient) -> None: +async def rename_action_cb(req: srpc.p.RenameAction.Request, ui: ServerConnection) -> None: proj = glob.LOCK.project_or_exception() unique_name(req.args.new_name, proj.action_names) user_name = glob.USERS.user_name(ui) diff --git a/src/python/arcor2_arserver/rpc/robot.py b/src/python/arcor2_arserver/rpc/robot.py index 31c2097af..f15693777 100644 --- a/src/python/arcor2_arserver/rpc/robot.py +++ b/src/python/arcor2_arserver/rpc/robot.py @@ -4,7 +4,7 @@ from typing import Awaitable, Callable import numpy as np -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2 import env from arcor2 import transformations as tr @@ -122,13 +122,15 @@ async def robot_eef_pose_event(robot_inst: Robot) -> None: logger.info(f"Sending poses for {robot_inst.name} stopped.") -async def get_robot_meta_cb(req: srpc.r.GetRobotMeta.Request, ui: WsClient) -> srpc.r.GetRobotMeta.Response: +async def get_robot_meta_cb(req: srpc.r.GetRobotMeta.Request, ui: ServerConnection) -> srpc.r.GetRobotMeta.Response: return srpc.r.GetRobotMeta.Response( data=[obj.robot_meta for obj in glob.OBJECT_TYPES.values() if obj.robot_meta is not None] ) -async def get_robot_joints_cb(req: srpc.r.GetRobotJoints.Request, ui: WsClient) -> srpc.r.GetRobotJoints.Response: +async def get_robot_joints_cb( + req: srpc.r.GetRobotJoints.Request, ui: ServerConnection +) -> srpc.r.GetRobotJoints.Response: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -139,7 +141,7 @@ async def get_robot_joints_cb(req: srpc.r.GetRobotJoints.Request, ui: WsClient) async def get_end_effector_pose_cb( - req: srpc.r.GetEndEffectorPose.Request, ui: WsClient + req: srpc.r.GetEndEffectorPose.Request, ui: ServerConnection ) -> srpc.r.GetEndEffectorPose.Response: glob.LOCK.scene_or_exception() @@ -152,7 +154,9 @@ async def get_end_effector_pose_cb( ) -async def get_end_effectors_cb(req: srpc.r.GetEndEffectors.Request, ui: WsClient) -> srpc.r.GetEndEffectors.Response: +async def get_end_effectors_cb( + req: srpc.r.GetEndEffectors.Request, ui: ServerConnection +) -> srpc.r.GetEndEffectors.Response: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -162,7 +166,7 @@ async def get_end_effectors_cb(req: srpc.r.GetEndEffectors.Request, ui: WsClient ) -async def get_robot_arms_cb(req: srpc.r.GetRobotArms.Request, ui: WsClient) -> srpc.r.GetRobotArms.Response: +async def get_robot_arms_cb(req: srpc.r.GetRobotArms.Request, ui: ServerConnection) -> srpc.r.GetRobotArms.Response: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -170,7 +174,7 @@ async def get_robot_arms_cb(req: srpc.r.GetRobotArms.Request, ui: WsClient) -> s return srpc.r.GetRobotArms.Response(data=await robot.get_arms(get_robot_instance(req.args.robot_id))) -async def get_grippers_cb(req: srpc.r.GetGrippers.Request, ui: WsClient) -> srpc.r.GetGrippers.Response: +async def get_grippers_cb(req: srpc.r.GetGrippers.Request, ui: ServerConnection) -> srpc.r.GetGrippers.Response: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -180,7 +184,7 @@ async def get_grippers_cb(req: srpc.r.GetGrippers.Request, ui: WsClient) -> srpc ) -async def get_suctions_cb(req: srpc.r.GetSuctions.Request, ui: WsClient) -> srpc.r.GetSuctions.Response: +async def get_suctions_cb(req: srpc.r.GetSuctions.Request, ui: ServerConnection) -> srpc.r.GetSuctions.Response: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -193,7 +197,7 @@ async def get_suctions_cb(req: srpc.r.GetSuctions.Request, ui: WsClient) -> srpc async def register( req: srpc.r.RegisterForRobotEvent.Request, robot_inst: Robot, - ui: WsClient, + ui: ServerConnection, tasks: TaskDict, reg_uis: glob.RegisteredUiDict, coro: Callable[[Robot], Awaitable[None]], @@ -221,7 +225,7 @@ async def register( del tasks[req.args.robot_id] -async def register_for_robot_event_cb(req: srpc.r.RegisterForRobotEvent.Request, ui: WsClient) -> None: +async def register_for_robot_event_cb(req: srpc.r.RegisterForRobotEvent.Request, ui: ServerConnection) -> None: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -265,7 +269,7 @@ async def check_feature(robot_inst: Robot, feature_name: str) -> None: raise Arcor2Exception(f"Unknown robot feature: {feature_name}.") -async def move_to_pose_cb(req: srpc.r.MoveToPose.Request, ui: WsClient) -> None: +async def move_to_pose_cb(req: srpc.r.MoveToPose.Request, ui: ServerConnection) -> None: glob.LOCK.scene_or_exception() user_name = glob.USERS.user_name(ui) @@ -306,7 +310,7 @@ async def move_to_pose_cb(req: srpc.r.MoveToPose.Request, ui: WsClient) -> None: ) -async def move_to_joints_cb(req: srpc.r.MoveToJoints.Request, ui: WsClient) -> None: +async def move_to_joints_cb(req: srpc.r.MoveToJoints.Request, ui: ServerConnection) -> None: glob.LOCK.scene_or_exception() user_name = glob.USERS.user_name(ui) @@ -321,7 +325,7 @@ async def move_to_joints_cb(req: srpc.r.MoveToJoints.Request, ui: WsClient) -> N ) -async def stop_robot_cb(req: srpc.r.StopRobot.Request, ui: WsClient) -> None: +async def stop_robot_cb(req: srpc.r.StopRobot.Request, ui: ServerConnection) -> None: glob.LOCK.scene_or_exception() # Stop robot cannot use lock, because robot is locked when action is called. Stop will also release lock. @@ -331,7 +335,7 @@ async def stop_robot_cb(req: srpc.r.StopRobot.Request, ui: WsClient) -> None: await robot.stop(robot_inst) -async def move_to_action_point_cb(req: srpc.r.MoveToActionPoint.Request, ui: WsClient) -> None: +async def move_to_action_point_cb(req: srpc.r.MoveToActionPoint.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() project = glob.LOCK.project_or_exception() @@ -380,7 +384,7 @@ async def move_to_action_point_cb(req: srpc.r.MoveToActionPoint.Request, ui: WsC ) -async def ik_cb(req: srpc.r.InverseKinematics.Request, ui: WsClient) -> srpc.r.InverseKinematics.Response: +async def ik_cb(req: srpc.r.InverseKinematics.Request, ui: ServerConnection) -> srpc.r.InverseKinematics.Response: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -401,7 +405,7 @@ async def ik_cb(req: srpc.r.InverseKinematics.Request, ui: WsClient) -> srpc.r.I return resp -async def fk_cb(req: srpc.r.ForwardKinematics.Request, ui: WsClient) -> srpc.r.ForwardKinematics.Response: +async def fk_cb(req: srpc.r.ForwardKinematics.Request, ui: ServerConnection) -> srpc.r.ForwardKinematics.Response: glob.LOCK.scene_or_exception() async with ctx_read_lock(req.args.robot_id, glob.USERS.user_name(ui)): @@ -454,7 +458,7 @@ async def calibrate_robot( await glob.LOCK.write_unlock(camera_inst.id, user_name) -async def calibrate_robot_cb(req: srpc.r.CalibrateRobot.Request, ui: WsClient) -> None: +async def calibrate_robot_cb(req: srpc.r.CalibrateRobot.Request, ui: ServerConnection) -> None: glob.LOCK.scene_or_exception() user_name = glob.USERS.user_name(ui) @@ -486,7 +490,7 @@ async def calibrate_robot_cb(req: srpc.r.CalibrateRobot.Request, ui: WsClient) - return None -async def hand_teaching_mode_cb(req: srpc.r.HandTeachingMode.Request, ui: WsClient) -> None: +async def hand_teaching_mode_cb(req: srpc.r.HandTeachingMode.Request, ui: ServerConnection) -> None: glob.LOCK.scene_or_exception() ensure_scene_started() @@ -522,7 +526,7 @@ async def hand_teaching_mode_cb(req: srpc.r.HandTeachingMode.Request, ui: WsClie asyncio.ensure_future(notif.broadcast_event(evt)) -async def step_robot_eef_cb(req: srpc.r.StepRobotEef.Request, ui: WsClient) -> None: +async def step_robot_eef_cb(req: srpc.r.StepRobotEef.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() ensure_scene_started() @@ -577,7 +581,9 @@ async def step_robot_eef_cb(req: srpc.r.StepRobotEef.Request, ui: WsClient) -> N ) -async def set_eef_perpendicular_to_world_cb(req: srpc.r.SetEefPerpendicularToWorld.Request, ui: WsClient) -> None: +async def set_eef_perpendicular_to_world_cb( + req: srpc.r.SetEefPerpendicularToWorld.Request, ui: ServerConnection +) -> None: glob.LOCK.scene_or_exception() ensure_scene_started() diff --git a/src/python/arcor2_arserver/rpc/scene.py b/src/python/arcor2_arserver/rpc/scene.py index d906e8c70..6a94be4c2 100644 --- a/src/python/arcor2_arserver/rpc/scene.py +++ b/src/python/arcor2_arserver/rpc/scene.py @@ -5,7 +5,7 @@ from typing import AsyncGenerator import quaternion -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2 import helpers as hlp from arcor2.cached import UpdateableCachedScene @@ -93,7 +93,7 @@ async def managed_scene(scene_id: str, make_copy: bool = False) -> AsyncGenerato asyncio.ensure_future(storage.update_scene(scene)) -async def new_scene_cb(req: srpc.s.NewScene.Request, ui: WsClient) -> None: +async def new_scene_cb(req: srpc.s.NewScene.Request, ui: ServerConnection) -> None: """Creates and opens a new scene on the server. Fails if any scene is open or if scene id/name already exists. @@ -126,7 +126,7 @@ async def new_scene_cb(req: srpc.s.NewScene.Request, ui: WsClient) -> None: return None -async def close_scene_cb(req: srpc.s.CloseScene.Request, ui: WsClient) -> None: +async def close_scene_cb(req: srpc.s.CloseScene.Request, ui: ServerConnection) -> None: """Closes scene on the server. :param req: @@ -157,7 +157,7 @@ async def close_scene_cb(req: srpc.s.CloseScene.Request, ui: WsClient) -> None: asyncio.ensure_future(notify_scene_closed(scene_id)) -async def save_scene_cb(req: srpc.s.SaveScene.Request, ui: WsClient) -> None: +async def save_scene_cb(req: srpc.s.SaveScene.Request, ui: ServerConnection) -> None: async with glob.LOCK.get_lock(req.dry_run): scene = glob.LOCK.scene_or_exception() @@ -171,7 +171,7 @@ async def save_scene_cb(req: srpc.s.SaveScene.Request, ui: WsClient) -> None: return None -async def open_scene_cb(req: srpc.s.OpenScene.Request, ui: WsClient) -> None: +async def open_scene_cb(req: srpc.s.OpenScene.Request, ui: ServerConnection) -> None: async with glob.LOCK.get_lock(): if glob.PACKAGE_STATE.state in PackageState.RUN_STATES: raise Arcor2Exception("Can't open scene while package runs.") @@ -189,7 +189,7 @@ async def open_scene_cb(req: srpc.s.OpenScene.Request, ui: WsClient) -> None: return None -async def list_scenes_cb(req: srpc.s.ListScenes.Request, ui: WsClient) -> srpc.s.ListScenes.Response: +async def list_scenes_cb(req: srpc.s.ListScenes.Request, ui: ServerConnection) -> srpc.s.ListScenes.Response: resp = srpc.s.ListScenes.Response() resp.data = [] @@ -205,11 +205,11 @@ async def list_scenes_cb(req: srpc.s.ListScenes.Request, ui: WsClient) -> srpc.s return resp -async def get_scene_cb(req: srpc.s.GetScene.Request, ui: WsClient) -> srpc.s.GetScene.Response: +async def get_scene_cb(req: srpc.s.GetScene.Request, ui: ServerConnection) -> srpc.s.GetScene.Response: return srpc.s.GetScene.Response(data=(await storage.get_scene(req.args.id)).scene) -async def add_object_to_scene_cb(req: srpc.s.AddObjectToScene.Request, ui: WsClient) -> None: +async def add_object_to_scene_cb(req: srpc.s.AddObjectToScene.Request, ui: ServerConnection) -> None: async with ctx_write_lock(glob.LOCK.SpecialValues.SCENE, glob.USERS.user_name(ui)): scene = glob.LOCK.scene_or_exception() @@ -235,7 +235,7 @@ async def add_object_to_scene_cb(req: srpc.s.AddObjectToScene.Request, ui: WsCli return None -async def update_object_parameters_cb(req: srpc.s.UpdateObjectParameters.Request, ui: WsClient) -> None: +async def update_object_parameters_cb(req: srpc.s.UpdateObjectParameters.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception(ensure_project_closed=True) can_modify_scene() @@ -264,7 +264,7 @@ async def update_object_parameters_cb(req: srpc.s.UpdateObjectParameters.Request async def scene_object_usage_request_cb( - req: srpc.s.SceneObjectUsage.Request, ui: WsClient + req: srpc.s.SceneObjectUsage.Request, ui: ServerConnection ) -> srpc.s.SceneObjectUsage.Response: """Works for both services and objects. @@ -289,7 +289,7 @@ async def scene_object_usage_request_cb( # TODO move to objects async def action_param_values_cb( - req: srpc.o.ActionParamValues.Request, ui: WsClient + req: srpc.o.ActionParamValues.Request, ui: ServerConnection ) -> srpc.o.ActionParamValues.Response: glob.LOCK.scene_or_exception() @@ -329,7 +329,7 @@ async def action_param_values_cb( return resp -async def remove_from_scene_cb(req: srpc.s.RemoveFromScene.Request, ui: WsClient) -> None: +async def remove_from_scene_cb(req: srpc.s.RemoveFromScene.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception(ensure_project_closed=True) user_name = glob.USERS.user_name(ui) @@ -365,7 +365,9 @@ async def remove_from_scene_cb(req: srpc.s.RemoveFromScene.Request, ui: WsClient await schedule_auto_remove(meta.type) -async def update_object_pose_using_robot_cb(req: srpc.o.UpdateObjectPoseUsingRobot.Request, ui: WsClient) -> None: +async def update_object_pose_using_robot_cb( + req: srpc.o.UpdateObjectPoseUsingRobot.Request, ui: ServerConnection +) -> None: """Updates object's pose using a pose of the robot's end effector. :param req: @@ -437,7 +439,7 @@ async def update_object_pose_using_robot_cb(req: srpc.o.UpdateObjectPoseUsingRob return None -async def update_object_pose_cb(req: srpc.s.UpdateObjectPose.Request, ui: WsClient) -> None: +async def update_object_pose_cb(req: srpc.s.UpdateObjectPose.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception(ensure_project_closed=True) if scene_started(): @@ -462,7 +464,7 @@ async def update_object_pose_cb(req: srpc.s.UpdateObjectPose.Request, ui: WsClie return None -async def rename_object_cb(req: srpc.s.RenameObject.Request, ui: WsClient) -> None: +async def rename_object_cb(req: srpc.s.RenameObject.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception(ensure_project_closed=True) target_obj = scene.object(req.args.id) @@ -493,7 +495,7 @@ async def rename_object_cb(req: srpc.s.RenameObject.Request, ui: WsClient) -> No return None -async def rename_scene_cb(req: srpc.s.RenameScene.Request, ui: WsClient) -> None: +async def rename_scene_cb(req: srpc.s.RenameScene.Request, ui: ServerConnection) -> None: unique_name(req.args.new_name, (await scene_names())) # TODO workaround for https://gitlab.com/kinalisoft/test-it-off/project/-/issues/16 @@ -516,7 +518,7 @@ async def rename_scene_cb(req: srpc.s.RenameScene.Request, ui: WsClient) -> None return None -async def delete_scene_cb(req: srpc.s.DeleteScene.Request, ui: WsClient) -> None | srpc.s.DeleteScene.Response: +async def delete_scene_cb(req: srpc.s.DeleteScene.Request, ui: ServerConnection) -> None | srpc.s.DeleteScene.Response: if glob.LOCK.scene: raise Arcor2Exception("Scene has to be closed first.") @@ -549,7 +551,7 @@ async def delete_scene_cb(req: srpc.s.DeleteScene.Request, ui: WsClient) -> None async def projects_with_scene_cb( - req: srpc.s.ProjectsWithScene.Request, ui: WsClient + req: srpc.s.ProjectsWithScene.Request, ui: ServerConnection ) -> srpc.s.ProjectsWithScene.Response: async with ctx_read_lock(req.args.id, glob.USERS.user_name(ui)): resp = srpc.s.ProjectsWithScene.Response() @@ -557,7 +559,7 @@ async def projects_with_scene_cb( return resp -async def update_scene_description_cb(req: srpc.s.UpdateSceneDescription.Request, ui: WsClient) -> None: +async def update_scene_description_cb(req: srpc.s.UpdateSceneDescription.Request, ui: ServerConnection) -> None: async with ctx_write_lock(req.args.scene_id, glob.USERS.user_name(ui)): async with managed_scene(req.args.scene_id) as scene: scene.description = req.args.new_description @@ -569,7 +571,7 @@ async def update_scene_description_cb(req: srpc.s.UpdateSceneDescription.Request return None -async def copy_scene_cb(req: srpc.s.CopyScene.Request, ui: WsClient) -> None: +async def copy_scene_cb(req: srpc.s.CopyScene.Request, ui: ServerConnection) -> None: async with ctx_write_lock(req.args.source_id, glob.USERS.user_name(ui)): # TODO check if target_name is unique async with managed_scene(req.args.source_id, make_copy=True) as scene: @@ -583,7 +585,7 @@ async def copy_scene_cb(req: srpc.s.CopyScene.Request, ui: WsClient) -> None: # TODO maybe this would better fit into another category of RPCs? Like common/misc? -async def get_camera_pose_cb(req: srpc.c.GetCameraPose.Request, ui: WsClient) -> srpc.c.GetCameraPose.Response: +async def get_camera_pose_cb(req: srpc.c.GetCameraPose.Request, ui: ServerConnection) -> srpc.c.GetCameraPose.Response: try: return srpc.c.GetCameraPose.Response( data=await hlp.run_in_executor( @@ -601,7 +603,7 @@ async def get_camera_pose_cb(req: srpc.c.GetCameraPose.Request, ui: WsClient) -> # TODO maybe this would better fit into another category of RPCs? Like common/misc? -async def marker_corners_cb(req: srpc.c.MarkersCorners.Request, ui: WsClient) -> srpc.c.MarkersCorners.Response: +async def marker_corners_cb(req: srpc.c.MarkersCorners.Request, ui: ServerConnection) -> srpc.c.MarkersCorners.Response: return srpc.c.MarkersCorners.Response( data=await hlp.run_in_executor( calibration.markers_corners, req.args.camera_parameters, image_from_str(req.args.image) @@ -609,7 +611,7 @@ async def marker_corners_cb(req: srpc.c.MarkersCorners.Request, ui: WsClient) -> ) -async def start_scene_cb(req: srpc.s.StartScene.Request, ui: WsClient) -> None: +async def start_scene_cb(req: srpc.s.StartScene.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() if get_scene_state().data.state != sevts.s.SceneState.Data.StateEnum.Stopped: @@ -632,7 +634,7 @@ async def start_scene_cb(req: srpc.s.StartScene.Request, ui: WsClient) -> None: asyncio.ensure_future(start_scene(scene)) -async def stop_scene_cb(req: srpc.s.StopScene.Request, ui: WsClient) -> None: +async def stop_scene_cb(req: srpc.s.StopScene.Request, ui: ServerConnection) -> None: scene = glob.LOCK.scene_or_exception() if get_scene_state().data.state != sevts.s.SceneState.Data.StateEnum.Started: @@ -654,7 +656,7 @@ async def stop_scene_cb(req: srpc.s.StopScene.Request, ui: WsClient) -> None: async def add_virtual_collision_object_to_scene_cb( - req: srpc.s.AddVirtualCollisionObjectToScene.Request, ui: WsClient + req: srpc.s.AddVirtualCollisionObjectToScene.Request, ui: ServerConnection ) -> None: async with ctx_write_lock( (glob.LOCK.SpecialValues.SCENE, glob.LOCK.SpecialValues.ADDING_OBJECT), glob.USERS.user_name(ui) diff --git a/src/python/arcor2_arserver/rpc/user.py b/src/python/arcor2_arserver/rpc/user.py index 8813330d6..8c229c138 100644 --- a/src/python/arcor2_arserver/rpc/user.py +++ b/src/python/arcor2_arserver/rpc/user.py @@ -1,6 +1,6 @@ import asyncio -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2_arserver import globals as glob from arcor2_arserver import logger @@ -9,7 +9,7 @@ from arcor2_arserver_data import rpc as srpc -async def register_user_cb(req: srpc.u.RegisterUser.Request, ui: WsClient) -> None: +async def register_user_cb(req: srpc.u.RegisterUser.Request, ui: ServerConnection) -> None: await glob.USERS.login(req.args.user_name, ui) logger.debug(f"User {req.args.user_name} just logged in. Known user names are: {glob.USERS.user_names}") diff --git a/src/python/arcor2_arserver/scripts/arserver.py b/src/python/arcor2_arserver/scripts/arserver.py index 1cbf4cab7..bc4947e05 100644 --- a/src/python/arcor2_arserver/scripts/arserver.py +++ b/src/python/arcor2_arserver/scripts/arserver.py @@ -13,7 +13,7 @@ from aiologger.levels import LogLevel from aiorun import run from dataclasses_jsonschema import ValidationError -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection import arcor2.helpers as hlp import arcor2_arserver @@ -109,7 +109,7 @@ async def handle_manager_incoming_messages(manager_client) -> None: logger.error(f"Connection to manager closed. {str(e)}") -_server: websockets.server.WebSocketServer | None = None +_server: websockets.asyncio.server.Server | None = None async def _initialize_server() -> None: @@ -165,15 +165,15 @@ async def _initialize_server() -> None: logger.warn("Development mode. The service will shutdown on any unhandled exception.") logger.info(f"ARServer {arcor2_arserver.version()} " f"(API version {arcor2_arserver_data.version()}) initialized.") - _server = await websockets.server.serve(bound_handler, "0.0.0.0", glob.PORT) + _server = await websockets.asyncio.server.serve(bound_handler, "0.0.0.0", glob.PORT) asyncio.create_task(run_lock_notification_worker()) -async def list_meshes_cb(req: obj_rpc.ListMeshes.Request, ui: WsClient) -> obj_rpc.ListMeshes.Response: +async def list_meshes_cb(req: obj_rpc.ListMeshes.Request, ui: ServerConnection) -> obj_rpc.ListMeshes.Response: return obj_rpc.ListMeshes.Response(data=await storage.get_meshes()) -async def register(websocket: WsClient) -> None: +async def register(websocket: ServerConnection) -> None: logger.info("Registering new ui") glob.USERS.add_interface(websocket) @@ -199,7 +199,7 @@ async def register(websocket: WsClient) -> None: await notif.event(websocket, scene.get_scene_state()) -async def unregister(websocket: WsClient) -> None: +async def unregister(websocket: ServerConnection) -> None: try: user_name = glob.USERS.user_name(websocket) except Arcor2Exception: @@ -220,7 +220,7 @@ async def unregister(websocket: WsClient) -> None: registered_uis.remove(websocket) -async def system_info_cb(req: srpc.c.SystemInfo.Request, ui: WsClient) -> srpc.c.SystemInfo.Response: +async def system_info_cb(req: srpc.c.SystemInfo.Request, ui: ServerConnection) -> srpc.c.SystemInfo.Response: resp = srpc.c.SystemInfo.Response() resp.data = resp.Data( arcor2_arserver.version(), diff --git a/src/python/arcor2_arserver/tests/BUILD b/src/python/arcor2_arserver/tests/BUILD index ff859302e..90fcbe0b7 100644 --- a/src/python/arcor2_arserver/tests/BUILD +++ b/src/python/arcor2_arserver/tests/BUILD @@ -1,5 +1,4 @@ python_tests( - interpreter_constraints=["==3.11.*"], runtime_package_dependencies=[ "src/python/arcor2/scripts:upload_builtin_objects", "src/python/arcor2_mocks/scripts:mock_asset", diff --git a/src/python/arcor2_arserver/tests/objects/object_with_actions.py b/src/python/arcor2_arserver/tests/objects/object_with_actions.py index 499de15f3..faec38f80 100644 --- a/src/python/arcor2_arserver/tests/objects/object_with_actions.py +++ b/src/python/arcor2_arserver/tests/objects/object_with_actions.py @@ -5,9 +5,9 @@ class MyEnum(IntEnum): - ONE: int = 1 - TWO: int = 2 - THREE: int = 3 + ONE = 1 + TWO = 2 + THREE = 3 class ObjectWithActions(Generic): diff --git a/src/python/arcor2_arserver/tests/test_linked_pose.py b/src/python/arcor2_arserver/tests/test_linked_pose.py index 772026c93..8816fa270 100644 --- a/src/python/arcor2_arserver/tests/test_linked_pose.py +++ b/src/python/arcor2_arserver/tests/test_linked_pose.py @@ -183,12 +183,12 @@ def test_linked_pose(start_processes: None, ars: ARServer) -> None: ps = event(ars, arcor2_events.PackageState).data assert ps assert ps.package_id == package.id - assert ps.state == ps.state.STARTED + assert ps.state == arcor2_events.PackageState.Data.StateEnum.STARTED pr = event(ars, arcor2_events.PackageState).data assert pr assert pr.package_id == package.id - assert pr.state == ps.state.RUNNING + assert pr.state == arcor2_events.PackageState.Data.StateEnum.RUNNING pi = event(ars, arcor2_events.PackageInfo).data assert pi @@ -216,12 +216,12 @@ def test_linked_pose(start_processes: None, ars: ARServer) -> None: ps2 = wait_for_event(ars, arcor2_events.PackageState).data assert ps2 assert ps2.package_id == package.id - assert ps2.state == ps.state.STOPPING + assert ps2.state == arcor2_events.PackageState.Data.StateEnum.STOPPING ps3 = wait_for_event(ars, arcor2_events.PackageState).data assert ps3 assert ps3.package_id == package.id - assert ps3.state == ps.state.STOPPED + assert ps3.state == arcor2_events.PackageState.Data.StateEnum.STOPPED show_main_screen_event = event(ars, events.c.ShowMainScreen) assert show_main_screen_event.data diff --git a/src/python/arcor2_arserver/tests/test_position_param.py b/src/python/arcor2_arserver/tests/test_position_param.py index 41d7c982a..23a7977f7 100644 --- a/src/python/arcor2_arserver/tests/test_position_param.py +++ b/src/python/arcor2_arserver/tests/test_position_param.py @@ -142,12 +142,12 @@ def test_position_param(start_processes: None, ars: ARServer) -> None: ps = event(ars, arcor2_events.PackageState).data assert ps assert ps.package_id == package.id - assert ps.state == ps.state.STARTED + assert ps.state == arcor2_events.PackageState.Data.StateEnum.STARTED pr = event(ars, arcor2_events.PackageState).data assert pr assert pr.package_id == package.id - assert pr.state == ps.state.RUNNING + assert pr.state == arcor2_events.PackageState.Data.StateEnum.RUNNING pi = event(ars, arcor2_events.PackageInfo).data assert pi @@ -168,12 +168,12 @@ def test_position_param(start_processes: None, ars: ARServer) -> None: ps2 = wait_for_event(ars, arcor2_events.PackageState).data assert ps2 assert ps2.package_id == package.id - assert ps2.state == ps.state.STOPPING + assert ps2.state == arcor2_events.PackageState.Data.StateEnum.STOPPING ps3 = wait_for_event(ars, arcor2_events.PackageState).data assert ps3 assert ps3.package_id == package.id - assert ps3.state == ps.state.STOPPED + assert ps3.state == arcor2_events.PackageState.Data.StateEnum.STOPPED show_main_screen_event = event(ars, events.c.ShowMainScreen) assert show_main_screen_event.data diff --git a/src/python/arcor2_arserver/tests/test_project_execution.py b/src/python/arcor2_arserver/tests/test_project_execution.py index 8aea0ad0d..c4548332e 100644 --- a/src/python/arcor2_arserver/tests/test_project_execution.py +++ b/src/python/arcor2_arserver/tests/test_project_execution.py @@ -160,12 +160,12 @@ def test_run_simple_project(start_processes: None, ars: ARServer) -> None: ps = event(ars, arcor2_events.PackageState).data assert ps assert ps.package_id == package.id - assert ps.state == ps.state.STARTED + assert ps.state == arcor2_events.PackageState.Data.StateEnum.STARTED pr = event(ars, arcor2_events.PackageState).data assert pr assert pr.package_id == package.id - assert pr.state == ps.state.RUNNING + assert pr.state == arcor2_events.PackageState.Data.StateEnum.RUNNING pi = event(ars, arcor2_events.PackageInfo).data assert pi @@ -204,12 +204,12 @@ def test_run_simple_project(start_processes: None, ars: ARServer) -> None: ps2 = wait_for_event(ars, arcor2_events.PackageState).data assert ps2 assert ps2.package_id == package.id - assert ps2.state == ps.state.STOPPING + assert ps2.state == arcor2_events.PackageState.Data.StateEnum.STOPPING ps3 = wait_for_event(ars, arcor2_events.PackageState).data assert ps3 assert ps3.package_id == package.id - assert ps3.state == ps.state.STOPPED + assert ps3.state == arcor2_events.PackageState.Data.StateEnum.STOPPED show_main_screen_event = event(ars, events.c.ShowMainScreen) assert show_main_screen_event.data diff --git a/src/python/arcor2_arserver/tests/testutils.py b/src/python/arcor2_arserver/tests/testutils.py index ef63bca8b..7c8195320 100644 --- a/src/python/arcor2_arserver/tests/testutils.py +++ b/src/python/arcor2_arserver/tests/testutils.py @@ -57,7 +57,8 @@ def start_processes(request) -> Iterator[None]: try: processes = [] my_env = os.environ.copy() - kwargs = {"env": my_env, "stdout": sp.PIPE, "stderr": sp.STDOUT} + my_env["ARCOR2_REST_API_DEBUG"] = "true" + kwargs = {"env": my_env, "stdout": sp.PIPE, "stderr": sp.STDOUT, "start_new_session": True} project_port = find_free_port() project_url = f"http://0.0.0.0:{project_port}" @@ -104,9 +105,9 @@ def start_processes(request) -> Iterator[None]: ) check_health("Build", build_url) - except CheckHealthException: + except CheckHealthException as e: finish_processes(processes) - raise + pytest.exit(str(e), returncode=2) if additional_deps: for dep in additional_deps: @@ -115,7 +116,7 @@ def start_processes(request) -> Iterator[None]: ret = add_proc.communicate() if add_proc.returncode != 0: log_proc_output(ret) - raise Exception(f"Additional dependency {dep} failed.") + pytest.exit(f"Additional dependency {dep} failed.", returncode=2) _arserver_port = find_free_port() my_env["ARCOR2_ARSERVER_PORT"] = str(_arserver_port) @@ -132,7 +133,7 @@ def start_processes(request) -> Iterator[None]: if arserver_proc.poll(): finish_processes(processes) - raise Exception("ARServer died.") + pytest.exit("ARServer died.", returncode=2) yield None diff --git a/src/python/arcor2_arserver/user.py b/src/python/arcor2_arserver/user.py index edcab476e..42b63bf01 100644 --- a/src/python/arcor2_arserver/user.py +++ b/src/python/arcor2_arserver/user.py @@ -1,7 +1,7 @@ import asyncio +from websockets.asyncio.server import ServerConnection from websockets.exceptions import WebSocketException -from websockets.server import WebSocketServerProtocol as WsClient from arcor2.exceptions import Arcor2Exception @@ -14,9 +14,9 @@ class Users: __slots__ = ("_interfaces", "_users_ui", "_ui_users") def __init__(self) -> None: - self._interfaces: set[WsClient] = set() - self._users_ui: dict[str, WsClient] = {} - self._ui_users: dict[WsClient, str] = {} + self._interfaces: set[ServerConnection] = set() + self._users_ui: dict[str, ServerConnection] = {} + self._ui_users: dict[ServerConnection, str] = {} def _assert_consistency(self) -> None: assert list(self._ui_users.keys()) == list(self._users_ui.values()) @@ -24,13 +24,13 @@ def _assert_consistency(self) -> None: assert set(self._ui_users).issubset(self._interfaces) @property - def interfaces(self) -> set[WsClient]: + def interfaces(self) -> set[ServerConnection]: return self._interfaces - def add_interface(self, ui: WsClient) -> None: + def add_interface(self, ui: ServerConnection) -> None: self._interfaces.add(ui) - async def login(self, user_name: str, ui: WsClient) -> None: + async def login(self, user_name: str, ui: ServerConnection) -> None: self._assert_consistency() if not user_name: @@ -56,7 +56,7 @@ async def login(self, user_name: str, ui: WsClient) -> None: self._assert_consistency() - def logout(self, ui: WsClient) -> None: + def logout(self, ui: ServerConnection) -> None: """Removes ui from known interfaces and logs a user out (if logged in). :param ui: @@ -79,7 +79,7 @@ def logout(self, ui: WsClient) -> None: def user_names(self) -> set[str]: return set(self._users_ui) - def user_name(self, ui: WsClient) -> str: + def user_name(self, ui: ServerConnection) -> str: self._assert_consistency() try: diff --git a/src/python/arcor2_arserver_data/events/common.py b/src/python/arcor2_arserver_data/events/common.py index 29be6f487..4f2417053 100644 --- a/src/python/arcor2_arserver_data/events/common.py +++ b/src/python/arcor2_arserver_data/events/common.py @@ -12,9 +12,9 @@ class ShowMainScreen(Event): @dataclass class Data(JsonSchemaMixin): class WhatEnum(common.StrEnum): - ScenesList: str = "ScenesList" - ProjectsList: str = "ProjectsList" - PackagesList: str = "PackagesList" + ScenesList = "ScenesList" + ProjectsList = "ProjectsList" + PackagesList = "PackagesList" what: WhatEnum highlight: Optional[str] = None @@ -27,9 +27,9 @@ class ProcessState(Event): @dataclass class Data(JsonSchemaMixin): class StateEnum(common.StrEnum): - Started: str = "started" - Finished: str = "finished" - Failed: str = "failed" + Started = "started" + Finished = "finished" + Failed = "failed" id: str state: StateEnum diff --git a/src/python/arcor2_arserver_data/events/robot.py b/src/python/arcor2_arserver_data/events/robot.py index f3935c9e9..ec54d403d 100644 --- a/src/python/arcor2_arserver_data/events/robot.py +++ b/src/python/arcor2_arserver_data/events/robot.py @@ -12,9 +12,9 @@ @dataclass class RobotMoveToData(JsonSchemaMixin): class MoveEventType(common.StrEnum): - START: str = "start" - END: str = "end" - FAILED: str = "failed" + START = "start" + END = "end" + FAILED = "failed" move_event_type: MoveEventType robot_id: str diff --git a/src/python/arcor2_arserver_data/events/scene.py b/src/python/arcor2_arserver_data/events/scene.py index ee228a6d1..64dd2c04b 100644 --- a/src/python/arcor2_arserver_data/events/scene.py +++ b/src/python/arcor2_arserver_data/events/scene.py @@ -41,10 +41,10 @@ class SceneState(Event): @dataclass class Data(JsonSchemaMixin): class StateEnum(common.StrEnum): - Stopped: str = "stopped" - Starting: str = "starting" - Started: str = "started" - Stopping: str = "stopping" + Stopped = "stopped" + Starting = "starting" + Started = "started" + Stopping = "stopping" state: StateEnum message: Optional[str] = None diff --git a/src/python/arcor2_arserver_data/rpc/lock.py b/src/python/arcor2_arserver_data/rpc/lock.py index cabb288ac..029aff5e5 100644 --- a/src/python/arcor2_arserver_data/rpc/lock.py +++ b/src/python/arcor2_arserver_data/rpc/lock.py @@ -7,8 +7,8 @@ class UpdateType(StrEnum): - TREE: str = "TREE" - OBJECT: str = "OBJECT" + TREE = "TREE" + OBJECT = "OBJECT" # ---------------------------------------------------------------------------------------------------------------------- diff --git a/src/python/arcor2_arserver_data/rpc/objects.py b/src/python/arcor2_arserver_data/rpc/objects.py index 2fdb991b9..33821babd 100644 --- a/src/python/arcor2_arserver_data/rpc/objects.py +++ b/src/python/arcor2_arserver_data/rpc/objects.py @@ -179,9 +179,9 @@ class Request(RPC.Request): @dataclass class Args(IdArgs): class PivotEnum(StrEnum): - TOP: str = "top" - MIDDLE: str = "middle" - BOTTOM: str = "bottom" + TOP = "top" + MIDDLE = "middle" + BOTTOM = "bottom" robot: RobotArg pivot: PivotEnum = PivotEnum.MIDDLE diff --git a/src/python/arcor2_arserver_data/rpc/robot.py b/src/python/arcor2_arserver_data/rpc/robot.py index cef77f508..2a44e6c4c 100644 --- a/src/python/arcor2_arserver_data/rpc/robot.py +++ b/src/python/arcor2_arserver_data/rpc/robot.py @@ -136,8 +136,8 @@ class Request(RPC.Request): @dataclass class Args(JsonSchemaMixin): class RegisterEnum(StrEnum): - EEF_POSE: str = "eef_pose" - JOINTS: str = "joints" + EEF_POSE = "eef_pose" + JOINTS = "joints" robot_id: str what: RegisterEnum @@ -349,19 +349,19 @@ class Request(RPC.Request): @dataclass class Args(JsonSchemaMixin): class Axis(StrEnum): - X: str = "x" - Y: str = "y" - Z: str = "z" + X = "x" + Y = "y" + Z = "z" class What(StrEnum): - POSITION: str = "position" - ORIENTATION: str = "orientation" + POSITION = "position" + ORIENTATION = "orientation" class Mode(StrEnum): - WORLD: str = "world" - ROBOT: str = "robot" - USER: str = "user" - RELATIVE: str = "relative" + WORLD = "world" + ROBOT = "robot" + USER = "user" + RELATIVE = "relative" robot_id: str end_effector_id: str diff --git a/src/python/arcor2_build/source/tests/test_compiler_str.py b/src/python/arcor2_build/source/tests/test_compiler_str.py index 3014964da..ba63ba921 100644 --- a/src/python/arcor2_build/source/tests/test_compiler_str.py +++ b/src/python/arcor2_build/source/tests/test_compiler_str.py @@ -46,8 +46,8 @@ class TestEnum(StrEnum): - CLASS1: str = "1" - CLASS2: str = "2" + CLASS1 = "1" + CLASS2 = "2" class Test(Generic): diff --git a/src/python/arcor2_build/source/tests/test_compiler_unit_tests.py b/src/python/arcor2_build/source/tests/test_compiler_unit_tests.py index adaa7a2ed..a5dc15a46 100644 --- a/src/python/arcor2_build/source/tests/test_compiler_unit_tests.py +++ b/src/python/arcor2_build/source/tests/test_compiler_unit_tests.py @@ -40,8 +40,8 @@ class TestEnum(StrEnum): - CLASS1: str = "1" - CLASS2: str = "2" + CLASS1 = "1" + CLASS2 = "2" class Test(Generic): diff --git a/src/python/arcor2_build/source/utils.py b/src/python/arcor2_build/source/utils.py index 7bc247f6a..c475c54f1 100644 --- a/src/python/arcor2_build/source/utils.py +++ b/src/python/arcor2_build/source/utils.py @@ -102,6 +102,7 @@ def empty_script_tree(project_id: str, add_main_loop: bool = True) -> Module: decorator_list=[], returns=NameConstant(value=None, kind=None), type_comment=None, + type_params=[], ), If( test=Compare( @@ -265,9 +266,11 @@ def global_action_points_class(project: CachedProject) -> str: decorator_list=[], returns=None, type_comment=None, + type_params=[], ) ], decorator_list=[], + type_params=[], ) for joints in project.ap_joints(ap.id): @@ -297,6 +300,7 @@ def global_action_points_class(project: CachedProject) -> str: decorator_list=[Name(id="property", ctx=Load())], returns=Name(id=ProjectRobotJoints.__name__, ctx=Load()), type_comment=None, + type_params=[], ) ) @@ -357,9 +361,11 @@ def global_action_points_class(project: CachedProject) -> str: decorator_list=[], returns=None, type_comment=None, + type_params=[], ) ], decorator_list=[], + type_params=[], ) for ori in project.ap_orientations(ap.id): @@ -389,6 +395,7 @@ def global_action_points_class(project: CachedProject) -> str: decorator_list=[Name(id="property", ctx=Load())], returns=Name(id=Pose.__name__, ctx=Load()), type_comment=None, + type_params=[], ) ) @@ -429,9 +436,11 @@ def global_action_points_class(project: CachedProject) -> str: decorator_list=[], returns=None, type_comment=None, + type_params=[], ) ], decorator_list=[], + type_params=[], ) # add copy property for position @@ -459,6 +468,7 @@ def global_action_points_class(project: CachedProject) -> str: decorator_list=[Name(id="property", ctx=Load())], returns=Name(id=Position.__name__, ctx=Load()), type_comment=None, + type_params=[], ) ) @@ -498,9 +508,11 @@ def global_action_points_class(project: CachedProject) -> str: decorator_list=[], returns=None, type_comment=None, + type_params=[], ) ], decorator_list=[], + type_params=[], ) tree.body.append(aps_cls_def) diff --git a/src/python/arcor2_build/tests/test_cross_import.py b/src/python/arcor2_build/tests/test_cross_import.py index 9367fc8ac..af99af915 100644 --- a/src/python/arcor2_build/tests/test_cross_import.py +++ b/src/python/arcor2_build/tests/test_cross_import.py @@ -32,7 +32,7 @@ def check_health(service_name: str, service_url: str, timeout: int = 60) -> None pass time.sleep(1) else: - raise Exception(f"{service_name} service at {service_url} is not responding.") + pytest.exit(f"{service_name} service at {service_url} is not responding.", returncode=2) @pytest.fixture diff --git a/src/python/arcor2_calibration/BUILD b/src/python/arcor2_calibration/BUILD index 2bb92a2e2..de15e0198 100644 --- a/src/python/arcor2_calibration/BUILD +++ b/src/python/arcor2_calibration/BUILD @@ -2,5 +2,4 @@ arcor2_python_distribution( name="arcor2_calibration", description="ARCOR2 Calibration", binaries={"arcor2_calibration": "src/python/arcor2_calibration/scripts:calibration"}, - interpreter_constraints=["==3.11.*"], ) diff --git a/src/python/arcor2_calibration/scripts/BUILD b/src/python/arcor2_calibration/scripts/BUILD index 11b557bac..a6d4353c8 100644 --- a/src/python/arcor2_calibration/scripts/BUILD +++ b/src/python/arcor2_calibration/scripts/BUILD @@ -1,3 +1,3 @@ -python_sources(interpreter_constraints=["==3.11.*"]) +python_sources() -arcor2_pex_binary(name="calibration", interpreter_constraints=["==3.11.*"]) +arcor2_pex_binary(name="calibration") diff --git a/src/python/arcor2_calibration/tests/BUILD b/src/python/arcor2_calibration/tests/BUILD index ec5aa6564..610987d94 100644 --- a/src/python/arcor2_calibration/tests/BUILD +++ b/src/python/arcor2_calibration/tests/BUILD @@ -2,14 +2,12 @@ python_tests( name="test_calibration.py", runtime_package_dependencies=["src/python/arcor2_calibration/scripts:calibration"], sources=["test_calibration.py"], - interpreter_constraints=["==3.11.*"], ) python_tests( name="test_estimate_camera_pose.py", sources=["test_estimate_camera_pose.py"], dependencies=[":markers.png"], - interpreter_constraints=["==3.11.*"], ) resources(name="markers.png", sources=["markers.png"]) diff --git a/src/python/arcor2_dobot/dobot.py b/src/python/arcor2_dobot/dobot.py index c6ef402ec..d08661b27 100644 --- a/src/python/arcor2_dobot/dobot.py +++ b/src/python/arcor2_dobot/dobot.py @@ -29,9 +29,9 @@ class DobotException(RobotException): class MoveType(StrEnum): - JUMP: str = "JUMP" - JOINTS: str = "JOINTS" - LINEAR: str = "LINEAR" + JUMP = "JUMP" + JOINTS = "JOINTS" + LINEAR = "LINEAR" MOVE_TYPE_MAPPING = { diff --git a/src/python/arcor2_dobot/m1.py b/src/python/arcor2_dobot/m1.py index e8552e121..d1f7d83b3 100644 --- a/src/python/arcor2_dobot/m1.py +++ b/src/python/arcor2_dobot/m1.py @@ -6,10 +6,10 @@ class Joints(StrEnum): - J1: str = "dobot_m1_axis_2_joint" - J2: str = "dobot_m1_axis_3_joint" - J3: str = "dobot_m1_z_axis_joint" - J4: str = "dobot_m1_axis_4_joint" + J1 = "dobot_m1_axis_2_joint" + J2 = "dobot_m1_axis_3_joint" + J3 = "dobot_m1_z_axis_joint" + J4 = "dobot_m1_axis_4_joint" class DobotM1(Dobot): diff --git a/src/python/arcor2_dobot/magician.py b/src/python/arcor2_dobot/magician.py index 2668edee2..a29a8adcf 100644 --- a/src/python/arcor2_dobot/magician.py +++ b/src/python/arcor2_dobot/magician.py @@ -9,11 +9,11 @@ class Joints(StrEnum): - J1: str = "magician_joint_1" - J2: str = "magician_joint_2" - J3: str = "magician_joint_3" - J4: str = "magician_joint_4" - J5: str = "magician_joint_5" + J1 = "magician_joint_1" + J2 = "magician_joint_2" + J3 = "magician_joint_3" + J4 = "magician_joint_4" + J5 = "magician_joint_5" class DobotMagician(Dobot): diff --git a/src/python/arcor2_dobot/scripts/dobot.py b/src/python/arcor2_dobot/scripts/dobot.py index 81132d1d6..c19f4765c 100644 --- a/src/python/arcor2_dobot/scripts/dobot.py +++ b/src/python/arcor2_dobot/scripts/dobot.py @@ -26,8 +26,8 @@ class DobotModels(StrEnum): - MAGICIAN: str = "magician" - M1: str = "m1" + MAGICIAN = "magician" + M1 = "m1" URL = os.getenv("ARCOR2_DOBOT_URL", "http://localhost:5018") diff --git a/src/python/arcor2_dobot/tests/BUILD b/src/python/arcor2_dobot/tests/BUILD index dab114595..e4e22fffa 100644 --- a/src/python/arcor2_dobot/tests/BUILD +++ b/src/python/arcor2_dobot/tests/BUILD @@ -1,5 +1,4 @@ python_tests( - interpreter_constraints=["==3.11.*"], runtime_package_dependencies=[ "src/python/arcor2_dobot/scripts:dobot", "src/python/arcor2_scene/scripts:scene", diff --git a/src/python/arcor2_dobot/tests/conftest.py b/src/python/arcor2_dobot/tests/conftest.py index 25f91279f..9d3861969 100644 --- a/src/python/arcor2_dobot/tests/conftest.py +++ b/src/python/arcor2_dobot/tests/conftest.py @@ -46,7 +46,7 @@ def start_processes(request) -> Iterator[Urls]: if dobot_proc.poll(): finish_processes(processes) - raise Exception("Dobot service died.") + pytest.exit("Dobot service died.", returncode=2) check_health("Dobot", dobot_url) diff --git a/src/python/arcor2_execution/scripts/execution.py b/src/python/arcor2_execution/scripts/execution.py index 87ba08e41..4e8cdfd7e 100644 --- a/src/python/arcor2_execution/scripts/execution.py +++ b/src/python/arcor2_execution/scripts/execution.py @@ -18,7 +18,7 @@ from aiologger.levels import LogLevel from aiorun import run from dataclasses_jsonschema import ValidationError -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection import arcor2_execution import arcor2_execution_data @@ -44,7 +44,7 @@ TASK: None | asyncio.Task = None -CLIENTS: set[WsClient] = set() +CLIENTS: set[ServerConnection] = set() MAIN_SCRIPT_NAME = "script.py" @@ -157,7 +157,7 @@ async def check_script(script_path: str) -> None: raise Arcor2Exception("Main script not found.") -async def run_package_cb(req: rpc.RunPackage.Request, ui: WsClient) -> None: +async def run_package_cb(req: rpc.RunPackage.Request, ui: ServerConnection) -> None: async def _update_executed(package_id: str) -> None: meta = await run_in_executor(read_package_meta, package_id) meta.executed = datetime.now(tz=timezone.utc) @@ -220,7 +220,7 @@ async def _update_executed(package_id: str) -> None: asyncio.create_task(_update_executed(req.args.id)) -async def stop_package_cb(req: rpc.StopPackage.Request, ui: WsClient) -> None: +async def stop_package_cb(req: rpc.StopPackage.Request, ui: ServerConnection) -> None: async def _terminate_task() -> None: global PACKAGE_INFO_EVENT global RUNNING_PACKAGE_ID @@ -253,7 +253,7 @@ async def _terminate_task() -> None: asyncio.create_task(_terminate_task()) -async def pause_package_cb(req: rpc.PausePackage.Request, ui: WsClient) -> None: +async def pause_package_cb(req: rpc.PausePackage.Request, ui: ServerConnection) -> None: async def _pause() -> None: assert PROCESS is not None assert PROCESS.stdin is not None @@ -270,7 +270,7 @@ async def _pause() -> None: asyncio.create_task(_pause()) -async def step_action_cb(req: rpc.StepAction.Request, ui: WsClient) -> None: +async def step_action_cb(req: rpc.StepAction.Request, ui: ServerConnection) -> None: async def _step() -> None: assert PROCESS is not None assert PROCESS.stdin is not None @@ -287,7 +287,7 @@ async def _step() -> None: asyncio.create_task(_step()) -async def resume_package_cb(req: rpc.ResumePackage.Request, ui: WsClient) -> None: +async def resume_package_cb(req: rpc.ResumePackage.Request, ui: ServerConnection) -> None: async def _resume() -> None: assert PROCESS is not None assert PROCESS.stdin is not None @@ -305,7 +305,7 @@ async def _resume() -> None: asyncio.create_task(_resume()) -async def _upload_package_cb(req: rpc.UploadPackage.Request, ui: WsClient) -> None: +async def _upload_package_cb(req: rpc.UploadPackage.Request, ui: ServerConnection) -> None: async def _upload_event(path_to_package: str) -> None: summary = await get_summary(path_to_package) evt = events.PackageChanged(summary) @@ -373,7 +373,7 @@ async def get_opt_summary(path: str) -> None | PackageSummary: return PackageSummary(package_dir, package_meta, ProjectMeta.from_project(project)) -async def list_packages_cb(req: rpc.ListPackages.Request, ui: WsClient) -> rpc.ListPackages.Response: +async def list_packages_cb(req: rpc.ListPackages.Request, ui: ServerConnection) -> rpc.ListPackages.Response: resp = rpc.ListPackages.Response() subfolders = [f.path for f in os.scandir(PROJECT_PATH) if f.is_dir()] resp.data = [ @@ -384,7 +384,7 @@ async def list_packages_cb(req: rpc.ListPackages.Request, ui: WsClient) -> rpc.L return resp -async def delete_package_cb(req: rpc.DeletePackage.Request, ui: WsClient) -> None: +async def delete_package_cb(req: rpc.DeletePackage.Request, ui: ServerConnection) -> None: if RUNNING_PACKAGE_ID and RUNNING_PACKAGE_ID == req.args.id: raise Arcor2Exception("Package is being executed.") @@ -403,7 +403,7 @@ async def delete_package_cb(req: rpc.DeletePackage.Request, ui: WsClient) -> Non return None -async def rename_package_cb(req: rpc.RenamePackage.Request, ui: WsClient) -> None: +async def rename_package_cb(req: rpc.RenamePackage.Request, ui: ServerConnection) -> None: target_path = os.path.join(PROJECT_PATH, req.args.package_id, "package.json") pm = read_package_meta(req.args.package_id) @@ -420,7 +420,9 @@ async def rename_package_cb(req: rpc.RenamePackage.Request, ui: WsClient) -> Non asyncio.ensure_future(send_to_clients(evt)) -async def _version_cb(req: arcor2_rpc.common.Version.Request, ui: WsClient) -> arcor2_rpc.common.Version.Response: +async def _version_cb( + req: arcor2_rpc.common.Version.Request, ui: ServerConnection +) -> arcor2_rpc.common.Version.Response: resp = arcor2_rpc.common.Version.Response() resp.data = resp.Data(await run_in_executor(arcor2_execution_data.version)) return resp @@ -434,7 +436,7 @@ async def send_to_clients(event: events.Event) -> None: websockets.broadcast(CLIENTS, event.to_json()) -async def register(websocket: WsClient) -> None: +async def register(websocket: ServerConnection) -> None: logger.info("Registering new client") CLIENTS.add(websocket) @@ -446,7 +448,7 @@ async def register(websocket: WsClient) -> None: await asyncio.gather(*tasks) -async def unregister(websocket: WsClient) -> None: +async def unregister(websocket: ServerConnection) -> None: logger.info("Unregistering client") CLIENTS.remove(websocket) @@ -473,7 +475,7 @@ async def aio_main() -> None: f"Execution service {arcor2_execution.version()} " f"(API version {arcor2_execution_data.version()}) started." ) - await websockets.server.serve( + await websockets.asyncio.server.serve( functools.partial(ws_server.server, logger=logger, register=register, unregister=unregister, rpc_dict=RPC_DICT), "0.0.0.0", port_from_url(URL), diff --git a/src/python/arcor2_execution_rest_proxy/scripts/execution_rest_proxy.py b/src/python/arcor2_execution_rest_proxy/scripts/execution_rest_proxy.py index 3194569bf..19040830e 100644 --- a/src/python/arcor2_execution_rest_proxy/scripts/execution_rest_proxy.py +++ b/src/python/arcor2_execution_rest_proxy/scripts/execution_rest_proxy.py @@ -45,12 +45,12 @@ class ExecutionState(Enum): """Represents the state of package execution.""" - Undefined: str = "Undefined" - Running: str = "Running" - Completed: str = "Completed" - Faulted: str = "Faulted" - Paused: str = "Paused" - Pending: str = "Pending" + Undefined = "Undefined" + Running = "Running" + Completed = "Completed" + Faulted = "Faulted" + Paused = "Paused" + Pending = "Pending" @dataclass diff --git a/src/python/arcor2_fit_demo/object_types/abstract_dobot.py b/src/python/arcor2_fit_demo/object_types/abstract_dobot.py index 52006ba52..f42403561 100644 --- a/src/python/arcor2_fit_demo/object_types/abstract_dobot.py +++ b/src/python/arcor2_fit_demo/object_types/abstract_dobot.py @@ -12,9 +12,9 @@ class DobotException(RobotException): class MoveType(StrEnum): - JUMP: str = "JUMP" - JOINTS: str = "JOINTS" - LINEAR: str = "LINEAR" + JUMP = "JUMP" + JOINTS = "JOINTS" + LINEAR = "LINEAR" class AbstractDobot(FitCommonMixin, Robot): diff --git a/src/python/arcor2_fit_demo/object_types/conveyor_belt.py b/src/python/arcor2_fit_demo/object_types/conveyor_belt.py index 922e70eba..c91f0ecc6 100644 --- a/src/python/arcor2_fit_demo/object_types/conveyor_belt.py +++ b/src/python/arcor2_fit_demo/object_types/conveyor_belt.py @@ -11,13 +11,13 @@ class Direction(StrEnum): - LEFT: str = "left" - RIGHT: str = "right" + LEFT = "left" + RIGHT = "right" @dataclass class ConveyorBeltSettings(UrlSettings): - url: str = "http://fit-demo-dobot-magician:5018" + url = "http://fit-demo-dobot-magician:5018" class ConveyorBelt(FitCommonMixin, CollisionObject): diff --git a/src/python/arcor2_fit_demo/object_types/dobot_magician.py b/src/python/arcor2_fit_demo/object_types/dobot_magician.py index aea0c95fd..ef3ea8454 100644 --- a/src/python/arcor2_fit_demo/object_types/dobot_magician.py +++ b/src/python/arcor2_fit_demo/object_types/dobot_magician.py @@ -8,11 +8,11 @@ class Joints(StrEnum): - J1: str = "magician_joint_1" - J2: str = "magician_joint_2" - J3: str = "magician_joint_3" - J4: str = "magician_joint_4" - J5: str = "magician_joint_5" + J1 = "magician_joint_1" + J2 = "magician_joint_2" + J3 = "magician_joint_3" + J4 = "magician_joint_4" + J5 = "magician_joint_5" @dataclass diff --git a/src/python/arcor2_fit_demo/object_types/tests/BUILD b/src/python/arcor2_fit_demo/object_types/tests/BUILD index d39edcd63..1b0114c45 100644 --- a/src/python/arcor2_fit_demo/object_types/tests/BUILD +++ b/src/python/arcor2_fit_demo/object_types/tests/BUILD @@ -1,5 +1,4 @@ python_tests( - interpreter_constraints=["==3.11.*"], dependencies=[ "src/python/arcor2_fit_demo/data/dobot-m1:dobot-m1", "src/python/arcor2_fit_demo/data/dobot-magician:dobot-magician", diff --git a/src/python/arcor2_fit_demo/tests/BUILD b/src/python/arcor2_fit_demo/tests/BUILD index 9b6d18835..84c041498 100644 --- a/src/python/arcor2_fit_demo/tests/BUILD +++ b/src/python/arcor2_fit_demo/tests/BUILD @@ -1,5 +1,4 @@ python_tests( - interpreter_constraints=["==3.11.*"], runtime_package_dependencies=[ "src/python/arcor2_mocks/scripts:mock_asset", "src/python/arcor2_mocks/scripts:mock_project", diff --git a/src/python/arcor2_logger/object_types/logging_mixin.py b/src/python/arcor2_logger/object_types/logging_mixin.py index a0be8b810..0033bafad 100644 --- a/src/python/arcor2_logger/object_types/logging_mixin.py +++ b/src/python/arcor2_logger/object_types/logging_mixin.py @@ -83,12 +83,10 @@ def close(self) -> None: class GenericProtocol(Protocol): @property - def id(self) -> str: - ... + def id(self) -> str: ... @property - def name(self) -> str: - ... + def name(self) -> str: ... class LoggingMixin: diff --git a/src/python/arcor2_logger/scripts/logger.py b/src/python/arcor2_logger/scripts/logger.py index 26b917761..3832c4edd 100644 --- a/src/python/arcor2_logger/scripts/logger.py +++ b/src/python/arcor2_logger/scripts/logger.py @@ -6,7 +6,7 @@ from aiologger.levels import LogLevel from aiorun import run from dataclasses_jsonschema import ValidationError -from websockets.server import WebSocketServerProtocol as WsClient +from websockets.asyncio.server import ServerConnection from arcor2 import env from arcor2.exceptions import Arcor2Exception @@ -23,7 +23,7 @@ # ...but for now this is much more simpler and just enough -async def handle_requests(websocket: WsClient, path: str) -> None: +async def handle_requests(websocket: ServerConnection) -> None: assert not sys.stdout.closed # closed stdout was problem when creating and shutting down logger for each client try: @@ -75,7 +75,7 @@ async def handle_requests(websocket: WsClient, path: str) -> None: async def aio_main() -> None: - await websockets.server.serve( + await websockets.asyncio.server.serve( handle_requests, "localhost", port_from_url(os.getenv("ARCOR2_LOGGER_URL", "ws://0.0.0.0:8765")) ) await logger.info(f"Logger service {version()} started. Logging level is {logging_level.name}.") diff --git a/src/python/arcor2_logger/tests/BUILD b/src/python/arcor2_logger/tests/BUILD index c10302c4d..6b1474cef 100644 --- a/src/python/arcor2_logger/tests/BUILD +++ b/src/python/arcor2_logger/tests/BUILD @@ -1,5 +1,4 @@ python_tests( - interpreter_constraints=["==3.11.*"], runtime_package_dependencies=[ "src/python/arcor2_mocks/scripts:mock_asset", "src/python/arcor2_mocks/scripts:mock_project", diff --git a/src/python/arcor2_runtime/action.py b/src/python/arcor2_runtime/action.py index 6a601cb42..99215a597 100644 --- a/src/python/arcor2_runtime/action.py +++ b/src/python/arcor2_runtime/action.py @@ -16,9 +16,9 @@ class Commands(StrEnum): - PAUSE: str = "p" - RESUME: str = "r" - STEP: str = "s" + PAUSE = "p" + RESUME = "r" + STEP = "s" ACTION_NAME_ID_MAPPING_ATTR = "_action_name_id_mapping" diff --git a/src/python/arcor2_scene/BUILD b/src/python/arcor2_scene/BUILD index d9038f409..5810d0590 100644 --- a/src/python/arcor2_scene/BUILD +++ b/src/python/arcor2_scene/BUILD @@ -4,5 +4,4 @@ arcor2_python_distribution( binaries={ "arcor2_scene": "src/python/arcor2_scene/scripts:scene", }, - interpreter_constraints=["==3.11.*"], ) diff --git a/src/python/arcor2_scene/scripts/BUILD b/src/python/arcor2_scene/scripts/BUILD index bbf1aa724..72d9f6da9 100644 --- a/src/python/arcor2_scene/scripts/BUILD +++ b/src/python/arcor2_scene/scripts/BUILD @@ -1,3 +1,3 @@ -python_sources(interpreter_constraints=["==3.11.*"]) +python_sources() -arcor2_pex_binary(name="scene", interpreter_constraints=["==3.11.*"]) +arcor2_pex_binary(name="scene") diff --git a/src/python/arcor2_scene/tests/BUILD b/src/python/arcor2_scene/tests/BUILD index eb4c2494c..be23f8949 100644 --- a/src/python/arcor2_scene/tests/BUILD +++ b/src/python/arcor2_scene/tests/BUILD @@ -2,5 +2,4 @@ python_tests( runtime_package_dependencies=[ "src/python/arcor2_scene/scripts:scene", ], - interpreter_constraints=["==3.11.*"], ) diff --git a/src/python/arcor2_ur/object_types/ur5e.py b/src/python/arcor2_ur/object_types/ur5e.py index 9f25cda31..3bcaf28cd 100644 --- a/src/python/arcor2_ur/object_types/ur5e.py +++ b/src/python/arcor2_ur/object_types/ur5e.py @@ -25,9 +25,9 @@ def avg(self) -> float: class VacuumChannel(StrEnum): - A: str = "a" - B: str = "b" - BOTH: str = "both" + A = "a" + B = "b" + BOTH = "both" class Ur5e(Robot): diff --git a/src/python/arcor2_ur/tests/BUILD b/src/python/arcor2_ur/tests/BUILD index a130fb6e3..cfadfbf68 100644 --- a/src/python/arcor2_ur/tests/BUILD +++ b/src/python/arcor2_ur/tests/BUILD @@ -1,8 +1,9 @@ python_tests( runtime_package_dependencies=[ - "src/python/arcor2_ur/scripts:ur", "src/python/arcor2_ur/scripts:robot_publisher", + "src/python/arcor2_ur/scripts:ur", + "src/python/arcor2_ur/scripts:robot_publisher", ], interpreter_constraints=["==3.12.*"], ) -python_test_utils(name="test_utils") \ No newline at end of file +python_test_utils(name="test_utils") diff --git a/src/python/arcor2_ur/tests/conftest.py b/src/python/arcor2_ur/tests/conftest.py index 71cafc348..473f2473e 100644 --- a/src/python/arcor2_ur/tests/conftest.py +++ b/src/python/arcor2_ur/tests/conftest.py @@ -21,7 +21,7 @@ class Urls(NamedTuple): @pytest.fixture(scope="module", params=["ur5e"]) def start_processes(request) -> Iterator[Urls]: - """Starts Dobot dependencies.""" + """Starts UR robot service and its dependencies.""" ros_domain_id = str(random.sample(range(0, 232 + 1), 1)[0]) ur_type: str = request.param @@ -34,27 +34,38 @@ def start_processes(request) -> Iterator[Urls]: pypath = ":".join(sys.path) my_env["PYTHONPATH"] = pypath - kwargs = {"env": my_env, "stdout": sp.PIPE, "stderr": sp.STDOUT, "start_new_session": True} - - processes.append( - sp.Popen( # type: ignore - [ - "ros2", - "launch", - "ur_robot_driver", - "ur_control.launch.py", - "launch_rviz:=false", - f"ur_type:={ur_type}", - "use_mock_hardware:=true", - "robot_ip:=xyz", - ], - **kwargs, + kwargs = {"env": my_env, "stdout": sp.PIPE, "stderr": sp.STDOUT, "preexec_fn": os.setpgrp} + + with open("/tmp/ros2_launch.log", "w") as log_file: + + processes.append( + sp.Popen( # type: ignore + [ + "ros2", + "launch", + "-d", + "-a", + "ur_robot_driver", + "ur_control.launch.py", + "launch_rviz:=false", + f"ur_type:={ur_type}", + "use_mock_hardware:=true", + "robot_ip:=xyz", + ], + env=my_env, + stdout=log_file, stderr=log_file, + preexec_fn=os.setpgrp, + ) ) - ) - time.sleep(3) # TODO find another way how to make sure that everything is running - if processes[-1].poll(): - log_proc_output(processes[-1].communicate()) - raise Exception("Launch died...") + + time.sleep(5) # TODO find another way how to make sure that everything is running + if return_code := processes[-1].poll(): + # log_proc_output(processes[-1].communicate()) + + with open("/tmp/ros2_launch.log", "r") as log_file: + print("[DEBUG] ros2 launch output:\n", log_file.read()) + + pytest.exit(f"Launch died ({return_code})...", returncode=2) robot_url = f"http://0.0.0.0:{find_free_port()}" my_env["ARCOR2_UR_URL"] = robot_url @@ -69,13 +80,13 @@ def start_processes(request) -> Iterator[Urls]: if robot_proc.poll(): finish_processes(processes) - raise Exception("Robot service died.") + pytest.exit("Robot service died.", returncode=2) try: check_health("UR", robot_url, timeout=20) except CheckHealthException: finish_processes(processes) - raise + pytest.exit("Robot service not responding.", returncode=2) # robot_mode etc. is not published with mock_hw -> there is this helper node to do that # it can't be published from here as it depends on ROS (Python 3.12) @@ -84,7 +95,7 @@ def start_processes(request) -> Iterator[Urls]: if robot_pub_proc.poll(): finish_processes(processes) - raise Exception("Robot publisher node died.") + pytest.exit("Robot publisher node died.", returncode=2) yield Urls(ros_domain_id, robot_url) diff --git a/src/python/arcor2_ur/vgc10.py b/src/python/arcor2_ur/vgc10.py index 14cab090f..e26d40574 100644 --- a/src/python/arcor2_ur/vgc10.py +++ b/src/python/arcor2_ur/vgc10.py @@ -95,7 +95,7 @@ def vacuum_on(self, vac: int = 20) -> None: modeval = 0x0100 # grip # command = 0x00ff # 100 % vacuum - commands: list[bytes | int] = [modeval + vac, modeval + vac] + commands: list[int] = [modeval + vac, modeval + vac] try: result = self._client.write_registers(address=0, values=commands, slave=65) except ModbusException as exc: @@ -107,7 +107,7 @@ def release_vacuum(self) -> None: """Releases all vacuums.""" modeval = 0x0000 # release command = 0x0000 # 0 % vacuum - commands: list[bytes | int] = [modeval + command, modeval + command] + commands: list[int] = [modeval + command, modeval + command] try: result = self._client.write_registers(address=0, values=commands, slave=65) diff --git a/src/python/arcor2_yumi/BUILD b/src/python/arcor2_yumi/BUILD index c2680e81a..077ec34cb 100644 --- a/src/python/arcor2_yumi/BUILD +++ b/src/python/arcor2_yumi/BUILD @@ -2,5 +2,4 @@ arcor2_python_distribution( name="arcor2_yumi", description="ARCOR2 Calibration", binaries={"arcor2_calibration": "src/python/arcor2_calibration/scripts:calibration"}, - interpreter_constraints=["==3.11.*"], ) diff --git a/src/python/arcor2_yumi/object_types/tests/BUILD b/src/python/arcor2_yumi/object_types/tests/BUILD index 282bac82e..dabf212d7 100644 --- a/src/python/arcor2_yumi/object_types/tests/BUILD +++ b/src/python/arcor2_yumi/object_types/tests/BUILD @@ -1 +1 @@ -python_tests(interpreter_constraints=["==3.11.*"]) +python_tests() diff --git a/src/python/arcor2_yumi/object_types/yumi.py b/src/python/arcor2_yumi/object_types/yumi.py index 37a342b73..2504532d6 100644 --- a/src/python/arcor2_yumi/object_types/yumi.py +++ b/src/python/arcor2_yumi/object_types/yumi.py @@ -75,18 +75,18 @@ class ProgramStopped(RwsException): class ExecutionState(StrEnum): - running: str = "running" - stopped: str = "stopped" + running = "running" + stopped = "stopped" class ControllerState(StrEnum): - init: str = "init" - motoron: str = "motoron" - motoroff: str = "motoroff" - guardstop: str = "guardstop" - emergencystop: str = "emergencystop" - emergencystopreset: str = "emergencystopreset" - sysfail: str = "sysfail" + init = "init" + motoron = "motoron" + motoroff = "motoroff" + guardstop = "guardstop" + emergencystop = "emergencystop" + emergencystopreset = "emergencystopreset" + sysfail = "sysfail" class RWS: @@ -977,8 +977,8 @@ def reset_home(self) -> None: class YumiArms(StrEnum): - LEFT: str = "left" - RIGHT: str = "right" + LEFT = "left" + RIGHT = "right" class YuMi(MultiArmRobot): diff --git a/src/python/arcor2_yumi/tests/BUILD b/src/python/arcor2_yumi/tests/BUILD index a87ba7e88..c591dc25d 100644 --- a/src/python/arcor2_yumi/tests/BUILD +++ b/src/python/arcor2_yumi/tests/BUILD @@ -1,5 +1,4 @@ python_tests( - interpreter_constraints=["==3.11.*"], runtime_package_dependencies=[ "src/python/arcor2_mocks/scripts:mock_asset", "src/python/arcor2_mocks/scripts:mock_project",