diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 03de5c3d15..f21ca1d5ff 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -212,7 +212,7 @@ jobs: uses: ./.github/workflows/tests.yml secrets: inherit with: - cmd: "pytest && pytest -m ros" # run tests that depend on ros as well + cmd: ".venv/bin/pytest && .venv/bin/pytest -m ros" # run tests that depend on ros as well dev-image: ros-dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true' || needs.check-changes.outputs.ros == 'true') && needs.ros-dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} run-tests: @@ -227,7 +227,7 @@ jobs: uses: ./.github/workflows/tests.yml secrets: inherit with: - cmd: "pytest" + cmd: ".venv/bin/pytest" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} # we run in parallel with normal tests for speed @@ -243,7 +243,7 @@ jobs: uses: ./.github/workflows/tests.yml secrets: inherit with: - cmd: "pytest -m heavy" + cmd: ".venv/bin/pytest -m heavy" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} run-lcm-tests: @@ -258,7 +258,7 @@ jobs: uses: ./.github/workflows/tests.yml secrets: inherit with: - cmd: "pytest -m lcm" + cmd: ".venv/bin/pytest -m lcm" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} run-integration-tests: @@ -273,7 +273,7 @@ jobs: uses: ./.github/workflows/tests.yml secrets: inherit with: - cmd: "pytest -m integration" + cmd: ".venv/bin/pytest -m integration" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} run-mypy: @@ -292,41 +292,6 @@ jobs: cmd: "MYPYPATH=/opt/ros/humble/lib/python3.10/site-packages mypy dimos" dev-image: ros-dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true' || needs.check-changes.outputs.ros == 'true') && needs.ros-dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} - # Run module tests directly to avoid pytest forking issues - # run-module-tests: - # needs: [check-changes, dev] - # if: ${{ - # always() && - # needs.check-changes.result == 'success' && - # ((needs.dev.result == 'success') || - # (needs.dev.result == 'skipped' && - # needs.check-changes.outputs.tests == 'true')) - # }} - # runs-on: [self-hosted, x64, 16gb] - # container: - # image: ghcr.io/dimensionalos/dev:${{ needs.check-changes.outputs.dev == 'true' && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} - # steps: - # - name: Fix permissions - # run: | - # sudo chown -R $USER:$USER ${{ github.workspace }} || true - # - # - uses: actions/checkout@v4 - # with: - # lfs: true - # - # - name: Configure Git LFS - # run: | - # git config --global --add safe.directory '*' - # git lfs install - # git lfs fetch - # git lfs checkout - # - # - name: Run module tests - # env: - # CI: "true" - # run: | - # /entrypoint.sh bash -c "pytest -m module" - ci-complete: needs: [check-changes, ros, python, ros-python, dev, ros-dev, run-tests, run-heavy-tests, run-lcm-tests, run-integration-tests, run-ros-tests, run-mypy] runs-on: [self-hosted, Linux] diff --git a/.github/workflows/fast-docs.yml b/.github/workflows/fast-docs.yml new file mode 100644 index 0000000000..0bb7802020 --- /dev/null +++ b/.github/workflows/fast-docs.yml @@ -0,0 +1,35 @@ +name: docs + +on: + pull_request: + branches: + - main + - dev + paths: + - 'docs/**' + workflow_dispatch: + +permissions: + contents: read + +jobs: + check_links: + runs-on: [self-hosted, Linux] + steps: + - uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Run doclinks # Note: doesn't need uv python, just needs some python to run the script + run: | + python -m dimos.utils.docs.doclinks docs/ + + - uses: leshy/md-babel-py@main + with: + files: 'docs/**/*.md' + fail-on-change: true + # maybe later we can enforce python, for now just do diagram langs + args: --lang asymptote,pikchr,openscad,diagon diff --git a/.github/workflows/fast-test.yml b/.github/workflows/fast-test.yml new file mode 100644 index 0000000000..09cc8c611f --- /dev/null +++ b/.github/workflows/fast-test.yml @@ -0,0 +1,52 @@ +name: test-fast + +on: + push: + branches: + - main + - dev + paths: + - 'pyproject.toml' + - 'setup.py' + - 'uv.lock' + - 'dimos/**' + - '!dimos/**/*.md' + workflow_dispatch: + +permissions: + contents: read + +jobs: + pytest_fast: + strategy: + matrix: + os: [ubuntu-24.04, macos-15, ubuntu-24.04-arm] + + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + + - name: Setup uv + uses: astral-sh/setup-uv@v4 + with: + enable-cache: true + python-version: "3.10" + cache-suffix: ${{ runner.os }}-${{ runner.arch }}-py3.10 + + - name: Install System dependencies + run: | + # these lines should stay exactly in sync with docs/development/README.md + if [ "$OSTYPE" = "linux-gnu" ]; then + sudo apt-get update + sudo apt-get install -y curl g++ portaudio19-dev git-lfs libturbojpeg python3-dev pre-commit + # On macOS (12.6 or newer) + elif [ "$(uname)" = "Darwin" ]; then + # install homebrew if not installed + ! command -v brew && /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + # install dependencies + brew install gnu-sed gcc portaudio git-lfs libjpeg-turbo python pre-commit + fi + + - name: Install and run tests + run: | + bin/ci-fast diff --git a/.github/workflows/readme.md b/.github/workflows/readme.md index f82ba479bb..5755ca7575 100644 --- a/.github/workflows/readme.md +++ b/.github/workflows/readme.md @@ -1,7 +1,7 @@ # general structure of workflows -Docker.yml checks for releavant file changes and re-builds required images -Currently images have a dependancy chain of ros -> python -> dev (in the future this might be a tree and can fork) +Docker.yml checks for relevant file changes and re-builds required images +Currently images have a dependency chain of ros -> python -> dev (in the future this might be a tree and can fork) On top of the dev image then tests are run. Dev image is also what developers use in their own IDE via devcontainers @@ -24,19 +24,19 @@ more info @ https://docs.github.com/en/packages/working-with-a-github-packages-r login to docker via -`sh +```sh echo TOKEN | docker login ghcr.io -u GITHUB_USER --password-stdin -` +``` pull dev image (dev branch) -`sh +```sh docker pull ghcr.io/dimensionalos/dev:dev -` +``` pull dev image (master) -`sh +```sh docker pull ghcr.io/dimensionalos/dev:latest -` +``` # todo diff --git a/bin/ci-fast b/bin/ci-fast new file mode 100755 index 0000000000..0db904163f --- /dev/null +++ b/bin/ci-fast @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# +# note this command is used by CI directly, and also is used by bin/pr-check +# this is intentional: to keep them in sync +# if something should only be done locally, change bin/pr-check +# if something should only be done on CI, change .github/workflows/fast-test.yml +# +set -euo pipefail + +echo "Ensuring pip versions are correct" +time uv sync --frozen --extra misc --extra visualization --extra agents --extra web --extra perception --extra unitree --extra manipulation --extra cpu --extra dev --extra sim --extra drone --extra base + +echo "Running pre-commit checks" +time pre-commit run --all-files + +echo "Running mypy checks" +time uv run mypy --python-version 3.10 dimos +time uv run mypy --python-version 3.12 dimos + +echo "# " +echo "# " +echo "# pytest fast" +echo "# " +echo "# " +time uv run bin/pytest-fast diff --git a/bin/ci-slow b/bin/ci-slow new file mode 100755 index 0000000000..795ff7bb4b --- /dev/null +++ b/bin/ci-slow @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# +# this file is supposed to mimic CI as closesly as possible, the main difference is it doesn't detect changes it just runs everything +# +set -euo pipefail + +echo "If you get permission errors try: echo YOUR_GITHUB_AUTH_TOKEN | docker login ghcr.io -u GITHUB_USER --password-stdin" + +run_in_image() { + local image="$1" + local cmd="$2" + + if [ "$(uname)" = "Darwin" ]; then + docker run --rm -it -v "$PWD:/workspace" -w /workspace --platform linux/amd64 -e CI=1 "ghcr.io/dimensionalos/${image}:dev" /entrypoint.sh bash -lc "$cmd" + else + docker run --rm -it -v "$PWD:/workspace" -w /workspace -e CI=1 "ghcr.io/dimensionalos/${image}:dev" /entrypoint.sh bash -lc "$cmd" + fi +} + +echo "Running checks equivalent to .github/workflows/docker.yml test jobs..." + +echo +echo "== ros-dev: pytest && pytest -m ros ==" +run_in_image "ros-dev" "pytest && pytest -m ros" + +echo +echo "== dev: pytest ==" +run_in_image "dev" "pytest" + +echo +echo "== dev: pytest -m heavy ==" +run_in_image "dev" "pytest -m heavy" + +echo +echo "== dev: pytest -m lcm ==" +run_in_image "dev" "pytest -m lcm" + +echo +echo "== dev: pytest -m integration ==" +run_in_image "dev" "pytest -m integration" diff --git a/bin/gen-diagrams b/bin/gen-diagrams new file mode 100755 index 0000000000..7bdf29933b --- /dev/null +++ b/bin/gen-diagrams @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$REPO_ROOT" + +# if md-babel-py doesnt exist +if [ -z "$(command -v "md-babel-py")" ]; then + # if nix doesnt exist + if [ -z "$(command -v "nix")" ]; then + echo "Error: md-babel-py required for running gen-diagrams." >&2 + echo " Either install nix or install md-babel-py" >&2 + echo " https://github.com/leshy/md-babel-py" >&2 + exit 1 + # use nix if local command doesn't exist + else + md-babel-py() { + nix run github:leshy/md-babel-py -- "$@" + } + fi +fi + +diagram_langs="asymptote,pikchr,openscad,diagon" +if [[ "$#" -gt 0 ]]; then + for arg in "$@"; do + md-babel-py run "$arg" --lang "$diagram_langs" + done +else + while IFS= read -r file; do + md-babel-py run "$file" --lang "$diagram_langs" + done < <(find ./docs -type f -name '*.md' | sort) +fi diff --git a/bin/pr-check b/bin/pr-check new file mode 100755 index 0000000000..19bcf2a48a --- /dev/null +++ b/bin/pr-check @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import os +from pathlib import Path +import subprocess + +repo_root = Path(__file__).resolve().parent.parent +os.chdir(repo_root) + + +def main() -> int: + # 1. name check (Note: doesn't throw even on fail) + subprocess.run(["bin/pr-name-check"], check=False, text=True) + + # 2. check if only markdown changes + changed_files = get_changed_files() + for each in changed_files: + print(f"Changed file: {each}") + if all(changed_file.endswith(".md") for changed_file in changed_files): + print("All detected changes are Markdown files; just running doc tests.") + subprocess.run( + ["python", "-m", "dimos.utils.docs.doclinks", "docs/"], check=True, text=True + ) + return 0 + + # 3. run ci checks (uv install, mypy, ruff, pytest) + return subprocess.run(["bin/ci-fast"], text=True).returncode + + +def get_changed_files() -> set[str]: + def has_ref(ref: str) -> bool: + result = subprocess.run( + ["git", "show-ref", "--verify", "--quiet", ref], + text=True, + capture_output=True, + ) + return result.returncode == 0 + + if has_ref("refs/heads/dev"): + base_ref = "dev" + elif has_ref("refs/remotes/origin/dev"): + base_ref = "origin/dev" + else: + print("Could not find 'dev' or 'origin/dev' to compare changes against.") + raise SystemExit(1) + + def run_lines(cmd: list[str]) -> list[str]: + return [ + line + for line in subprocess.run( + cmd, check=True, text=True, capture_output=True + ).stdout.splitlines() + if line.strip() + ] + + changed_files: set[str] = set() + changed_files.update(run_lines(["git", "diff", "--name-only", f"{base_ref}...HEAD"])) + changed_files.update(run_lines(["git", "diff", "--name-only"])) + changed_files.update(run_lines(["git", "diff", "--name-only", "--cached"])) + changed_files.update(run_lines(["git", "ls-files", "--others", "--exclude-standard"])) + return changed_files + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/bin/pr-name-check b/bin/pr-name-check new file mode 100755 index 0000000000..0f67e6172a --- /dev/null +++ b/bin/pr-name-check @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +set -euo pipefail + +branch="$(git rev-parse --abbrev-ref HEAD)" + +# based on: https://github.com/dimensionalOS/wiki/wiki +allowed_types="feat fix chore refactor docs" +allowed_names="stash ivan paul alexl mustafa miguel christie ruthwik jalaj yashas yash matt jing juan jeff unknown" + +if [[ "$branch" != */*/* ]]; then + echo "Invalid branch name: '$branch'" + echo "Expected format: //" + echo "Allowed names: $allowed_names" + echo "Allowed types: $allowed_types" + exit 1 +fi + +branch_name="${branch%%/*}" +rest="${branch#*/}" +branch_type="${rest%%/*}" +branch_description="${branch#*/*/}" + +if [[ -z "$branch_description" || "$branch_description" == "$branch" ]]; then + echo "Invalid branch name: '$branch'" + echo "Expected format: //" + exit 1 +fi + +name_ok=0 +for n in $allowed_names; do + if [[ "$branch_name" == "$n" ]]; then + name_ok=1 + break + fi +done + +type_ok=0 +for t in $allowed_types; do + if [[ "$branch_type" == "$t" ]]; then + type_ok=1 + break + fi +done + +if [[ "$name_ok" -ne 1 || "$type_ok" -ne 1 ]]; then + echo + echo + echo + echo + echo + echo "Invalid branch name: '$branch'" + echo + echo " Expected format: //" + echo " Example: jeff/fix/ci-divergence" + echo " Parsed name: $branch_name" + echo " Allowed names: $allowed_names" + echo " Parsed type: $branch_type" + echo " Allowed types: $allowed_types" + echo + echo "Wait 4 seconds if you want to ignore this error" + sleep 1; echo 4 + sleep 1; echo 3 + sleep 1; echo 2 + sleep 1; echo 1 + exit 1 +else + echo "Branch naming check passed: $branch" +fi diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index ef80b70e1d..f8381609e4 100644 --- a/docker/dev/Dockerfile +++ b/docker/dev/Dockerfile @@ -29,8 +29,8 @@ ENV UV_SYSTEM_PYTHON=1 RUN curl -LsSf https://astral.sh/uv/install.sh | sh ENV PATH="/root/.local/bin:$PATH" -# Install dependencies with UV -RUN uv pip install .[dev] +# --frozen installs from lock file, which is important for mypy to not diverge +RUN uv sync --frozen --extra dev # Copy files and add version to motd COPY /assets/dimensionalascii.txt /etc/motd diff --git a/docker/python/Dockerfile b/docker/python/Dockerfile index 1572bbc3ba..d4540403c7 100644 --- a/docker/python/Dockerfile +++ b/docker/python/Dockerfile @@ -48,4 +48,9 @@ COPY . /app/ # Install dependencies with UV (10-100x faster than pip) RUN uv pip install --upgrade 'pip>=24' 'setuptools>=70' 'wheel' 'packaging>=24' && \ - uv pip install '.[misc,cpu,sim,drone,unitree,web,perception,visualization]' + uv sync --frozen --extra misc --extra visualization --extra agents --extra web --extra perception --extra unitree --extra manipulation --extra cpu --extra dev --extra sim --extra drone --extra base + # features excluded from docker (at time of writing): + # --extra docker \ + # --extra psql \ + # --extra dds \ + # --extra cuda \ diff --git a/docs/development/README.md b/docs/development/README.md index c7d903e690..61e8ae5a65 100644 --- a/docs/development/README.md +++ b/docs/development/README.md @@ -32,8 +32,8 @@ if [ "$OSTYPE" = "linux-gnu" ]; then sudo apt-get install -y curl g++ portaudio19-dev git-lfs libturbojpeg python3-dev pre-commit # On macOS (12.6 or newer) elif [ "$(uname)" = "Darwin" ]; then - # install homebrew - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + # install homebrew if not installed + ! command -v brew && /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # install dependencies brew install gnu-sed gcc portaudio git-lfs libjpeg-turbo python pre-commit fi diff --git a/docs/development/writing_docs.md b/docs/development/writing_docs.md index 58466d6592..8b24dc620b 100644 --- a/docs/development/writing_docs.md +++ b/docs/development/writing_docs.md @@ -3,5 +3,5 @@ 1. Where to put your docs: - If it only matters to people who contribute to dimos (like this doc), put them in `docs/development` - Otherwise put them in `docs/usage` -2. Run `bin/gen_diagrams` to generate the svg's for your diagrams. We use [pikchr](https://pikchr.org/home/doc/trunk/doc/userman.md) as a diagram language. +2. Run `bin/gen-diagrams` to generate the svg's for your diagrams. We use [mermaid](https://mermaid.js.org/intro/) (no generation needed) and [pikchr](https://pikchr.org/home/doc/trunk/doc/userman.md) as diagrams languages. 3. Use [md-babel-py](https://github.com/leshy/md-babel-py/) (`md-babel-py run thing.md`) to make sure your code examples work. diff --git a/pyproject.toml b/pyproject.toml index 0420e23e61..f5710657ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,6 @@ dependencies = [ "python-dotenv", "annotation-protocol>=1.4.0", "lazy_loader", - # Multiprocess "dask[complete]==2025.5.1", "plum-dispatch==2.5.7", @@ -172,7 +171,8 @@ unitree = [ manipulation = [ # Planning (Drake) - "drake>=1.40.0; platform_machine != 'aarch64'", + "drake==1.45.0; sys_platform == 'darwin' and platform_machine != 'aarch64'", + "drake>=1.40.0; sys_platform != 'darwin' and platform_machine != 'aarch64'", # Hardware SDKs "piper-sdk", @@ -191,7 +191,8 @@ manipulation = [ cpu = [ # CPU inference backends - "onnxruntime", + "onnxruntime<1.24; python_version < '3.11'", + "onnxruntime; python_version >= '3.11'", "ctransformers==0.2.27", ] diff --git a/setup.py b/setup.py index 013ff731a8..50ac0a37ab 100644 --- a/setup.py +++ b/setup.py @@ -13,20 +13,63 @@ # limitations under the License. import os +from pathlib import Path +import struct +import sys from pybind11.setup_helpers import Pybind11Extension, build_ext from setuptools import find_packages, setup + +def python_is_macos_universal_binary(executable: str | None = None) -> bool: + """ + Returns True if the given executable is a macOS universal (fat) binary. + """ + FAT_MAGIC = 0xCAFEBABE # big-endian fat + FAT_CIGAM = 0xBEBAFECA # little-endian fat + FAT_MAGIC_64 = 0xCAFEBABF # big-endian fat 64 + FAT_CIGAM_64 = 0xBFBAFECA # little-endian fat 64 + + if executable is None: + executable = sys.executable + + path = Path(executable) + if not path.exists(): + return False + + try: + with path.open("rb") as f: + header = f.read(4) + if len(header) < 4: + return False + + magic = struct.unpack(">I", header)[0] + return magic in { + FAT_MAGIC, + FAT_CIGAM, + FAT_MAGIC_64, + FAT_CIGAM_64, + } + except OSError: + return False + + +extra_compile_args = [ + "-O3", # Maximum optimization + "-ffast-math", # Fast floating point +] +# when the python exe is a universal binary, this option fails because the compiler +# call tries to build a matching (e.g. universal) binary, clang doesn't support this option for universal binaries +# if the user is using an arm64 specific binary (ex: nix build) then the optimization exists and is useful +if not python_is_macos_universal_binary(): + extra_compile_args.append("-march=native") + # C++ extensions ext_modules = [ Pybind11Extension( "dimos.navigation.replanning_a_star.min_cost_astar_ext", [os.path.join("dimos", "navigation", "replanning_a_star", "min_cost_astar_cpp.cpp")], - extra_compile_args=[ - "-O3", # Maximum optimization - "-march=native", # Optimize for current CPU - "-ffast-math", # Fast floating point - ], + extra_compile_args=extra_compile_args, define_macros=[ ("NDEBUG", "1"), ], diff --git a/uv.lock b/uv.lock index 1347ddb20d..8eeab11b0d 100644 --- a/uv.lock +++ b/uv.lock @@ -861,7 +861,8 @@ dependencies = [ { name = "mmh3" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "onnxruntime" }, + { name = "onnxruntime", version = "1.23.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "onnxruntime", version = "1.24.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "opentelemetry-api" }, { name = "opentelemetry-exporter-otlp-proto-grpc" }, { name = "opentelemetry-sdk" }, @@ -1161,6 +1162,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "coloredlogs" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "humanfriendly", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/c7/eed8f27100517e8c0e6b923d5f0845d0cb99763da6fdee00478f91db7325/coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0", size = 278520, upload-time = "2021-06-11T10:22:45.202Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934", size = 46018, upload-time = "2021-06-11T10:22:42.561Z" }, +] + [[package]] name = "colorlog" version = "6.9.0" @@ -1832,7 +1845,8 @@ base = [ ] cpu = [ { name = "ctransformers" }, - { name = "onnxruntime" }, + { name = "onnxruntime", version = "1.23.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "onnxruntime", version = "1.24.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] cuda = [ { name = "ctransformers", extra = ["cuda"] }, @@ -1943,7 +1957,8 @@ drone = [ { name = "pymavlink" }, ] manipulation = [ - { name = "drake", marker = "platform_machine != 'aarch64'" }, + { name = "drake", version = "1.40.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'aarch64' and sys_platform != 'darwin'" }, + { name = "drake", version = "1.45.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'aarch64' and sys_platform == 'darwin'" }, { name = "kaleido" }, { name = "matplotlib" }, { name = "piper-sdk" }, @@ -2062,7 +2077,8 @@ requires-dist = [ { name = "dimos", extras = ["dev"], marker = "extra == 'dds'" }, { name = "dimos-lcm" }, { name = "dimos-lcm", marker = "extra == 'docker'" }, - { name = "drake", marker = "platform_machine != 'aarch64' and extra == 'manipulation'", specifier = ">=1.40.0" }, + { name = "drake", marker = "platform_machine != 'aarch64' and sys_platform == 'darwin' and extra == 'manipulation'", specifier = "==1.45.0" }, + { name = "drake", marker = "platform_machine != 'aarch64' and sys_platform != 'darwin' and extra == 'manipulation'", specifier = ">=1.40.0" }, { name = "edgetam-dimos", marker = "extra == 'misc'" }, { name = "einops", marker = "extra == 'misc'", specifier = "==0.8.1" }, { name = "empy", marker = "extra == 'misc'", specifier = "==3.3.4" }, @@ -2102,7 +2118,8 @@ requires-dist = [ { name = "ollama", marker = "extra == 'agents'", specifier = ">=0.6.0" }, { name = "omegaconf", marker = "extra == 'perception'", specifier = ">=2.3.0" }, { name = "onnx", marker = "extra == 'misc'" }, - { name = "onnxruntime", marker = "extra == 'cpu'" }, + { name = "onnxruntime", marker = "python_full_version >= '3.11' and extra == 'cpu'" }, + { name = "onnxruntime", marker = "python_full_version < '3.11' and extra == 'cpu'", specifier = "<1.24" }, { name = "onnxruntime-gpu", marker = "platform_machine == 'x86_64' and extra == 'cuda'", specifier = ">=1.17.1" }, { name = "open-clip-torch", marker = "extra == 'misc'", specifier = "==3.2.0" }, { name = "open3d", marker = "platform_machine != 'aarch64' or sys_platform != 'linux'", specifier = ">=0.18.0" }, @@ -2305,24 +2322,56 @@ wheels = [ [[package]] name = "drake" -version = "1.49.0" +version = "1.40.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'win32'", + "(python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and sys_platform == 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version < '3.11' and sys_platform == 'win32'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] dependencies = [ - { name = "matplotlib", marker = "platform_machine != 'aarch64' or sys_platform != 'linux'" }, - { name = "mosek", marker = "(python_full_version < '3.15' and platform_machine != 'aarch64') or (python_full_version < '3.15' and sys_platform != 'linux')" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64') or (python_full_version < '3.11' and sys_platform != 'linux')" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine != 'aarch64') or (python_full_version >= '3.11' and sys_platform != 'linux')" }, - { name = "pydot", marker = "platform_machine != 'aarch64' or sys_platform != 'linux'" }, - { name = "pyyaml", marker = "platform_machine != 'aarch64' or sys_platform != 'linux'" }, + { name = "matplotlib", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "pydot", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "pyyaml", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/26/2ce3a9caf431f24e39f8b1fc7b3ebba4faafef1d61c849db3194e8d2e21d/drake-1.49.0-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:6c73dbd061fcb442e82b7b5a94dadcfbf4c44949035d03394df29412114647b2", size = 41482505, upload-time = "2026-01-15T19:44:08.313Z" }, - { url = "https://files.pythonhosted.org/packages/a3/2c/b147eaeee97986d970c0618144b28049cf078c20ba73209f4db14cf9a531/drake-1.49.0-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:b897f5f1516d13627ef18a8395b15f56413016d3c91c902cada76860b5cbb12c", size = 41516482, upload-time = "2026-01-15T19:44:11.342Z" }, - { url = "https://files.pythonhosted.org/packages/84/dc/c55dc5678a61e5befd3694b28e0dc5737a8422334b774a4174b517c67c22/drake-1.49.0-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:b9a5b528d430764ce1670918b8679cabbb209c8daa2440824ac3a9832c686591", size = 41432263, upload-time = "2026-01-15T19:44:14.486Z" }, - { url = "https://files.pythonhosted.org/packages/54/71/4c983e130ae86479a44e8afd737fd70c12ea5cf2c71bd96491339ce74ec9/drake-1.49.0-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:ee647a022dcce17869c7a2d3d37e1d69f1f12bca8d7e3d7e84a743cfd1230be6", size = 33962409, upload-time = "2026-01-15T19:44:17.588Z" }, - { url = "https://files.pythonhosted.org/packages/3f/a8/1a46831f5f802088df9cd92c204b888aef4e3659d9702128533aa4e5ebaa/drake-1.49.0-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:0a51abf867d534cef1343381ce79883acc606d52fc56debf2dd9e306982e8910", size = 41438880, upload-time = "2026-01-15T19:44:20.265Z" }, - { url = "https://files.pythonhosted.org/packages/37/b8/053e86e0dd3209cd1ba239dd49dd3313608a63958e89914ff371113be54b/drake-1.49.0-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:16485819958e5bdd5d7815e89c7d87ab77cf3822e19ae5f7e53dbff510a56013", size = 33998519, upload-time = "2026-01-15T19:44:22.805Z" }, - { url = "https://files.pythonhosted.org/packages/d8/60/cdbc3101bb2bd57706a6b6c5a7fc68a03270f002af1d448da875f3eff5df/drake-1.49.0-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:775740e9500ab8cb2e0af0e69ab162018ac03f7553b6fe03fc6b4f03c4b01092", size = 41509337, upload-time = "2026-01-15T19:44:25.879Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/5e1acd5d3948dec8c48c887eced9edb0470b64894243c790f6fb3faaa7a9/drake-1.40.0-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:5337eff173c35c49f30bd1e1803ccee62d3cb1e3d45b28092afdffc409197312", size = 74564478, upload-time = "2025-04-12T18:33:40.793Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e2/ea09be5770e33c06becc2525ed6755410cef6a477f03bbce94019b598e93/drake-1.40.0-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:34364c214704cb24891db4a4c6549c0c98e70c436ea7a56dce22cad0d997d364", size = 74600829, upload-time = "2025-04-12T18:34:09.46Z" }, + { url = "https://files.pythonhosted.org/packages/ac/9b/12e804c635c0c22b0228e75420c28d87a01dc2d8ec05c8be514f073124e7/drake-1.40.0-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:f1cd01353128bded5916ae0996ba4c058d20dc58b207d5195c281059532d8d41", size = 74570230, upload-time = "2025-04-12T18:34:40.501Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c7/739ab1518c5e003f6640e5871a43f098a0fca0cc69749e23422b3f254085/drake-1.40.0-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:e19dcbad674b24ab5ca823c15961bf7dcd82405c2751e2de5f07ca6c817f8532", size = 74573061, upload-time = "2025-04-12T18:35:12.172Z" }, +] + +[[package]] +name = "drake" +version = "1.45.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "matplotlib", marker = "sys_platform == 'darwin'" }, + { name = "mosek", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pydot", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/31/aa4f1f5523381539e1028354cc535d5a3307d28fd33872f2b403454d8391/drake-1.45.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b0d9bd6196dc6d3b0e660fc6351fcf236727a45ef6a7123f8dc96f85b8662ac3", size = 57314509, upload-time = "2025-09-16T19:02:10.195Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/a4e1909d8f69f6aaa2d572b6695a942395205f140c16cc2352b880670325/drake-1.45.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:a1d429e95c43b3fe1af156489381d3129c8ef4dd95b80d8c2a2a51a74a2adb24", size = 57315511, upload-time = "2025-09-16T19:02:16.937Z" }, ] [[package]] @@ -3204,6 +3253,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl", hash = "sha256:48f0c8eac16145dfce371e9d2d7772854a4f591bcb56c9cf548accf531d54270", size = 566395, upload-time = "2026-02-06T09:24:11.133Z" }, ] +[[package]] +name = "humanfriendly" +version = "10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyreadline3", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/3f/2c29224acb2e2df4d2046e4c73ee2662023c58ff5b113c4c1adac0886c43/humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc", size = 360702, upload-time = "2021-09-17T21:40:43.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477", size = 86794, upload-time = "2021-09-17T21:40:39.897Z" }, +] + [[package]] name = "humanize" version = "4.15.0" @@ -5160,17 +5221,14 @@ wheels = [ [[package]] name = "mosek" -version = "11.1.2" +version = "11.0.24" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64') or (python_full_version < '3.11' and sys_platform != 'linux')" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine != 'aarch64') or (python_full_version >= '3.11' and sys_platform != 'linux')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/04/76/895d637c7e0561fd0c630049680fe616cb279e0050597d8731b7c3da426f/mosek-11.1.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c56a776188951b9028b47f9e814eb21ac0c8b44b564baf8c584277c9f61a4277", size = 8791845, upload-time = "2026-01-07T08:21:55.876Z" }, - { url = "https://files.pythonhosted.org/packages/c3/e9/253e759e6e00b9cfbb4e95e7fe079b0e971b3c81c75f059bf2c2be3216e9/mosek-11.1.2-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:5c3566d2a603d94a1773bcd27097c8390dba1d9a1543534f3527deb56f1d0a55", size = 15359313, upload-time = "2026-01-07T08:22:00.805Z" }, - { url = "https://files.pythonhosted.org/packages/41/ea/17bb932e0d307c31de685ba817a3cba822e2757a9810e7cc516778c2baa3/mosek-11.1.2-cp39-abi3-manylinux_2_27_aarch64.whl", hash = "sha256:67c13d56a9b7adf2670e4ed6fb62aa92560ae2ff1050f6e756d0d3f82c42c19f", size = 11073007, upload-time = "2026-01-07T08:22:03.118Z" }, - { url = "https://files.pythonhosted.org/packages/f2/67/6f2b6e544cf5e284c7f0baebffbc82b55e7db5b7ed5d711b621fa965d4df/mosek-11.1.2-cp39-abi3-win_amd64.whl", hash = "sha256:ad81cfd53af508db89241c7869ddce7ceaae13ef057f7b98007d57dccbb63c92", size = 11191977, upload-time = "2026-01-07T08:22:05.845Z" }, + { url = "https://files.pythonhosted.org/packages/37/e7/d04ea5c587fd8b491fbe9377fafa5feb063bb28a3a6949fb393a62230d9d/mosek-11.0.24-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7f2ab70ad3357f9187c96237d0c49187f82f5885250a5e211b6aa20cb0a7207f", size = 8345311, upload-time = "2025-06-25T10:51:51.777Z" }, ] [[package]] @@ -5968,15 +6026,75 @@ wheels = [ [[package]] name = "onnxruntime" -version = "1.24.1" +version = "1.23.2" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and sys_platform == 'win32'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] dependencies = [ - { name = "flatbuffers" }, + { name = "coloredlogs", marker = "python_full_version < '3.11'" }, + { name = "flatbuffers", marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "protobuf", marker = "python_full_version < '3.11'" }, + { name = "sympy", marker = "python_full_version < '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/d6/311b1afea060015b56c742f3531168c1644650767f27ef40062569960587/onnxruntime-1.23.2-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:a7730122afe186a784660f6ec5807138bf9d792fa1df76556b27307ea9ebcbe3", size = 17195934, upload-time = "2025-10-27T23:06:14.143Z" }, + { url = "https://files.pythonhosted.org/packages/db/db/81bf3d7cecfbfed9092b6b4052e857a769d62ed90561b410014e0aae18db/onnxruntime-1.23.2-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:b28740f4ecef1738ea8f807461dd541b8287d5650b5be33bca7b474e3cbd1f36", size = 19153079, upload-time = "2025-10-27T23:05:57.686Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4d/a382452b17cf70a2313153c520ea4c96ab670c996cb3a95cc5d5ac7bfdac/onnxruntime-1.23.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8f7d1fe034090a1e371b7f3ca9d3ccae2fabae8c1d8844fb7371d1ea38e8e8d2", size = 15219883, upload-time = "2025-10-22T03:46:21.66Z" }, + { url = "https://files.pythonhosted.org/packages/fb/56/179bf90679984c85b417664c26aae4f427cba7514bd2d65c43b181b7b08b/onnxruntime-1.23.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4ca88747e708e5c67337b0f65eed4b7d0dd70d22ac332038c9fc4635760018f7", size = 17370357, upload-time = "2025-10-22T03:46:57.968Z" }, + { url = "https://files.pythonhosted.org/packages/cd/6d/738e50c47c2fd285b1e6c8083f15dac1a5f6199213378a5f14092497296d/onnxruntime-1.23.2-cp310-cp310-win_amd64.whl", hash = "sha256:0be6a37a45e6719db5120e9986fcd30ea205ac8103fd1fb74b6c33348327a0cc", size = 13467651, upload-time = "2025-10-27T23:06:11.904Z" }, + { url = "https://files.pythonhosted.org/packages/44/be/467b00f09061572f022ffd17e49e49e5a7a789056bad95b54dfd3bee73ff/onnxruntime-1.23.2-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:6f91d2c9b0965e86827a5ba01531d5b669770b01775b23199565d6c1f136616c", size = 17196113, upload-time = "2025-10-22T03:47:33.526Z" }, + { url = "https://files.pythonhosted.org/packages/9f/a8/3c23a8f75f93122d2b3410bfb74d06d0f8da4ac663185f91866b03f7da1b/onnxruntime-1.23.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:87d8b6eaf0fbeb6835a60a4265fde7a3b60157cf1b2764773ac47237b4d48612", size = 19153857, upload-time = "2025-10-22T03:46:37.578Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d8/506eed9af03d86f8db4880a4c47cd0dffee973ef7e4f4cff9f1d4bcf7d22/onnxruntime-1.23.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbfd2fca76c855317568c1b36a885ddea2272c13cb0e395002c402f2360429a6", size = 15220095, upload-time = "2025-10-22T03:46:24.769Z" }, + { url = "https://files.pythonhosted.org/packages/e9/80/113381ba832d5e777accedc6cb41d10f9eca82321ae31ebb6bcede530cea/onnxruntime-1.23.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da44b99206e77734c5819aa2142c69e64f3b46edc3bd314f6a45a932defc0b3e", size = 17372080, upload-time = "2025-10-22T03:47:00.265Z" }, + { url = "https://files.pythonhosted.org/packages/3a/db/1b4a62e23183a0c3fe441782462c0ede9a2a65c6bbffb9582fab7c7a0d38/onnxruntime-1.23.2-cp311-cp311-win_amd64.whl", hash = "sha256:902c756d8b633ce0dedd889b7c08459433fbcf35e9c38d1c03ddc020f0648c6e", size = 13468349, upload-time = "2025-10-22T03:47:25.783Z" }, + { url = "https://files.pythonhosted.org/packages/1b/9e/f748cd64161213adeef83d0cb16cb8ace1e62fa501033acdd9f9341fff57/onnxruntime-1.23.2-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:b8f029a6b98d3cf5be564d52802bb50a8489ab73409fa9db0bf583eabb7c2321", size = 17195929, upload-time = "2025-10-22T03:47:36.24Z" }, + { url = "https://files.pythonhosted.org/packages/91/9d/a81aafd899b900101988ead7fb14974c8a58695338ab6a0f3d6b0100f30b/onnxruntime-1.23.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:218295a8acae83905f6f1aed8cacb8e3eb3bd7513a13fe4ba3b2664a19fc4a6b", size = 19157705, upload-time = "2025-10-22T03:46:40.415Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/4e40f2fba272a6698d62be2cd21ddc3675edfc1a4b9ddefcc4648f115315/onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76ff670550dc23e58ea9bc53b5149b99a44e63b34b524f7b8547469aaa0dcb8c", size = 15226915, upload-time = "2025-10-22T03:46:27.773Z" }, + { url = "https://files.pythonhosted.org/packages/ef/88/9cc25d2bafe6bc0d4d3c1db3ade98196d5b355c0b273e6a5dc09c5d5d0d5/onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f9b4ae77f8e3c9bee50c27bc1beede83f786fe1d52e99ac85aa8d65a01e9b77", size = 17382649, upload-time = "2025-10-22T03:47:02.782Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b4/569d298f9fc4d286c11c45e85d9ffa9e877af12ace98af8cab52396e8f46/onnxruntime-1.23.2-cp312-cp312-win_amd64.whl", hash = "sha256:25de5214923ce941a3523739d34a520aac30f21e631de53bba9174dc9c004435", size = 13470528, upload-time = "2025-10-22T03:47:28.106Z" }, + { url = "https://files.pythonhosted.org/packages/3d/41/fba0cabccecefe4a1b5fc8020c44febb334637f133acefc7ec492029dd2c/onnxruntime-1.23.2-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:2ff531ad8496281b4297f32b83b01cdd719617e2351ffe0dba5684fb283afa1f", size = 17196337, upload-time = "2025-10-22T03:46:35.168Z" }, + { url = "https://files.pythonhosted.org/packages/fe/f9/2d49ca491c6a986acce9f1d1d5fc2099108958cc1710c28e89a032c9cfe9/onnxruntime-1.23.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:162f4ca894ec3de1a6fd53589e511e06ecdc3ff646849b62a9da7489dee9ce95", size = 19157691, upload-time = "2025-10-22T03:46:43.518Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a1/428ee29c6eaf09a6f6be56f836213f104618fb35ac6cc586ff0f477263eb/onnxruntime-1.23.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45d127d6e1e9b99d1ebeae9bcd8f98617a812f53f46699eafeb976275744826b", size = 15226898, upload-time = "2025-10-22T03:46:30.039Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2b/b57c8a2466a3126dbe0a792f56ad7290949b02f47b86216cd47d857e4b77/onnxruntime-1.23.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bace4e0d46480fbeeb7bbe1ffe1f080e6663a42d1086ff95c1551f2d39e7872", size = 17382518, upload-time = "2025-10-22T03:47:05.407Z" }, + { url = "https://files.pythonhosted.org/packages/4a/93/aba75358133b3a941d736816dd392f687e7eab77215a6e429879080b76b6/onnxruntime-1.23.2-cp313-cp313-win_amd64.whl", hash = "sha256:1f9cc0a55349c584f083c1c076e611a7c35d5b867d5d6e6d6c823bf821978088", size = 13470276, upload-time = "2025-10-22T03:47:31.193Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3d/6830fa61c69ca8e905f237001dbfc01689a4e4ab06147020a4518318881f/onnxruntime-1.23.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9d2385e774f46ac38f02b3a91a91e30263d41b2f1f4f26ae34805b2a9ddef466", size = 15229610, upload-time = "2025-10-22T03:46:32.239Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ca/862b1e7a639460f0ca25fd5b6135fb42cf9deea86d398a92e44dfda2279d/onnxruntime-1.23.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2b9233c4947907fd1818d0e581c049c41ccc39b2856cc942ff6d26317cee145", size = 17394184, upload-time = "2025-10-22T03:47:08.127Z" }, +] + +[[package]] +name = "onnxruntime" +version = "1.24.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'win32'", + "(python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "(python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and sys_platform == 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')", +] +dependencies = [ + { name = "flatbuffers", marker = "python_full_version >= '3.11'" }, { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "packaging" }, - { name = "protobuf" }, - { name = "sympy" }, + { name = "packaging", marker = "python_full_version >= '3.11'" }, + { name = "protobuf", marker = "python_full_version >= '3.11'" }, + { name = "sympy", marker = "python_full_version >= '3.11'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/d2/88/d9757c62a0f96b5193f8d447a141eefd14498c404cc5caf1a6f3233cf102/onnxruntime-1.24.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:79b3119ab9f4f3817062e6dbe7f4a44937de93905e3a31ba34313d18cb49e7be", size = 17212018, upload-time = "2026-02-05T17:32:13.986Z" }, @@ -7850,6 +7968,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/b3/d8482e8cacc8ea15a356efea13d22ce1c5914a9ee36622ba250523240bf2/pyquaternion-0.9.9-py3-none-any.whl", hash = "sha256:e65f6e3f7b1fdf1a9e23f82434334a1ae84f14223eee835190cd2e841f8172ec", size = 14361, upload-time = "2020-10-05T01:31:37.575Z" }, ] +[[package]] +name = "pyreadline3" +version = "3.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/49/4cea918a08f02817aabae639e3d0ac046fef9f9180518a3ad394e22da148/pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7", size = 99839, upload-time = "2024-09-19T02:40:10.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6", size = 83178, upload-time = "2024-09-19T02:40:08.598Z" }, +] + [[package]] name = "pysocks" version = "1.7.1"