diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c9e78c18..0035c4db 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,18 +12,19 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [macos-latest, ubuntu-latest] + os: [macos-latest, ubuntu-latest, windows-latest] python_version: - ["3.9", "3.10", "3.11"] + ["3.9", "3.10", "3.11", "3.12"] defaults: run: shell: bash -l {0} steps: - - uses: actions/checkout@v3 - - uses: conda-incubator/setup-miniconda@v2 + - uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 with: activate-environment: av2 + conda-remove-defaults: true environment-file: conda/environment.yml mamba-version: "*" miniforge-version: latest diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index fdc12461..8d7ab902 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -13,8 +13,8 @@ jobs: name: Rustfmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: dtolnay/rust-toolchain + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: cargo fmt @@ -24,8 +24,8 @@ jobs: name: Clippy runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: dtolnay/rust-toolchain + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable with: components: clippy - name: cargo clippy @@ -35,7 +35,7 @@ jobs: name: Black runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: '3.x' @@ -45,27 +45,29 @@ jobs: name: Ruff runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - run: pip install ruff - - run: ruff . + - uses: actions/checkout@v4 + - uses: astral-sh/ruff-action@v3 mypy: name: Mypy runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 with: - python-version: '3.x' - - run: pip install mypy numpy + activate-environment: av2 + environment-file: conda/environment.yml + mamba-version: "*" + miniforge-version: latest + - run: mamba install mypy -y - run: mypy . # spell_check: # name: Spellcheck # runs-on: ubuntu-latest # steps: - # - uses: actions/checkout@v3 + # - uses: actions/checkout@v4 # - uses: codespell-project/actions-codespell@master diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a4ee099a..e6d5a448 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,130 +1,217 @@ -name: "[av2] Release" +name: release on: push: branches: - main + - master tags: - '*' pull_request: workflow_dispatch: -concurrency: - group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }} - cancel-in-progress: true +permissions: + contents: read jobs: linux: - runs-on: ubuntu-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x86_64, x86, aarch64] + platform: + - runner: ubuntu-22.04 + target: x86_64 + - runner: ubuntu-22.04 + target: x86 + - runner: ubuntu-22.04 + target: aarch64 + # - runner: ubuntu-22.04 + # target: armv7 + # - runner: ubuntu-22.04 + # target: ppc64le + python_version: + ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: ${{ matrix.python_version }} - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.target }} + target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter - sccache: "true" + sccache: 'true' manylinux: auto - name: Upload wheels - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-${{ matrix.python_version }}-linux-${{ matrix.platform.target }} path: dist - # windows: - # runs-on: windows-latest + # musllinux: + # runs-on: ${{ matrix.platform.runner }} # strategy: # matrix: - # target: [x64, x86] + # platform: + # - runner: ubuntu-22.04 + # target: x86_64 + # - runner: ubuntu-22.04 + # target: x86 + # - runner: ubuntu-22.04 + # target: aarch64 + # - runner: ubuntu-22.04 + # target: armv7 # steps: - # - uses: actions/checkout@v3 - # - uses: actions/setup-python@v4 + # - uses: actions/checkout@v4 + # - uses: actions/setup-python@v5 # with: - # python-version: "3.10" - # architecture: ${{ matrix.target }} + # python-version: 3.x # - name: Build wheels # uses: PyO3/maturin-action@v1 # with: - # target: ${{ matrix.target }} + # target: ${{ matrix.platform.target }} # args: --release --out dist --find-interpreter - # sccache: "true" + # sccache: 'true' + # manylinux: musllinux_1_2 # - name: Upload wheels - # uses: actions/upload-artifact@v3 + # uses: actions/upload-artifact@v4 # with: - # name: wheels + # name: wheels-musllinux-${{ matrix.platform.target }} # path: dist + windows: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: windows-latest + target: x64 + - runner: windows-latest + target: x86 + python_version: + ["3.8", "3.9", "3.10", "3.11", "3.12"] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python_version }} + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist --find-interpreter + sccache: 'true' + manylinux: auto + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-${{ matrix.python_version }}-windows-${{ matrix.platform.target }} + path: dist + macos: - runs-on: macos-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x86_64, aarch64] + platform: + - runner: macos-13 + target: x86_64 + - runner: macos-14 + target: aarch64 + python_version: + ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: ${{ matrix.python_version }} - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.target }} + target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter - sccache: "true" + sccache: 'true' + manylinux: auto - name: Upload wheels - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-${{ matrix.python_version }}-macos-${{ matrix.platform.target }} path: dist sdist: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist - name: Upload sdist - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-sdist path: dist - # test_release: - # name: Test release. - # needs: [linux, windows, macos, sdist] - # runs-on: ubuntu-latest - # steps: - # - uses: actions/download-artifact@v3 - # with: - # name: wheels - # path: dist - # - name: Publish distribution 📦 to Test PyPI - # uses: pypa/gh-action-pypi-publish@release/v1 - # with: - # password: ${{ secrets.TEST_PYPI_API_TOKEN }} - # repository-url: https://test.pypi.org/legacy/ + test_release: + name: Test Release + runs-on: ubuntu-latest + environment: release + needs: [linux, macos, windows, sdist] + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write + steps: + - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: 'wheels-*/*' + # - name: Display structure of downloaded files + # run: ls -R + - name: Create 'wheels' directory + run: mkdir -p wheels + - name: Copy wheels artifacts + run: | + find wheels-* -type f -name "*.whl" -exec cp {} wheels/ \; + - name: Publish package distributions to Test PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + packages-dir: wheels/ + skip-existing: true + verbose: true release: name: Release runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" - needs: [linux, macos, sdist] + environment: release + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + needs: [linux, macos, windows, sdist] + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write steps: - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 with: - name: wheels - - name: Publish to PyPI - uses: PyO3/maturin-action@v1 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} + subject-path: 'wheels-*/*' + - name: Create 'wheels' directory + run: mkdir -p wheels + - name: Copy wheels artifacts + run: | + find wheels-* -type f -name "*.whl" -exec cp {} wheels/ \; + - name: Publish package distributions to Test PyPI + uses: pypa/gh-action-pypi-publish@release/v1 with: - command: upload - args: --skip-existing * + packages-dir: wheels/ + verbose: true \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 1f5f22e4..bda97932 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,18 +1,27 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "adler" -version = "1.0.2" +name = "addr2line" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -23,18 +32,24 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] +[[package]] +name = "aligned-vec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" + [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -58,20 +73,61 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] -name = "anyhow" -version = "1.0.75" +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] -name = "approx" -version = "0.4.0" +name = "anstyle-parse" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2a05fd1bd10b2527e20a2cd32d8873d115b8b39fe219ee25f42a8aca6ba278" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ - "num-traits", + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +dependencies = [ + "anstyle", + "once_cell", + "windows-sys 0.59.0", ] +[[package]] +name = "anyhow" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" + [[package]] name = "approx" version = "0.5.1" @@ -81,13 +137,30 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "argminmax" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202108b46429b765ef483f8a24d5c46f48c14acfdacc086dd4ab6dddf6bcdbd2" +checksum = "52424b59d69d69d5056d508b260553afd91c57e21849579cd1f50ee8b8b88eaa" dependencies = [ - "ndarray", + "ndarray 0.15.6", "num-traits", ] @@ -97,6 +170,45 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76" +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "async-trait" +version = "0.1.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "atoi" version = "2.0.0" @@ -108,45 +220,54 @@ dependencies = [ [[package]] name = "atoi_simd" -version = "0.15.5" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfc14f5c3e34de57539a7ba9c18ecde3d9bbde48d232ea1da3e468adb307fd0" +checksum = "4790f9e8961209112beb783d85449b508673cf4a6a419c8449b210743ac4dbe9" [[package]] -name = "atty" -version = "0.2.14" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "av1-grain" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] [[package]] name = "av2" -version = "0.3.0" +version = "0.3.1" dependencies = [ "anyhow", "argminmax", "bincode", "blas-src", "criterion", - "dirs 4.0.0", + "dirs 6.0.0", "env_logger", "glob", "ignore", "image", "indicatif", - "itertools", + "itertools 0.12.1", "log", - "ndarray", + "ndarray 0.16.1", "nshare", "numpy", "once_cell", @@ -158,15 +279,39 @@ dependencies = [ "rand_distr", "rayon", "serde", - "strum 0.24.1", - "strum_macros 0.24.3", + "strum", + "strum_macros", +] + +[[package]] +name = "avif-serialize" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] name = "base64" -version = "0.21.5" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" @@ -191,56 +336,68 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" dependencies = [ "serde", ] +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" + [[package]] name = "blas-src" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb48fbaa7a0cb9d6d96c46bac6cedb16f13a10aebcef1c4e73515aaae8c9909d" +checksum = "b95e83dc868db96e69795c0213143095f03de9dd3252f205d4ac716e4076a7e0" dependencies = [ "openblas-src", ] [[package]] name = "bstr" -version = "1.8.0" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" dependencies = [ "memchr", "serde", ] +[[package]] +name = "built" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c360505aed52b7ec96a3636c3f039d99103c37d1d9b4f7a8c743d3ea9ffcd03b" + [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.5.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", ] [[package]] @@ -249,11 +406,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cast" @@ -261,6 +424,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" +[[package]] +name = "castaway" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +dependencies = [ + "rustversion", +] + [[package]] name = "cblas-sys" version = "0.1.4" @@ -272,12 +444,23 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" dependencies = [ "jobserver", "libc", + "shlex", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", ] [[package]] @@ -288,22 +471,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "chrono-tz" -version = "0.8.6" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" +checksum = "9c6ac4f2c0bf0f44e9161aec9675e1050aa4a530663c4a9e37e108fa948bca9f" dependencies = [ "chrono", "chrono-tz-build", @@ -312,20 +495,19 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.2.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" dependencies = [ "parse-zoneinfo", - "phf", "phf_codegen", ] [[package]] name = "ciborium" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -334,70 +516,95 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", - "half 1.8.2", + "half", ] [[package]] name = "clap" -version = "3.2.25" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" dependencies = [ - "bitflags 1.3.2", - "clap_lex", - "indexmap 1.9.3", - "textwrap", + "clap_builder", ] [[package]] -name = "clap_lex" -version = "0.2.4" +name = "clap_builder" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" dependencies = [ - "os_str_bytes", + "anstyle", + "clap_lex", ] +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + [[package]] name = "color_quant" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + [[package]] name = "comfy-table" -version = "7.1.0" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" +checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" dependencies = [ "crossterm", - "strum 0.25.0", - "strum_macros 0.25.3", + "strum", + "strum_macros", "unicode-width", ] +[[package]] +name = "compact_str" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "rustversion", + "ryu", + "serde", + "static_assertions", +] + [[package]] name = "console" -version = "0.15.7" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", "unicode-width", - "windows-sys 0.45.0", + "windows-sys 0.59.0", ] [[package]] @@ -412,34 +619,34 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "criterion" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" dependencies = [ "anes", - "atty", "cast", "ciborium", "clap", "criterion-plot", - "itertools", - "lazy_static", + "is-terminal", + "itertools 0.10.5", "num-traits", + "once_cell", "oorandom", "plotters", "rayon", @@ -458,71 +665,62 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] name = "crossbeam-channel" -version = "0.5.9" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c3242926edf34aec4ac3a77108ad4854bffaa2e4ddc1824124ce59231302d5" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.16" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", ] [[package]] name = "crossbeam-queue" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9bcf5bdbfdd6030fb4a1c497b5d5fc5921aa2f60d359a17e249c0e6df3de153" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.17" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" -dependencies = [ - "cfg-if", -] +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.8.0", "crossterm_winapi", - "libc", "parking_lot", + "rustix", "winapi", ] @@ -543,74 +741,111 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "dirs" -version = "3.0.2" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys", + "dirs-sys 0.4.1", ] [[package]] name = "dirs" -version = "4.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys", + "dirs-sys 0.5.0", ] [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", - "redox_users", - "winapi", + "option-ext", + "redox_users 0.4.6", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", ] [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +dependencies = [ + "serde", +] [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "enum_dispatch" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", +] + +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", + "regex", ] [[package]] name = "env_logger" -version = "0.10.1" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" dependencies = [ + "anstream", + "anstyle", + "env_filter", "humantime", - "is-terminal", "log", - "regex", - "termcolor", ] [[package]] @@ -621,12 +856,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -637,13 +872,12 @@ checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c" [[package]] name = "exr" -version = "1.71.0" +version = "1.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "832a761f35ab3e6664babfbdc6cef35a4860e816ec3916dcfd0882954e98a8a8" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" dependencies = [ "bit_field", - "flume", - "half 2.2.1", + "half", "lebe", "miniz_oxide", "rayon-core", @@ -652,56 +886,59 @@ dependencies = [ ] [[package]] -name = "fast-float" -version = "0.2.0" +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fast-float2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" +checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" [[package]] name = "fastrand" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fdeflate" -version = "0.3.1" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", ] [[package]] -name = "flume" -version = "0.11.0" +name = "foldhash" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" -dependencies = [ - "spin", -] +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" [[package]] name = "foreign-types" @@ -718,12 +955,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "foreign_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" - [[package]] name = "form_urlencoded" version = "1.2.1" @@ -734,39 +965,134 @@ dependencies = [ ] [[package]] -name = "getrandom" -version = "0.2.11" +name = "futures" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ - "cfg-if", - "js-sys", - "libc", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", "wasi", "wasm-bindgen", ] [[package]] name = "gif" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" dependencies = [ "color_quant", "weezl", ] +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -777,56 +1103,56 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" - -[[package]] -name = "half" -version = "2.2.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ + "cfg-if", "crunchy", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "rayon", + "serde", +] [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "ahash", "allocator-api2", + "equivalent", + "foldhash", "rayon", + "serde", ] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hex" @@ -836,11 +1162,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -851,16 +1177,16 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core 0.51.1", + "windows-core 0.52.0", ] [[package]] @@ -872,21 +1198,150 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] name = "ignore" -version = "0.4.21" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747ad1b4ae841a78e8aba0d63adbfbeaea26b517b63705d47856b73015d27060" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", @@ -900,82 +1355,101 @@ dependencies = [ [[package]] name = "image" -version = "0.24.8" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" dependencies = [ "bytemuck", - "byteorder", + "byteorder-lite", "color_quant", "exr", "gif", - "jpeg-decoder", + "image-webp", "num-traits", "png", "qoi", + "ravif", + "rayon", + "rgb", "tiff", + "zune-core", + "zune-jpeg", ] [[package]] -name = "indexmap" -version = "1.9.3" +name = "image-webp" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f" dependencies = [ - "autocfg", - "hashbrown 0.12.3", + "byteorder-lite", + "quick-error", ] +[[package]] +name = "imgref" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" + [[package]] name = "indexmap" -version = "2.1.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.15.2", "serde", ] [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "unicode-width", + "web-time", ] [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] -name = "instant" -version = "0.1.12" +name = "interpolate_name" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ - "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.96", ] [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.3", - "rustix", - "windows-sys 0.48.0", + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.10.5" @@ -985,11 +1459,20 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "itoap" @@ -999,37 +1482,29 @@ checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "jpeg-decoder" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" -dependencies = [ - "rayon", -] +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "lebe" version = "0.5.2" @@ -1038,38 +1513,54 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "9b9569d2f74e257076d8c6bfa73fb505b46b851e51ddaecc825944aa3bed17fa" +dependencies = [ + "arbitrary", + "cc", +] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.8.0", "libc", "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1077,25 +1568,33 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] [[package]] name = "lz4" -version = "1.24.0" +version = "1.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4" dependencies = [ - "libc", "lz4-sys", ] [[package]] name = "lz4-sys" -version = "1.9.4" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -1103,9 +1602,9 @@ dependencies = [ [[package]] name = "matrixmultiply" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" dependencies = [ "autocfg", "num_cpus", @@ -1114,45 +1613,72 @@ dependencies = [ "thread-tree", ] +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.7.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" dependencies = [ - "adler", + "adler2", "simd-adler32", ] +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "multiversion" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2c7b9d7fe61760ce5ea19532ead98541f6b4c495d87247aff9826445cf6872a" +checksum = "c4851161a11d3ad0bf9402d90ffc3967bf231768bfd7aeb61755ad06dbf1a142" dependencies = [ "multiversion-macros", "target-features", @@ -1160,9 +1686,9 @@ dependencies = [ [[package]] name = "multiversion-macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a83d8500ed06d68877e9de1dde76c1dbb83885dcdbda4ef44ccbc3fbda2ac8" +checksum = "79a74ddee9e0c27d2578323c13905793e91622148f138ba29738f9dddb835e90" dependencies = [ "proc-macro2", "quote", @@ -1172,12 +1698,11 @@ dependencies = [ [[package]] name = "nalgebra" -version = "0.30.1" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb2d0de08694bed883320212c18ee3008576bfe8c306f4c3c4a58b4876998be" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" dependencies = [ - "approx 0.5.1", - "matrixmultiply", + "approx", "num-complex", "num-rational", "num-traits", @@ -1187,11 +1712,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -1209,17 +1733,54 @@ version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" dependencies = [ - "approx 0.4.0", + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "rawpointer", +] + +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "approx", "cblas-sys", "libc", "matrixmultiply", "num-complex", "num-integer", "num-traits", + "portable-atomic", + "portable-atomic-util", "rawpointer", "rayon", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + [[package]] name = "now" version = "0.1.3" @@ -1231,13 +1792,13 @@ dependencies = [ [[package]] name = "nshare" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4447657cd40e3107416ec4f2ac3e61a18781b00061789e3b8f4bbcbccb26c4c6" +checksum = "60f2f3256fd1d647fdaac74abad0682766a6ffde01f8ccc138f9e1c641ac997c" dependencies = [ "image", "nalgebra", - "ndarray", + "ndarray 0.16.1", ] [[package]] @@ -1249,41 +1810,61 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", + "num-bigint", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -1295,7 +1876,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.9", "libc", ] @@ -1307,12 +1888,12 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "numpy" -version = "0.20.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef41cbb417ea83b30525259e30ccef6af39b31c240bda578889494c5392d331" +checksum = "edb929bc0da91a4d85ed6c0a84deaa53d411abfb387fc271124f91bf6b89f14e" dependencies = [ "libc", - "ndarray", + "ndarray 0.16.1", "num-complex", "num-integer", "num-traits", @@ -1320,51 +1901,61 @@ dependencies = [ "rustc-hash", ] +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "openblas-build" -version = "0.10.8" +version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba42c395477605f400a8d79ee0b756cfb82abe3eb5618e35fa70d3a36010a7f" +checksum = "b8140c0c1afaf88d2d30c48abad86b3bdd2334d691e08f7325a960d784240647" dependencies = [ "anyhow", + "cc", "flate2", "native-tls", "tar", - "thiserror", + "thiserror 2.0.11", "ureq", - "walkdir", ] [[package]] name = "openblas-src" -version = "0.10.8" +version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e5d8af0b707ac2fe1574daa88b4157da73b0de3dc7c39fe3e2c0bb64070501" +checksum = "252f22774417be65f908a20f7721a97e33a253acad4f28370408b7f1baea0629" dependencies = [ - "dirs 3.0.2", + "dirs 5.0.1", "openblas-build", + "pkg-config", "vcpkg", ] [[package]] name = "openssl" -version = "0.10.61" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -1381,7 +1972,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", ] [[package]] @@ -1392,9 +1983,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.97" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -1403,16 +1994,16 @@ dependencies = [ ] [[package]] -name = "os_str_bytes" -version = "6.6.1" +name = "option-ext" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1420,31 +2011,31 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "parse-zoneinfo" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" dependencies = [ "regex", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" @@ -1454,18 +2045,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_shared", ] [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ "phf_generator", "phf_shared", @@ -1473,9 +2064,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", "rand", @@ -1483,18 +2074,30 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "planus" @@ -1507,9 +2110,9 @@ dependencies = [ [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -1520,24 +2123,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] [[package]] name = "png" -version = "0.17.10" +version = "0.17.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -1548,52 +2151,54 @@ dependencies = [ [[package]] name = "polars" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43795c49010cb851d45227caa17769e83760e21d260ba6285c563b754e1652f" +checksum = "0c0af18ae021b0396c42f39396146332957ebc4d4d25d931b4fe73509948f348" dependencies = [ "getrandom", + "polars-arrow", "polars-core", + "polars-error", "polars-io", "polars-lazy", "polars-ops", + "polars-parquet", "polars-sql", "polars-time", + "polars-utils", "version_check", ] [[package]] name = "polars-arrow" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faacd21a2548fa6d50c72d6b8d4649a8e029a0f3c6c5545b7f436f0610e49b0f" +checksum = "d1fd3c64d50b7f5f328e1566cab9979d4bc1ba2ff22114b301ed2ee0e518dbca" dependencies = [ "ahash", "atoi", - "atoi_simd", "bytemuck", "chrono", "chrono-tz", "dyn-clone", "either", "ethnum", - "fast-float", - "foreign_vec", "getrandom", - "hashbrown 0.14.3", - "itoa", + "hashbrown 0.15.2", "itoap", "lz4", "multiversion", "num-traits", + "parking_lot", "polars-arrow-format", "polars-error", + "polars-schema", "polars-utils", - "ryu", "serde", "simdutf8", "streaming-iterator", "strength_reduce", + "strum_macros", "version_check", "zstd", ] @@ -1610,75 +2215,114 @@ dependencies = [ [[package]] name = "polars-compute" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d9dc87f8003ae0edeef5ad9ac92b2a345480bbe17adad64496113ae84706dd" +checksum = "e60822c245a870113df5a88fb184039501eda0a56bcd0c3f866406ff659df340" dependencies = [ + "atoi_simd", "bytemuck", + "chrono", + "either", + "fast-float2", + "itoa", + "itoap", "num-traits", "polars-arrow", "polars-error", "polars-utils", + "ryu", + "strength_reduce", "version_check", ] [[package]] name = "polars-core" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "befd4d280a82219a01035c4f901319ceba65998c594d0c64f9a439cdee1d7777" +checksum = "4794a9e38ef2faf7e47a6f736c7f156c6fbb66cd529f82593b2d48348e422c8d" dependencies = [ "ahash", - "bitflags 2.4.1", + "bitflags 2.8.0", "bytemuck", "chrono", "chrono-tz", "comfy-table", "either", - "hashbrown 0.14.3", - "indexmap 2.1.0", - "ndarray", + "hashbrown 0.14.5", + "hashbrown 0.15.2", + "indexmap", + "itoa", + "ndarray 0.16.1", "num-traits", "once_cell", "polars-arrow", "polars-compute", "polars-error", "polars-row", + "polars-schema", "polars-utils", "rand", "rand_distr", "rayon", "regex", "serde", - "smartstring", - "thiserror", + "strum_macros", + "thiserror 2.0.11", "version_check", "xxhash-rust", ] [[package]] name = "polars-error" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f2435b02d1ba36d8c1f6a722cad04e4c0b2705a3112c5706e6960d405d7798" +checksum = "100093a164bf6c001487ea528b7504f4be1a6881bcffe279bd6133e8f4b4e4f7" dependencies = [ "polars-arrow-format", "regex", "simdutf8", - "thiserror", + "thiserror 2.0.11", +] + +[[package]] +name = "polars-expr" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad56c5ea4d6e0546fbc3fa35918a537b76587600a5118770ed331136249d50d8" +dependencies = [ + "ahash", + "bitflags 2.8.0", + "hashbrown 0.15.2", + "num-traits", + "once_cell", + "polars-arrow", + "polars-compute", + "polars-core", + "polars-io", + "polars-ops", + "polars-plan", + "polars-row", + "polars-time", + "polars-utils", + "rand", + "rayon", ] [[package]] name = "polars-io" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b51fba2cf014cb39c2b38353d601540fb9db643be65abb9ca8ff44b9c4c4a88e" +checksum = "95d774d5971d2092f0588e89d2f0be524dff35ea368272c0810ba54a860e4411" dependencies = [ "ahash", + "async-trait", "atoi_simd", "bytes", "chrono", - "fast-float", + "fast-float2", + "futures", + "glob", + "hashbrown 0.15.2", "home", "itoa", "memchr", @@ -1689,6 +2333,8 @@ dependencies = [ "polars-arrow", "polars-core", "polars-error", + "polars-parquet", + "polars-schema", "polars-time", "polars-utils", "rayon", @@ -1696,37 +2342,59 @@ dependencies = [ "ryu", "serde", "simdutf8", - "smartstring", + "tokio", + "tokio-util", +] + +[[package]] +name = "polars-lazy" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa457bfa96f45cf14c33507eaa3ebcec6a8d52e7f7fc60cd23f338631369d417" +dependencies = [ + "ahash", + "bitflags 2.8.0", + "memchr", + "once_cell", + "polars-arrow", + "polars-core", + "polars-expr", + "polars-io", + "polars-mem-engine", + "polars-ops", + "polars-pipe", + "polars-plan", + "polars-stream", + "polars-time", + "polars-utils", + "rayon", + "version_check", ] [[package]] -name = "polars-lazy" -version = "0.37.0" +name = "polars-mem-engine" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83343e413346f048f3a5ad07c0ea4b5d0bada701a482878213142970b0ddff8" +checksum = "f73aa56fc0a4c1e9d56b4a4485800f4780ca214030d32d0150eccc44f71d6dab" dependencies = [ - "ahash", - "bitflags 2.4.1", - "glob", - "once_cell", + "memmap2", "polars-arrow", "polars-core", + "polars-error", + "polars-expr", "polars-io", "polars-ops", - "polars-pipe", "polars-plan", "polars-time", "polars-utils", "rayon", - "smartstring", - "version_check", ] [[package]] name = "polars-ops" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6395f5fd5e1adf016fd6403c0a493181c1a349a7a145b2687cdf50a0d630310a" +checksum = "b267480495ffe382dab63318e3c6bf4073bb82971c8b80294d079293fece458b" dependencies = [ "ahash", "argminmax", @@ -1735,174 +2403,319 @@ dependencies = [ "chrono", "chrono-tz", "either", - "hashbrown 0.14.3", + "hashbrown 0.15.2", "hex", - "indexmap 2.1.0", + "indexmap", "memchr", "num-traits", "polars-arrow", "polars-compute", "polars-core", "polars-error", + "polars-schema", "polars-utils", "rayon", "regex", + "regex-syntax", "serde", - "smartstring", + "strum_macros", "unicode-reverse", "version_check", ] +[[package]] +name = "polars-parquet" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20237f232b1a74b1fae6b5c9bea8c440f2e5d3b5506601b038f0a7a34b84b710" +dependencies = [ + "ahash", + "async-stream", + "base64", + "bytemuck", + "ethnum", + "futures", + "hashbrown 0.15.2", + "num-traits", + "polars-arrow", + "polars-compute", + "polars-error", + "polars-parquet-format", + "polars-utils", + "serde", + "simdutf8", + "streaming-decompression", +] + +[[package]] +name = "polars-parquet-format" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c025243dcfe8dbc57e94d9f82eb3bef10b565ab180d5b99bed87fd8aea319ce1" +dependencies = [ + "async-trait", + "futures", +] + [[package]] name = "polars-pipe" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390a831b864bc57a4cb260b0595030dfb6a4260a3723cf8ca17968ee2078b8ff" +checksum = "82e3066f4fea8e55e72eba54ffe20ebdf08f63b9691aba8ea1135c3aeb9c2c7e" dependencies = [ "crossbeam-channel", "crossbeam-queue", "enum_dispatch", - "hashbrown 0.14.3", + "hashbrown 0.15.2", "num-traits", "polars-arrow", "polars-compute", "polars-core", + "polars-expr", "polars-io", "polars-ops", "polars-plan", "polars-row", "polars-utils", "rayon", - "smartstring", + "uuid", "version_check", ] [[package]] name = "polars-plan" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb7d7527be2aa33baace9000f6772eb9df7cd57ec010a4b273435d2dc1349e8" +checksum = "99a3832887671df1eb326df52cbfcc47789d3d58454c1084a154b48b240175e2" dependencies = [ "ahash", + "bitflags 2.8.0", "bytemuck", + "bytes", + "chrono", "chrono-tz", + "either", + "hashbrown 0.15.2", + "memmap2", + "num-traits", "once_cell", "percent-encoding", "polars-arrow", + "polars-compute", "polars-core", "polars-io", "polars-ops", "polars-time", "polars-utils", "rayon", + "recursive", "regex", "serde", - "smartstring", - "strum_macros 0.25.3", + "strum_macros", "version_check", ] [[package]] name = "polars-row" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4984d97aad3d0db92afe76ebcab10b5e37a1216618b5703ae0d2917ccd6168c" +checksum = "8e36350fb8a90238e02c8ece0f0c4c24f3374197e9c08c1c22cc8b9c526e6c25" dependencies = [ + "bitflags 2.8.0", + "bytemuck", "polars-arrow", + "polars-compute", + "polars-error", + "polars-utils", +] + +[[package]] +name = "polars-schema" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6aa4913cffc522cea3ccbc0cafb350bec18fed0a1ef8d417ac88ea320d7749" +dependencies = [ + "indexmap", "polars-error", "polars-utils", + "serde", + "version_check", ] [[package]] name = "polars-sql" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f62a8b8f93146ec1eb2ef340d77eeb174e8010035e449bfdd424d2b1fd944a" +checksum = "c62a2247028629b1db384437a9f2792488f0ddb539ec16fb46a5e2bceeba6dbc" dependencies = [ "hex", + "once_cell", "polars-arrow", "polars-core", "polars-error", "polars-lazy", + "polars-ops", "polars-plan", + "polars-time", + "polars-utils", "rand", "serde", "serde_json", "sqlparser", ] +[[package]] +name = "polars-stream" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8cd9da4b063146c3ab7c08678a52eb9d466ade4f4c8617605a5a3ea063002c6" +dependencies = [ + "atomic-waker", + "crossbeam-deque", + "crossbeam-utils", + "futures", + "memmap2", + "parking_lot", + "pin-project-lite", + "polars-core", + "polars-error", + "polars-expr", + "polars-io", + "polars-mem-engine", + "polars-ops", + "polars-parquet", + "polars-plan", + "polars-utils", + "rand", + "rayon", + "recursive", + "slotmap", + "tokio", + "version_check", +] + [[package]] name = "polars-time" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d75348a51d0c97f3b83df860ecb35a6ac6c5dafc6278cac4e1ac101d96dc753" +checksum = "12f005c3441eed1a96464305f73e197813cbae7894ff6712726a1182e31f52b4" dependencies = [ "atoi", + "bytemuck", "chrono", "chrono-tz", "now", "once_cell", "polars-arrow", + "polars-compute", "polars-core", "polars-error", "polars-ops", "polars-utils", "regex", "serde", - "smartstring", + "strum_macros", ] [[package]] name = "polars-utils" -version = "0.37.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f9c955bb1e9b55d835aeb7fe4e4e8826e01abe5f0ada979ceb7d2b9af7b569" +checksum = "e0fc010eea42ad113b641aa53106e4d6e474650c73573d959a546eed0ce6d479" dependencies = [ "ahash", "bytemuck", - "hashbrown 0.14.3", - "indexmap 2.1.0", + "bytes", + "compact_str", + "hashbrown 0.15.2", + "indexmap", + "libc", + "memmap2", "num-traits", "once_cell", "polars-error", + "rand", + "raw-cpuid", "rayon", - "smartstring", + "serde", + "stacker", "sysinfo", "version_check", ] [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] +[[package]] +name = "profiling" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" +dependencies = [ + "quote", + "syn 2.0.96", +] + +[[package]] +name = "psm" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +dependencies = [ + "cc", +] + [[package]] name = "pyo3" -version = "0.20.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0" +checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", - "parking_lot", + "once_cell", + "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", @@ -1911,9 +2724,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.20.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be" +checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" dependencies = [ "once_cell", "target-lexicon", @@ -1921,9 +2734,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.20.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1" +checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636" dependencies = [ "libc", "pyo3-build-config", @@ -1931,38 +2744,41 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.20.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3" +checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.41", + "syn 2.0.96", ] [[package]] name = "pyo3-macros-backend" -version = "0.20.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f" +checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe" dependencies = [ "heck", "proc-macro2", + "pyo3-build-config", "quote", - "syn 2.0.41", + "syn 2.0.96", ] [[package]] name = "pyo3-polars" -version = "0.11.3" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa311764163c831c75f9ca49499abacbf7ece676cad0b059d962a384aa18224" +checksum = "285f023bcf481a2d5a86084e274e27b07d7bd71ee831ec9a9d4cf26c54dc0b9e" dependencies = [ + "libc", + "once_cell", "polars", "polars-core", "pyo3", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1974,11 +2790,17 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + [[package]] name = "quote" -version = "1.0.33" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -2023,6 +2845,65 @@ dependencies = [ "rand", ] +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.12.1", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "once_cell", + "paste", + "profiling", + "rand", + "rand_chacha", + "simd_helpers", + "system-deps", + "thiserror 1.0.69", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2413fd96bd0ea5cdeeb37eaf446a22e6ed7b981d792828721e74ded1980a45c6" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-cpuid" +version = "11.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6928fa44c097620b706542d428957635951bade7143269085389d42c8a4927e" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "rawpointer" version = "0.2.1" @@ -2031,9 +2912,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -2041,39 +2922,70 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", ] +[[package]] +name = "recursive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0786a43debb760f491b1bc0269fe5e84155353c67482b9e60d0cfb596054b43e" +dependencies = [ + "recursive-proc-macro-impl", + "stacker", +] + +[[package]] +name = "recursive-proc-macro-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" +dependencies = [ + "quote", + "syn 2.0.96", +] + [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.8.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror 1.0.69", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 2.0.11", ] [[package]] name = "regex" -version = "1.10.2" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -2083,9 +2995,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2094,9 +3006,21 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -2106,58 +3030,56 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustls-native-certs" -version = "0.6.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", "rustls-pemfile", + "rustls-pki-types", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", + "rustls-pki-types", ] [[package]] -name = "rustversion" -version = "1.0.14" +name = "rustls-pki-types" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" [[package]] -name = "ryu" -version = "1.0.16" +name = "rustversion" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] -name = "safe_arch" -version = "0.7.1" +name = "ryu" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" -dependencies = [ - "bytemuck", -] +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -2170,11 +3092,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -2185,11 +3107,11 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -2198,9 +3120,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2208,46 +3130,61 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.193" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "simba" -version = "0.7.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3fd720c48c53cace224ae62bef1bbff363a70c68c4802a78b5cc6159618176" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" dependencies = [ - "approx 0.5.1", + "approx", "num-complex", "num-traits", "paste", - "wide", ] [[package]] @@ -2256,60 +3193,104 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] -name = "smallvec" -version = "1.11.2" +name = "slab" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] -name = "smartstring" -version = "1.0.1" +name = "slotmap" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ - "autocfg", - "serde", - "static_assertions", "version_check", ] [[package]] -name = "spin" -version = "0.9.8" +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ - "lock_api", + "libc", + "windows-sys 0.52.0", ] [[package]] name = "sqlparser" -version = "0.39.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7" +checksum = "9a875d8cd437cc8a97e9aeaeea352ec9a19aea99c23e9effb17757291de80b08" dependencies = [ "log", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "streaming-decompression" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf6cc3b19bfb128a8ad11026086e31d3ce9ad23f8ea37354b31383a187c44cf3" +dependencies = [ + "fallible-streaming-iterator", +] + [[package]] name = "streaming-iterator" version = "0.1.9" @@ -2324,47 +3305,39 @@ checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strum" -version = "0.24.1" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" - -[[package]] -name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" [[package]] name = "strum_macros" -version = "0.24.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ "heck", "proc-macro2", "quote", "rustversion", - "syn 1.0.109", + "syn 2.0.96", ] [[package]] -name = "strum_macros" -version = "0.25.3" +name = "syn" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "heck", "proc-macro2", "quote", - "rustversion", - "syn 2.0.41", + "unicode-ident", ] [[package]] name = "syn" -version = "1.0.109" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -2372,35 +3345,47 @@ dependencies = [ ] [[package]] -name = "syn" -version = "2.0.41" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "syn 2.0.96", ] [[package]] name = "sysinfo" -version = "0.30.5" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb4f3438c8f6389c864e61221cbc97e9bca98b4daf39a5beb7bea660f528bb2" +checksum = "4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af" dependencies = [ - "cfg-if", "core-foundation-sys", "libc", + "memchr", "ntapi", - "once_cell", "windows", ] +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + [[package]] name = "tar" -version = "0.4.40" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -2409,62 +3394,68 @@ dependencies = [ [[package]] name = "target-features" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb5fa503293557c5158bd215fdc225695e567a77e453f5d4452a50a193969bd" +checksum = "c1bbb9f3c5c463a01705937a24fdabc5047929ac764b2d5b9cf681c1f5041ed5" [[package]] name = "target-lexicon" -version = "0.12.12" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand", - "redox_syscall", + "getrandom", + "once_cell", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] -name = "termcolor" -version = "1.4.0" +name = "thiserror" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "winapi-util", + "thiserror-impl 1.0.69", ] [[package]] -name = "textwrap" -version = "0.16.0" +name = "thiserror" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", +] [[package]] -name = "thiserror" -version = "1.0.51" +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.96", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", ] [[package]] @@ -2487,6 +3478,16 @@ dependencies = [ "weezl", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -2498,67 +3499,99 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "tokio" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ - "tinyvec_macros", + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "tokio-util" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] [[package]] -name = "typenum" -version = "1.17.0" +name = "toml" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] [[package]] -name = "unicode-bidi" -version = "0.3.14" +name = "toml_edit" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] [[package]] -name = "unicode-ident" -version = "1.0.12" +name = "typenum" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] -name = "unicode-normalization" -version = "0.1.22" +name = "unicode-ident" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-reverse" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bea5dacebb0d2d0a69a6700a05b59b3908bf801bf563a49bd27a1b60122962c" +checksum = "4b6f4888ebc23094adfb574fdca9fdc891826287a6397d2cd28802ffd6f20c76" dependencies = [ "unicode-segmentation", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unindent" @@ -2568,9 +3601,9 @@ checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "ureq" -version = "2.9.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" dependencies = [ "base64", "flate2", @@ -2583,32 +3616,76 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" +dependencies = [ + "getrandom", +] + +[[package]] +name = "v_frame" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -2622,34 +3699,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2657,48 +3735,51 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "weezl" -version = "0.1.7" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] [[package]] -name = "wide" -version = "0.7.13" +name = "weezl" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68938b57b33da363195412cfc5fc37c9ed49aa9cfe2156fde64b8d2c9498242" -dependencies = [ - "bytemuck", - "safe_arch", -] +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "winapi" @@ -2718,11 +3799,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -2733,39 +3814,64 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.0", + "windows-core 0.57.0", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-targets 0.52.0", + "windows-implement", + "windows-interface", + "windows-result", + "windows-targets 0.52.6", ] [[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "windows-result" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ - "windows-targets 0.42.2", + "windows-targets 0.52.6", ] [[package]] @@ -2783,22 +3889,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] -name = "windows-targets" -version = "0.42.2" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.6", ] [[package]] @@ -2818,25 +3918,20 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -2845,15 +3940,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -2863,15 +3952,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -2881,15 +3964,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_msvc" -version = "0.42.2" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -2899,15 +3982,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -2917,15 +3994,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2935,33 +4006,48 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.0" +name = "winnow" +version = "0.6.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +dependencies = [ + "memchr", +] + +[[package]] +name = "write16" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "xattr" -version = "1.1.3" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dae5072fe1f8db8f8d29059189ac175196e410e40ba42d5d4684ae2f750995" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" dependencies = [ "libc", "linux-raw-sys", @@ -2970,58 +4056,132 @@ dependencies = [ [[package]] name = "xxhash-rust" -version = "0.8.7" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9828b178da53440fa9c766a3d2f73f7cf5d0ac1fe3980c1e5018d899fd19e07b" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "synstructure", +] [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.96", ] [[package]] name = "zstd" -version = "0.13.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.0.0" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", ] +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + [[package]] name = "zune-inflate" version = "0.2.54" @@ -3030,3 +4190,12 @@ checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] + +[[package]] +name = "zune-jpeg" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" +dependencies = [ + "zune-core", +] diff --git a/conda/environment.yml b/conda/environment.yml index 6882c848..c308dd62 100644 --- a/conda/environment.yml +++ b/conda/environment.yml @@ -1,6 +1,5 @@ name: av2 channels: - - pytorch - conda-forge dependencies: - av diff --git a/pyproject.toml b/pyproject.toml index 9fe9be79..d9030c46 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,23 +1,25 @@ [build-system] -requires = ["maturin>=0.14,<0.15"] +requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "av2" description = "Argoverse 2: Next generation datasets for self-driving perception and forecasting." -requires-python = ">=3.8" +readme = "README.md" license = { file = "LICENSE" } +requires-python = ">=3.8" + keywords = [ - "argoverse", - "argoverse2", - "autonomous-driving", - "av1", - "av2", - "3d-object-detection", - "3d-scene-flow", - "4d-occupancy-forecasting", - "e2e-forecasting", - "motion-forecasting", + "argoverse", + "argoverse2", + "autonomous-driving", + "av1", + "av2", + "3d-object-detection", + "3d-scene-flow", + "4d-occupancy-forecasting", + "e2e-forecasting", + "motion-forecasting", ] classifiers = [ "License :: OSI Approved :: MIT License", @@ -26,6 +28,8 @@ classifiers = [ "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Rust", ] @@ -51,24 +55,11 @@ dependencies = [ "universal_pathlib", ] -dynamic = [ - "authors", - "version" -] - -readme = "README.md" +dynamic = ["authors", "description", "version"] [project.optional-dependencies] -lint = [ - "black[jupyter]", - "mypy", - "ruff", -] -test = [ - "pytest", - "pytest-benchmark", - "pytest-cov", -] +lint = ["black[jupyter]", "mypy", "ruff"] +test = ["pytest", "pytest-benchmark", "pytest-cov"] [project.urls] homepage = "https://argoverse.org" @@ -79,9 +70,7 @@ features = ["pyo3/extension-module"] module-name = "av2._r" [tool.ruff] -select = [ - "D", -] +select = ["D"] [tool.ruff.pydocstyle] convention = "google" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 51dba9ed..f8402f79 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,7 +1,10 @@ [package] name = "av2" -version = "0.3.0" +version = "0.3.1" edition = "2021" +homepage = "https://github.com/argoverse/av2-api" +readme = "../README.md" +repository = "https://github.com/argoverse/av2-api" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] @@ -9,30 +12,30 @@ name = "av2" crate-type = ["cdylib", "lib"] [dependencies] -anyhow = "1.0.66" -argminmax = { version = "0.6.1", features = [ +anyhow = "1.0.95" +argminmax = { version = "0.6.2", features = [ "ndarray", ], default-features = false } -blas-src = { version = "0.8", optional = true } +blas-src = { version = "0.10", optional = true } bincode = "1.3.3" -dirs = "4.0.0" -env_logger = "0.10.0" -glob = "0.3.1" -log = "0.4.17" -ignore = "0.4.20" -image = { version = "0.24.8" } -indicatif = "0.17.3" -itertools = "0.10.5" -ndarray = { version = "0.15.6", features = [ +dirs = "6.0.0" +env_logger = "0.11.6" +glob = "0.3.2" +log = "0.4.25" +ignore = "0.4.23" +image = { version = "0.25.5" } +indicatif = "0.17.9" +itertools = "0.12.1" +ndarray = { version = "0.16.1", features = [ "approx", "matrixmultiply-threading", "rayon", ] } -nshare = { version = "0.9.0", features = ["ndarray"] } -numpy = { version = "0.20.0" } -once_cell = "1.17.1" -openblas-src = { version = "0.10.8", optional = true } -polars = { version = "0.37.0", features = [ +nshare = { version = "0.10.0", features = ["ndarray"] } +numpy = { version = "0.22.1", features = ["gil-refs"] } +once_cell = "1.20.2" +openblas-src = { version = "0.10.11", optional = true } +polars = { version = "0.45.1", features = [ "asof_join", "dtype-u8", "dtype-u16", @@ -42,17 +45,17 @@ polars = { version = "0.37.0", features = [ "serde", "serde-lazy", ] } -pyo3 = { version = "0.20.2", features = ["extension-module"] } -pyo3-polars = "0.11.3" +pyo3 = { version = "0.22.4", features = ["extension-module"] } +pyo3-polars = "0.19.0" rand = "0.8.5" rand_distr = "0.4.3" -rayon = "1.7.0" -serde = "1.0.160" -strum = "0.24.1" -strum_macros = "0.24.3" +rayon = "1.10.0" +serde = "1.0.217" +strum = "0.26.3" +strum_macros = "0.26.4" [dev-dependencies] -criterion = { version = "0.4", features = ["html_reports"] } +criterion = { version = "0.5.1", features = ["html_reports"] } [[bench]] name = "benchmark" diff --git a/rust/README.md b/rust/README.md deleted file mode 100644 index 6ddaabdf..00000000 --- a/rust/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Rust API - -This API is **experimental** and is not intended to be used directly at this time. diff --git a/rust/src/bin/export_accumulated_sweeps.rs b/rust/src/bin/export_accumulated_sweeps.rs index 88c8e760..8bfdbbb2 100644 --- a/rust/src/bin/export_accumulated_sweeps.rs +++ b/rust/src/bin/export_accumulated_sweeps.rs @@ -17,7 +17,6 @@ use once_cell::sync::Lazy; /// Constants can be changed to fit your directory structure. /// However, it's recommend to place the datasets in the default folders. - /// Root directory to datasets. static ROOT_DIR: Lazy = Lazy::new(|| dirs::home_dir().unwrap().join("data/datasets/")); diff --git a/rust/src/bin/export_augmentation_database.rs b/rust/src/bin/export_augmentation_database.rs index cacc5bb3..39a6e4b3 100644 --- a/rust/src/bin/export_augmentation_database.rs +++ b/rust/src/bin/export_augmentation_database.rs @@ -28,7 +28,6 @@ use std::collections::HashMap; /// Constants can be changed to fit your directory structure. /// However, it's recommend to place the datasets in the default folders. - /// Root directory to datasets. static ROOT_DIR: Lazy = Lazy::new(|| dirs::home_dir().unwrap().join("data/datasets/")); @@ -91,7 +90,7 @@ pub fn main() { let cuboids = sweep.cuboids.unwrap().0; let category = cuboids["category"] - .utf8() + .str() .unwrap() .into_iter() .map(|x| x.unwrap()) @@ -122,7 +121,7 @@ pub fn main() { .entry(c.to_string()) .and_modify(|count| *count += 1) .or_insert(0); - let count = category_counter.get(&c.to_string()).unwrap(); + let count = category_counter.get(c).unwrap(); let dst = DST_PREFIX.join(c).join(format!("{count:08}.feather")); fs::create_dir_all(dst.parent().unwrap()).unwrap(); @@ -149,22 +148,37 @@ fn _build_data_frame(arr: Array, column_names: Vec<&str>) -> DataFrame .into_iter() .zip(column_names) .map(|(column, column_name)| match column_name { - "x" => Series::new("x", column.to_owned().into_raw_vec()), - "y" => Series::new("y", column.to_owned().into_raw_vec()), - "z" => Series::new("z", column.to_owned().into_raw_vec()), + "x" => Series::new("x".into(), column.to_owned().into_raw_vec_and_offset().0), + "y" => Series::new("y".into(), column.to_owned().into_raw_vec_and_offset().0), + "z" => Series::new("z".into(), column.to_owned().into_raw_vec_and_offset().0), "intensity" => Series::new( - "intensity", - column.to_owned().mapv(|x| x as u8).into_raw_vec(), + "intensity".into(), + column + .to_owned() + .mapv(|x| x as u8) + .into_raw_vec_and_offset() + .0, ), "laser_number" => Series::new( - "laser_number", - column.to_owned().mapv(|x| x as u8).into_raw_vec(), + "laser_number".into(), + column + .to_owned() + .mapv(|x| x as u8) + .into_raw_vec_and_offset() + .0, ), "offset_ns" => Series::new( - "offset_ns", - column.to_owned().mapv(|x| x as u32).into_raw_vec(), + "offset_ns".into(), + column + .to_owned() + .mapv(|x| x as u32) + .into_raw_vec_and_offset() + .0, + ), + "timedelta_ns" => Series::new( + "timedelta_ns".into(), + column.to_owned().into_raw_vec_and_offset().0, ), - "timedelta_ns" => Series::new("timedelta_ns", column.to_owned().into_raw_vec()), _ => panic!(), }) .collect_vec(); diff --git a/rust/src/data_loader.rs b/rust/src/data_loader.rs index 8e842d9a..ee1bc64a 100644 --- a/rust/src/data_loader.rs +++ b/rust/src/data_loader.rs @@ -9,9 +9,9 @@ use image::Rgba; use io::{read_accumulate_lidar, read_timestamped_feather}; use itertools::Itertools; use ndarray::Ix3; -use nshare::ToNdarray3; -use numpy::IntoPyArray; +use nshare::AsNdarray3; use numpy::PyArray; +use numpy::ToPyArray; use pyo3::prelude::*; use pyo3_polars::PyDataFrame; use rayon::prelude::IntoParallelRefIterator; @@ -185,11 +185,11 @@ impl DataLoader { &self, py: Python<'py>, index: usize, - ) -> Vec<&'py PyArray> { + ) -> Vec>> { let images = self.get_synchronized_images(index); images .into_iter() - .map(|x| x.image.into_ndarray3().into_pyarray(py)) + .map(|x| x.image.as_ndarray3().to_pyarray_bound(py)) .collect_vec() } @@ -273,7 +273,7 @@ impl DataLoader { pub fn read_annotations(&self, log_id: &str, timestamp_ns: u64) -> DataFrame { read_timestamped_feather( &self.annotations_path(log_id), - &ANNOTATION_COLUMNS.to_vec(), + ANNOTATION_COLUMNS.as_ref(), ×tamp_ns, self.memory_mapped, ) @@ -286,7 +286,7 @@ impl DataLoader { pub fn read_city_pose(&self, log_id: &str, timestamp_ns: u64) -> DataFrame { read_timestamped_feather( &self.city_pose_path(log_id), - &POSE_COLUMNS.to_vec(), + POSE_COLUMNS.as_ref(), ×tamp_ns, self.memory_mapped, ) @@ -396,9 +396,10 @@ fn build_file_index( .lazy() .sort_by_exprs( &[cols(["log_id", "timestamp_ns_lidar"])], - vec![false], - false, - true, + SortMultipleOptions { + maintain_order: true, + ..SortMultipleOptions::default() + }, ) .collect() .unwrap(); @@ -413,9 +414,10 @@ fn build_file_index( "log_id", format!("timestamp_ns_{camera_name}").as_str(), ])], - vec![false], - false, - true, + SortMultipleOptions { + maintain_order: true, + ..SortMultipleOptions::default() + }, ) .collect() .unwrap(); @@ -432,10 +434,10 @@ fn build_file_index( ) .unwrap(); - reference_frame = reference_frame.drop_many(&["city_name_right"]); + reference_frame = reference_frame.drop_many(vec!["city_name_right"]); } reference_frame - .rename("timestamp_ns_lidar", "timestamp_ns") + .rename("timestamp_ns_lidar", "timestamp_ns".into()) .unwrap(); reference_frame } @@ -476,9 +478,9 @@ fn build_lidar_metadata(split_dir: PathBuf, sensor_name: &str) -> DataFrame { }) .collect(); df!( - "log_id" => Series::new("log_id", log_id), - format!("timestamp_ns_{}", sensor_name).as_str() => Series::new("timestamp_ns", timestamp_ns.clone()), - "city_name" => Series::new("city_name", vec!["DEFAULT"; timestamp_ns.len()]) + "log_id" => Series::new("log_id".into(), log_id), + format!("timestamp_ns_{}", sensor_name).as_str() => Series::new("timestamp_ns".into(), timestamp_ns.clone()), + "city_name" => Series::new("city_name".into(), vec!["DEFAULT"; timestamp_ns.len()]) ) .unwrap() } @@ -519,9 +521,9 @@ fn build_camera_metadata(split_dir: PathBuf, sensor_name: &str) -> DataFrame { }) .collect(); df!( - "log_id" => Series::new("log_id", log_id), - format!("timestamp_ns_{}", sensor_name).as_str() => Series::new("timestamp_ns", timestamp_ns.clone()), - "city_name" => Series::new("city_name", vec!["DEFAULT"; timestamp_ns.len()]) + "log_id" => Series::new("log_id".into(), log_id), + format!("timestamp_ns_{}", sensor_name).as_str() => Series::new("timestamp_ns".into(), timestamp_ns.clone()), + "city_name" => Series::new("city_name".into(), vec!["DEFAULT"; timestamp_ns.len()]) ) .unwrap() } diff --git a/rust/src/geometry/augmentations.rs b/rust/src/geometry/augmentations.rs index 3fc7b4c7..ad8b4801 100644 --- a/rust/src/geometry/augmentations.rs +++ b/rust/src/geometry/augmentations.rs @@ -45,7 +45,8 @@ pub fn sample_scene_reflection_x( .unwrap() .into_no_null_iter() .map(|y| -y) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -95,7 +96,8 @@ pub fn sample_scene_reflection_y( .unwrap() .into_no_null_iter() .map(|x| -x) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -145,7 +147,8 @@ pub fn sample_scene_global_scale( .unwrap() .into_no_null_iter() .map(|x| scale_factor * x) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -157,7 +160,8 @@ pub fn sample_scene_global_scale( .unwrap() .into_no_null_iter() .map(|y| scale_factor * y) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -169,7 +173,8 @@ pub fn sample_scene_global_scale( .unwrap() .into_no_null_iter() .map(|z| scale_factor * z) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -186,7 +191,8 @@ pub fn sample_scene_global_scale( .unwrap() .into_no_null_iter() .map(|x| scale_factor * x) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -198,7 +204,8 @@ pub fn sample_scene_global_scale( .unwrap() .into_no_null_iter() .map(|y| scale_factor * y) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -210,7 +217,8 @@ pub fn sample_scene_global_scale( .unwrap() .into_no_null_iter() .map(|z| scale_factor * z) - .collect::(), + .collect::() + .into(), )) }, GetOutput::from_type(DataType::Float32), @@ -241,7 +249,7 @@ pub fn sample_scene_global_rotation( 0.0, 1.0, ]) - .into_shape((3, 3)) + .into_shape_with_order((3, 3)) .unwrap(); let column_names = ["x", "y", "z"]; diff --git a/rust/src/geometry/camera/pinhole_camera.rs b/rust/src/geometry/camera/pinhole_camera.rs index b47b3ed8..d4f7de15 100644 --- a/rust/src/geometry/camera/pinhole_camera.rs +++ b/rust/src/geometry/camera/pinhole_camera.rs @@ -159,16 +159,15 @@ impl PinholeCamera { points_camera: &ArrayView, ) -> Array { let num_points = uv.shape()[0]; - let mut is_within_frustum = Array::::from_vec(vec![false; num_points]) - .into_shape([num_points, 1]) - .unwrap(); + let binding = Array::::from_vec(vec![false; num_points]); + let mut is_within_frustum = binding.to_shape([num_points, 1]).unwrap(); par_azip!((mut is_within_frustum_i in is_within_frustum.outer_iter_mut(), uv_row in uv.outer_iter(), point_cam in points_camera.outer_iter()) { let is_within_frustum_x = (uv_row[0] >= 0.) && (uv_row[0] < self.width_px() as f32); let is_within_frustum_y = (uv_row[1] >= 0.) && (uv_row[1] < self.height_px() as f32); let is_within_frustum_z = point_cam[2] > 0.; is_within_frustum_i[0] = is_within_frustum_x & is_within_frustum_y & is_within_frustum_z; }); - is_within_frustum + is_within_frustum.to_owned() } /// Project a collection of 3D points (provided in the egovehicle frame) to the image plane. diff --git a/rust/src/geometry/polytope.rs b/rust/src/geometry/polytope.rs index 54d5df7a..b7523806 100644 --- a/rust/src/geometry/polytope.rs +++ b/rust/src/geometry/polytope.rs @@ -36,7 +36,7 @@ pub fn compute_interior_points_mask( .to_owned(); let uvw = reference_index.clone() - vertices.clone(); - let reference_index = reference_index.into_shape((num_cuboids, 3)).unwrap(); + let reference_index = reference_index.to_shape((num_cuboids, 3)).unwrap(); let mut dot_uvw_reference = Array::::zeros((num_cuboids, 3)); par_azip!((mut a in dot_uvw_reference.outer_iter_mut(), b in uvw.outer_iter(), c in reference_index.outer_iter()) a.assign(&b.dot(&c.t())) ); @@ -45,11 +45,11 @@ pub fn compute_interior_points_mask( par_azip!((mut a in dot_uvw_vertices.outer_iter_mut(), b in uvw.outer_iter(), c in vertices.outer_iter()) a.assign(&b.dot(&c.t()).diag()) ); let dot_uvw_points = uvw - .into_shape((num_cuboids * 3, 3)) + .into_shape_with_order((num_cuboids * 3, 3)) .unwrap() .as_standard_layout() .dot(&points.t().as_standard_layout()) - .into_shape((num_cuboids, 3, num_points)) + .into_shape_with_order((num_cuboids, 3, num_points)) .unwrap(); let shape = (num_cuboids, num_points); diff --git a/rust/src/io.rs b/rust/src/io.rs index ec6f64d3..435ad8c0 100644 --- a/rust/src/io.rs +++ b/rust/src/io.rs @@ -10,7 +10,7 @@ use ndarray::Array2; use ndarray::Array3; use ndarray::Ix1; -use nshare::ToNdarray3; +use nshare::IntoNdarray3; use polars::lazy::dsl::lit; use polars::lazy::dsl::Expr; use polars::lazy::dsl::GetOutput; @@ -30,7 +30,7 @@ use std::path::PathBuf; use crate::constants::POSE_COLUMNS; use crate::geometry::se3::SE3; -use image::io::Reader as ImageReader; +use image::ImageReader; use crate::geometry::so3::_quat_to_mat3; @@ -38,8 +38,14 @@ use crate::geometry::so3::_quat_to_mat3; pub fn read_feather_eager(path: &PathBuf, memory_mapped: bool) -> DataFrame { let file = File::open(path).unwrap_or_else(|_| panic!("{path} not found.", path = path.display())); + + let mmap_path = if memory_mapped { + Some(path.to_path_buf()) + } else { + None + }; polars::io::ipc::IpcReader::new(file) - .memory_mapped(memory_mapped) + .memory_mapped(mmap_path) .finish() .unwrap() } @@ -53,24 +59,6 @@ pub fn write_feather_eager(path: &PathBuf, mut data_frame: DataFrame) { .unwrap() } -/// Read a feather file and load into a `polars` dataframe. -/// TODO: Implement once upstream half-type is fixed. -// pub fn read_feather_lazy(path: &PathBuf, memory_mapped: bool) -> DataFrame { -// LazyFrame::scan_ipc( -// path, -// ScanArgsIpc { -// n_rows: None, -// cache: true, -// rechunk: true, -// row_count: None, -// memmap: memory_mapped, -// }, -// ) -// .unwrap() -// .collect() -// .unwrap() -// } - /// Read and accumulate lidar sweeps. /// Accumulation will only occur if `num_accumulated_sweeps` > 1. /// Sweeps are motion-compensated to the most recent sweep (i.e., at `timestamp_ns`). @@ -121,7 +109,12 @@ pub fn read_accumulate_lidar( .with_column( col("x") .map( - |x| Ok(Some(Series::from_vec("timedelta_ns", vec![0_f32; x.len()]))), + |x| { + Ok(Some( + Series::from_vec("timedelta_ns".into(), vec![0_f32; x.len()]) + .into(), + )) + }, GetOutput::float_type(), ) .alias("timedelta_ns"), @@ -146,11 +139,32 @@ pub fn read_accumulate_lidar( let city_se3_ego_i = data_frame_to_se3(pose_i); let ego_ref_se3_ego_i = ego_se3_city.compose(&city_se3_ego_i); let xyz_ref = ego_ref_se3_ego_i.transform_from(&xyz.view()); - let x_ref = Series::new("x", xyz_ref.slice(s![.., 0]).to_owned().into_raw_vec()); - let y_ref = Series::new("y", xyz_ref.slice(s![.., 1]).to_owned().into_raw_vec()); - let z_ref = Series::new("z", xyz_ref.slice(s![.., 2]).to_owned().into_raw_vec()); + let x_ref = Series::new( + "x".into(), + xyz_ref + .slice(s![.., 0]) + .to_owned() + .into_raw_vec_and_offset() + .0, + ); + let y_ref = Series::new( + "y".into(), + xyz_ref + .slice(s![.., 1]) + .to_owned() + .into_raw_vec_and_offset() + .0, + ); + let z_ref = Series::new( + "z".into(), + xyz_ref + .slice(s![.., 2]) + .to_owned() + .into_raw_vec_and_offset() + .0, + ); let timedelta_ns = Series::new( - "timedelta_ns", + "timedelta_ns".into(), vec![(timestamp_ns - timestamp_ns_i) as f32 * 1e-9; xyz.shape()[0]], ); lidar = @@ -167,14 +181,14 @@ pub fn read_accumulate_lidar( /// Read a dataframe, but filter for the specified timestamp. pub fn read_timestamped_feather( path: &PathBuf, - columns: &Vec<&str>, + columns: &[&str], timestamp_ns: &u64, memory_mapped: bool, ) -> LazyFrame { read_feather_eager(path, memory_mapped) .lazy() .filter(col("timestamp_ns").eq(*timestamp_ns)) - .select(&[cols(columns)]) + .select(&[cols(columns.to_vec())]) } /// Read an image into an RGBA u8 image. diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 26c3abef..e1ae100b 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -19,11 +19,12 @@ pub mod structures; use data_loader::{DataLoader, Sweep}; use ndarray::{Dim, Ix1, Ix2}; +use numpy::PyArray; use numpy::PyReadonlyArray; -use numpy::{IntoPyArray, PyArray}; use pyo3::prelude::*; use geometry::so3::{_quat_to_mat3, quat_to_yaw, yaw_to_quat}; +use numpy::IntoPyArray; use numpy::PyReadonlyArray2; use crate::ops::voxelize; @@ -39,9 +40,9 @@ fn py_voxelize<'py>( width: usize, height: usize, ) -> ( - &'py PyArray>, - &'py PyArray>, - &'py PyArray>, + Bound<'py, PyArray>>, + Bound<'py, PyArray>>, + Bound<'py, PyArray>>, ) { let (indices, values, counts) = voxelize( &indices.as_array(), @@ -51,9 +52,9 @@ fn py_voxelize<'py>( height, ); ( - indices.into_pyarray(py), - values.into_pyarray(py), - counts.into_pyarray(py), + indices.into_pyarray_bound(py), + values.into_pyarray_bound(py), + counts.into_pyarray_bound(py), ) } @@ -63,8 +64,8 @@ fn py_voxelize<'py>( fn py_quat_to_mat3<'py>( py: Python<'py>, quat_wxyz: PyReadonlyArray, -) -> &'py PyArray { - _quat_to_mat3(&quat_wxyz.as_array().view()).into_pyarray(py) +) -> Bound<'py, PyArray> { + _quat_to_mat3(&quat_wxyz.as_array().view()).into_pyarray_bound(py) } #[pyfunction] @@ -73,8 +74,8 @@ fn py_quat_to_mat3<'py>( fn py_quat_to_yaw<'py>( py: Python<'py>, quat_wxyz: PyReadonlyArray, -) -> &'py PyArray { - quat_to_yaw(&quat_wxyz.as_array().view()).into_pyarray(py) +) -> Bound<'py, PyArray> { + quat_to_yaw(&quat_wxyz.as_array().view()).into_pyarray_bound(py) } #[pyfunction] @@ -83,13 +84,13 @@ fn py_quat_to_yaw<'py>( fn py_yaw_to_quat<'py>( py: Python<'py>, quat_wxyz: PyReadonlyArray, -) -> &'py PyArray { - yaw_to_quat(&quat_wxyz.as_array().view()).into_pyarray(py) +) -> Bound<'py, PyArray> { + yaw_to_quat(&quat_wxyz.as_array().view()).into_pyarray_bound(py) } /// A Python module implemented in Rust. #[pymodule] -fn _r(_py: Python, m: &PyModule) -> PyResult<()> { +fn _r(_py: Python, m: &Bound) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_function(wrap_pyfunction!(py_quat_to_mat3, m)?)?; diff --git a/rust/src/ops.rs b/rust/src/ops.rs index 7befed03..87ff3c3c 100644 --- a/rust/src/ops.rs +++ b/rust/src/ops.rs @@ -42,7 +42,8 @@ pub fn voxelize( let unique_indices = raveled_indices .clone() - .into_raw_vec() + .into_raw_vec_and_offset() + .0 .into_iter() .unique() .enumerate() diff --git a/rust/src/share.rs b/rust/src/share.rs index 3e69bfde..9ff3f684 100644 --- a/rust/src/share.rs +++ b/rust/src/share.rs @@ -19,8 +19,12 @@ pub fn ndarray_to_expr_vec(arr: Array, column_names: Vec<&str>) -> Vec let mut series_vec = vec![]; for (column, column_name) in arr.columns().into_iter().zip(column_names) { let series = Series::new( - column_name, - column.as_standard_layout().to_owned().into_raw_vec(), + column_name.into(), + column + .as_standard_layout() + .to_owned() + .into_raw_vec_and_offset() + .0, ); series_vec.push(lit(series)); } diff --git a/src/av2/datasets/motion_forecasting/data_schema.py b/src/av2/datasets/motion_forecasting/data_schema.py index 2f94a94f..cc1d3acc 100644 --- a/src/av2/datasets/motion_forecasting/data_schema.py +++ b/src/av2/datasets/motion_forecasting/data_schema.py @@ -25,10 +25,10 @@ class TrackCategory(Enum): FOCAL_TRACK: The track used to generate a particular scenario - scored in the single-agent prediction challenge. """ - TRACK_FRAGMENT: int = 0 - UNSCORED_TRACK: int = 1 - SCORED_TRACK: int = 2 - FOCAL_TRACK: int = 3 + TRACK_FRAGMENT = 0 + UNSCORED_TRACK = 1 + SCORED_TRACK = 2 + FOCAL_TRACK = 3 @unique @@ -36,20 +36,20 @@ class ObjectType(str, Enum): """All tracks are assigned one of the following object type labels.""" # Dynamic movers - VEHICLE: str = "vehicle" - PEDESTRIAN: str = "pedestrian" - MOTORCYCLIST: str = "motorcyclist" - CYCLIST: str = "cyclist" - BUS: str = "bus" + VEHICLE = "vehicle" + PEDESTRIAN = "pedestrian" + MOTORCYCLIST = "motorcyclist" + CYCLIST = "cyclist" + BUS = "bus" # Static objects - STATIC: str = "static" - BACKGROUND: str = "background" - CONSTRUCTION: str = "construction" - RIDERLESS_BICYCLE: str = "riderless_bicycle" + STATIC = "static" + BACKGROUND = "background" + CONSTRUCTION = "construction" + RIDERLESS_BICYCLE = "riderless_bicycle" # Catch-all type for other/unknown objects - UNKNOWN: str = "unknown" + UNKNOWN = "unknown" @dataclass diff --git a/src/av2/datasets/motion_forecasting/viz/scenario_visualization.py b/src/av2/datasets/motion_forecasting/viz/scenario_visualization.py index 4a0fa1ad..277a63a5 100644 --- a/src/av2/datasets/motion_forecasting/viz/scenario_visualization.py +++ b/src/av2/datasets/motion_forecasting/viz/scenario_visualization.py @@ -9,7 +9,9 @@ import cv2 import matplotlib.pyplot as plt import numpy as np +from matplotlib.axes import Axes from matplotlib.patches import Rectangle +from matplotlib.ticker import NullLocator from PIL import Image as img from PIL.Image import Image @@ -93,8 +95,8 @@ def visualize_scenario( plt.gca().set_axis_off() plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0) plt.margins(0, 0) - plt.gca().xaxis.set_major_locator(plt.NullLocator()) - plt.gca().yaxis.set_major_locator(plt.NullLocator()) + plt.gca().xaxis.set_major_locator(NullLocator()) + plt.gca().yaxis.set_major_locator(NullLocator()) # Save plotted frame to in-memory buffer buf = io.BytesIO() @@ -105,7 +107,7 @@ def visualize_scenario( frames.append(frame) # Write buffered frames to MP4V-encoded video - fourcc = cv2.VideoWriter_fourcc(*"mp4v") + fourcc = cv2.VideoWriter_fourcc(*"mp4v") # type: ignore vid_path = str(save_path.parents[0] / f"{save_path.stem}.mp4") video = cv2.VideoWriter(vid_path, fourcc, fps=10, frameSize=frames[0].size) for i in range(len(frames)): @@ -149,7 +151,7 @@ def _plot_static_map_elements( def _plot_actor_tracks( - ax: plt.Axes, scenario: ArgoverseScenario, timestep: int + ax: Axes, scenario: ArgoverseScenario, timestep: int ) -> Optional[_PlotBounds]: """Plot all actor tracks (up to a particular time step) associated with an Argoverse scenario. @@ -278,7 +280,7 @@ def _plot_polygons( def _plot_actor_bounding_box( - ax: plt.Axes, + ax: Axes, cur_location: NDArrayFloat, heading: float, color: str, diff --git a/src/av2/datasets/tbv/scene_clusters.py b/src/av2/datasets/tbv/scene_clusters.py index 0ccea977..088069d7 100644 --- a/src/av2/datasets/tbv/scene_clusters.py +++ b/src/av2/datasets/tbv/scene_clusters.py @@ -8,6 +8,7 @@ - Each cluster has at least one log in the val or test set. - Logs within each cluster are provided in chronological order. """ + from typing import Dict, Final, Tuple ATX_CLUSTERS: Final[Dict[int, Tuple[str, ...]]] = { diff --git a/src/av2/evaluation/detection/eval.py b/src/av2/evaluation/detection/eval.py index 18cd8438..2f8858c4 100644 --- a/src/av2/evaluation/detection/eval.py +++ b/src/av2/evaluation/detection/eval.py @@ -51,6 +51,7 @@ in addition to the mean statistics average across all classes, and P refers to the number of included statistics, e.g. AP, ATE, ASE, AOE, CDS by default. """ + import logging import multiprocessing as mp import warnings @@ -133,13 +134,13 @@ def evaluate( gts_pl = pl.from_pandas(gts) uuid_to_dts = { - k: v[list(DTS_COLUMNS)].to_numpy().astype(float) + cast(Tuple[str, int, int], k): v[list(DTS_COLUMNS)].to_numpy().astype(float) for k, v in dts_pl.partition_by( DETECTION_UUID_COLUMNS, maintain_order=True, as_dict=True ).items() } uuid_to_gts = { - k: v[list(GTS_COLUMNS)].to_numpy().astype(float) + cast(Tuple[str, int, int], k): v[list(GTS_COLUMNS)].to_numpy().astype(float) for k, v in gts_pl.partition_by( DETECTION_UUID_COLUMNS, maintain_order=True, as_dict=True ).items() @@ -252,7 +253,7 @@ def summarize_metrics( # Get valid detections and sort them in descending order. category_dts = ( dts.loc[is_valid_dts] - .sort_values(by="score", ascending=False) + .sort_values(by="score", ascending=False, kind="stable") .reset_index(drop=True) ) diff --git a/src/av2/evaluation/scene_flow/make_annotation_files.py b/src/av2/evaluation/scene_flow/make_annotation_files.py index 85f2bd37..97c5c2cc 100644 --- a/src/av2/evaluation/scene_flow/make_annotation_files.py +++ b/src/av2/evaluation/scene_flow/make_annotation_files.py @@ -10,17 +10,17 @@ from av2.evaluation.scene_flow.utils import get_eval_point_mask, get_eval_subset from av2.torch.data_loaders.scene_flow import SceneFlowDataloader -from av2.utils.typing import NDArrayBool, NDArrayFloat, NDArrayInt +from av2.utils.typing import NDArrayBool, NDArrayByte, NDArrayNumber CLOSE_DISTANCE_THRESHOLD: Final = 35.0 def write_annotation( - category_indices: NDArrayInt, + category_indices: NDArrayByte, is_close: NDArrayBool, is_dynamic: NDArrayBool, is_valid: NDArrayBool, - flow: NDArrayFloat, + flow: NDArrayNumber, sweep_uuid: Tuple[str, int], output_dir: Path, ) -> None: diff --git a/src/av2/evaluation/scene_flow/utils.py b/src/av2/evaluation/scene_flow/utils.py index 27159144..7a481951 100644 --- a/src/av2/evaluation/scene_flow/utils.py +++ b/src/av2/evaluation/scene_flow/utils.py @@ -45,7 +45,7 @@ def get_eval_point_mask(sweep_uuid: Tuple[str, int], mask_file: Path) -> BoolTen def compute_eval_point_mask( - datum: Tuple[Sweep, Sweep, Se3, Optional[Flow]] + datum: Tuple[Sweep, Sweep, Se3, Optional[Flow]], ) -> BoolTensor: """Compute for a given sweep, a boolean mask indicating which points are evaluated on. diff --git a/src/av2/map/lane_segment.py b/src/av2/map/lane_segment.py index e6c76b07..54c73164 100644 --- a/src/av2/map/lane_segment.py +++ b/src/av2/map/lane_segment.py @@ -24,9 +24,9 @@ class LaneType(str, Enum): """Describes the sorts of objects that may use the lane for travel.""" - VEHICLE: str = "VEHICLE" - BIKE: str = "BIKE" - BUS: str = "BUS" + VEHICLE = "VEHICLE" + BIKE = "BIKE" + BUS = "BUS" @unique @@ -36,21 +36,21 @@ class LaneMarkType(str, Enum): The `NONE` type indicates that lane boundary is not marked by any paint; its extent should be implicitly inferred. """ - DASH_SOLID_YELLOW: str = "DASH_SOLID_YELLOW" - DASH_SOLID_WHITE: str = "DASH_SOLID_WHITE" - DASHED_WHITE: str = "DASHED_WHITE" - DASHED_YELLOW: str = "DASHED_YELLOW" - DOUBLE_SOLID_YELLOW: str = "DOUBLE_SOLID_YELLOW" - DOUBLE_SOLID_WHITE: str = "DOUBLE_SOLID_WHITE" - DOUBLE_DASH_YELLOW: str = "DOUBLE_DASH_YELLOW" - DOUBLE_DASH_WHITE: str = "DOUBLE_DASH_WHITE" - SOLID_YELLOW: str = "SOLID_YELLOW" - SOLID_WHITE: str = "SOLID_WHITE" - SOLID_DASH_WHITE: str = "SOLID_DASH_WHITE" - SOLID_DASH_YELLOW: str = "SOLID_DASH_YELLOW" - SOLID_BLUE: str = "SOLID_BLUE" - NONE: str = "NONE" - UNKNOWN: str = "UNKNOWN" + DASH_SOLID_YELLOW = "DASH_SOLID_YELLOW" + DASH_SOLID_WHITE = "DASH_SOLID_WHITE" + DASHED_WHITE = "DASHED_WHITE" + DASHED_YELLOW = "DASHED_YELLOW" + DOUBLE_SOLID_YELLOW = "DOUBLE_SOLID_YELLOW" + DOUBLE_SOLID_WHITE = "DOUBLE_SOLID_WHITE" + DOUBLE_DASH_YELLOW = "DOUBLE_DASH_YELLOW" + DOUBLE_DASH_WHITE = "DOUBLE_DASH_WHITE" + SOLID_YELLOW = "SOLID_YELLOW" + SOLID_WHITE = "SOLID_WHITE" + SOLID_DASH_WHITE = "SOLID_DASH_WHITE" + SOLID_DASH_YELLOW = "SOLID_DASH_YELLOW" + SOLID_BLUE = "SOLID_BLUE" + NONE = "NONE" + UNKNOWN = "UNKNOWN" @dataclass diff --git a/src/av2/map/map_api.py b/src/av2/map/map_api.py index a512623d..5eef6932 100644 --- a/src/av2/map/map_api.py +++ b/src/av2/map/map_api.py @@ -31,7 +31,13 @@ from av2.map.lane_segment import LaneSegment from av2.map.pedestrian_crossing import PedestrianCrossing from av2.utils import io -from av2.utils.typing import NDArrayBool, NDArrayByte, NDArrayFloat, NDArrayInt +from av2.utils.typing import ( + NDArrayBool, + NDArrayByte, + NDArrayFloat, + NDArrayInt, + NDArrayNumber, +) # 1 meter resolution is insufficient for the online-generated drivable area and ROI raster grids # these grids can be generated at an arbitrary resolution, from vector (polygon) objects. @@ -60,7 +66,7 @@ class RasterLayerType(str, Enum): class RasterMapLayer: """Data sampled at points along a regular grid, and a mapping from city coordinates to grid array coordinates.""" - array: Union[NDArrayByte, NDArrayFloat] + array: NDArrayNumber array_Sim2_city: Sim2 def get_raster_values_at_coords( diff --git a/src/av2/rendering/map.py b/src/av2/rendering/map.py index 1768e23d..d394a06f 100644 --- a/src/av2/rendering/map.py +++ b/src/av2/rendering/map.py @@ -60,7 +60,7 @@ def render_lane_boundary_egoview( img_bgr: NDArrayByte, lane_segment: LaneSegment, side: str, - line_width_px: float, + line_width_px: int, ) -> NDArrayByte: """Draw left or right lane boundary (only one is rendered here). @@ -196,7 +196,7 @@ def draw_dashed_polyline_egoview( polyline: NDArrayFloat, img_bgr: NDArrayByte, bound_color: Tuple[int, int, int], - thickness_px: float, + thickness_px: int, dash_interval_m: float, dash_frequency: int = 3, ) -> None: @@ -239,7 +239,7 @@ def render_polyline_egoview( polyline_city_frame: NDArrayFloat, img_bgr: NDArrayByte, bound_color: Tuple[int, int, int], - thickness_px: float, + thickness_px: int, ) -> None: """Rasterize a polygon onto an image canvas, as if seen from a particular camera. @@ -293,9 +293,9 @@ def render_polyline_egoview( def draw_visible_polyline_segments_cv2( line_segments_arr: Union[NDArrayFloat, NDArrayInt], valid_pts_bool: NDArrayBool, - image: NDArrayByte, + image: cv2.typing.NumPyArrayNumeric, color: Tuple[int, int, int], - thickness_px: float = 1, + thickness_px: int = 1, ) -> None: """Draw a polyline onto an image using given line segments. diff --git a/src/av2/rendering/ops/draw.py b/src/av2/rendering/ops/draw.py index 5457ffcc..8bb0fea4 100644 --- a/src/av2/rendering/ops/draw.py +++ b/src/av2/rendering/ops/draw.py @@ -9,10 +9,10 @@ import numpy as np from av2.utils.constants import NAN -from av2.utils.typing import NDArrayByte, NDArrayFloat, NDArrayInt +from av2.utils.typing import NDArrayByte, NDArrayFloat, NDArrayInt, NDArrayNumber -UINT8_MAX: Final[np.uint8] = np.uint8(np.iinfo(np.uint8).max) -UINT8_BITS: Final[np.uint8] = np.log2(UINT8_MAX + 1).astype(np.uint8) +UINT8_MAX: Final = np.iinfo(np.uint8).max +UINT8_BITS: Final = np.log2(UINT8_MAX + 1).astype(np.uint8) @nb.njit @@ -90,14 +90,14 @@ def gaussian_kernel(x: float, mu: float, sigma: float) -> float: @nb.njit def draw_points_kernel( - img: NDArrayByte, + img: NDArrayNumber, points_uv: NDArrayInt, colors: NDArrayByte, diameter: int = 1, alpha: float = 1.0, with_anti_alias: bool = False, sigma: float = 1.0, -) -> NDArrayByte: +) -> NDArrayNumber: """Draw points onto an image canvas. NOTE: Anti-aliasing will apply a Gaussian kernel at each uv -- parameterized diff --git a/src/av2/rendering/rasterize.py b/src/av2/rendering/rasterize.py index 81e358cf..f3514f66 100644 --- a/src/av2/rendering/rasterize.py +++ b/src/av2/rendering/rasterize.py @@ -1,6 +1,7 @@ # """Raster visualization tools.""" + from typing import Dict, Final, Tuple import numpy as np @@ -120,14 +121,14 @@ def xyz_to_bev( def draw_points_xy_in_img( - img: NDArrayByte, + img: NDArrayNumber, points_xy: NDArrayInt, colors: NDArrayByte, diameter: int = 1, alpha: float = 1.0, with_anti_alias: bool = False, sigma: float = 1.0, -) -> NDArrayByte: +) -> NDArrayNumber: """Draw a set of points over an image. Args: diff --git a/src/av2/rendering/vector.py b/src/av2/rendering/vector.py index 1b374a7f..ad23084a 100644 --- a/src/av2/rendering/vector.py +++ b/src/av2/rendering/vector.py @@ -7,18 +7,19 @@ import cv2 import matplotlib.patches as mpatches -import matplotlib.pyplot as plt import numpy as np +from cv2.typing import MatLike +from matplotlib.axes import Axes from matplotlib.path import Path as MPath from av2.geometry.camera.pinhole_camera import PinholeCamera from av2.rendering.color import BLUE_BGR from av2.rendering.ops.draw import clip_line_frustum -from av2.utils.typing import NDArrayByte, NDArrayFloat, NDArrayInt, NDArrayNumber +from av2.utils.typing import NDArrayFloat, NDArrayInt, NDArrayNumber def draw_polygon_mpl( - ax: plt.Axes, + ax: Axes, polygon: NDArrayFloat, color: Union[Tuple[float, float, float], str], linewidth: Optional[float] = None, @@ -41,7 +42,7 @@ def draw_polygon_mpl( def plot_polygon_patch_mpl( polygon_pts: NDArrayFloat, - ax: plt.Axes, + ax: Axes, color: Union[Tuple[float, float, float], str] = "y", alpha: float = 0.3, zorder: int = 1, @@ -72,13 +73,13 @@ def plot_polygon_patch_mpl( def draw_line_in_img( - img: NDArrayByte, - p1: NDArrayNumber, - p2: NDArrayNumber, + img: MatLike, + p1: Tuple[int, int], + p2: Tuple[int, int], color: Tuple[int, int, int] = BLUE_BGR, thickness: int = 3, - line_type: Enum = cv2.LINE_AA, -) -> NDArrayByte: + line_type: int = cv2.LINE_AA, +) -> MatLike: """Draw a line on an image. Args: @@ -92,7 +93,7 @@ def draw_line_in_img( Returns: The image with a line drawn. """ - img_line: NDArrayByte = cv2.line( + img_line = cv2.line( img, p1, p2, @@ -104,14 +105,14 @@ def draw_line_in_img( def draw_line_frustum( - img: NDArrayByte, - p1: NDArrayNumber, - p2: NDArrayNumber, + img: MatLike, + p1: Tuple[int, int], + p2: Tuple[int, int], cam_model: PinholeCamera, color: Tuple[int, int, int], thickness: int = 3, - line_type: Enum = cv2.LINE_AA, -) -> NDArrayByte: + line_type: int = cv2.LINE_AA, +) -> MatLike: """Draw a line inside of the camera frustum. Args: diff --git a/src/av2/rendering/video.py b/src/av2/rendering/video.py index e013663c..9aa340b6 100644 --- a/src/av2/rendering/video.py +++ b/src/av2/rendering/video.py @@ -6,7 +6,7 @@ from enum import Enum, unique from pathlib import Path -from typing import Dict, Final, Mapping, Optional, Set, Union +from typing import Dict, Final, Mapping, Optional, Set, Union, cast import av import numpy as np @@ -159,12 +159,12 @@ def write_video( dst.parent.mkdir(parents=True, exist_ok=True) with av.open(str(dst), "w") as output: - stream = output.add_stream(codec, fps) + stream = cast(av.VideoStream, output.add_stream(codec, fps)) if codec in HIGH_EFFICIENCY_VIDEO_CODECS: - stream.codec_tag = "hvc1" + stream.codec_context.codec_tag = "hvc1" stream.width = W stream.height = H - stream.options = { + stream.codec_context.options = { "crf": str(crf), "hwaccel": "auto", "movflags": "+faststart", diff --git a/src/av2/structures/cuboid.py b/src/av2/structures/cuboid.py index c9fe567b..c24721bd 100644 --- a/src/av2/structures/cuboid.py +++ b/src/av2/structures/cuboid.py @@ -25,6 +25,7 @@ NDArrayByte, NDArrayFloat, NDArrayInt, + NDArrayNumber, NDArrayObject, ) @@ -264,7 +265,7 @@ def __getitem__(self, idx: int) -> Cuboid: """ if idx < 0 or idx >= len(self): raise IndexError( - f"Attempted to access cuboid {idx}, but only indices [0,{len(self)-1}] are valid" + f"Attempted to access cuboid {idx}, but only indices [0,{len(self) - 1}] are valid" ) return self.cuboids[idx] @@ -296,11 +297,11 @@ def transform(self, target_SE3_dst: SE3) -> CuboidList: def project_to_cam( self, - img: NDArrayByte, + img: NDArrayNumber, cam_model: PinholeCamera, city_SE3_ego_cam_t: Optional[SE3] = None, city_SE3_ego_lidar_t: Optional[SE3] = None, - ) -> NDArrayByte: + ) -> NDArrayNumber: """Project the cuboids to the camera by clipping cuboid line segments against the camera view frustum. NOTE: The front face of each cuboid is drawn in yellow, and all other line segments are drawn in blue. diff --git a/src/av2/structures/ndgrid.py b/src/av2/structures/ndgrid.py index aebb8912..5e3db57a 100644 --- a/src/av2/structures/ndgrid.py +++ b/src/av2/structures/ndgrid.py @@ -127,7 +127,7 @@ def points_to_bev_img( points: NDArrayFloat, color: Tuple[int, int, int] = GRAY_BGR, diameter: int = 2, - ) -> NDArrayByte: + ) -> NDArrayNumber: """Convert a set of points in Cartesian space to a bird's-eye-view image. Args: @@ -159,10 +159,10 @@ def points_to_bev_img( C = len(color) shape = (H, W, C) - img: NDArrayByte = np.zeros(shape, dtype=np.uint8) + img = np.zeros(shape, dtype=np.uint8) colors: NDArrayByte = np.array( [color for _ in range(len(points_xy))], dtype=np.uint8 ) - img = draw_points_xy_in_img(img, uv, colors, diameter=diameter) - return img + img_with_points = draw_points_xy_in_img(img, uv, colors, diameter=diameter) + return img_with_points diff --git a/src/av2/structures/timestamped_image.py b/src/av2/structures/timestamped_image.py index 41cb1c51..81a9d88a 100644 --- a/src/av2/structures/timestamped_image.py +++ b/src/av2/structures/timestamped_image.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from av2.geometry.camera.pinhole_camera import PinholeCamera -from av2.utils.typing import NDArrayByte +from av2.utils.typing import NDArrayNumber @dataclass(frozen=True) @@ -19,6 +19,6 @@ class TimestampedImage: """ - img: NDArrayByte + img: NDArrayNumber camera_model: PinholeCamera timestamp_ns: int diff --git a/src/av2/torch/data_loaders/detection.py b/src/av2/torch/data_loaders/detection.py index 290a56c2..1a578ad6 100644 --- a/src/av2/torch/data_loaders/detection.py +++ b/src/av2/torch/data_loaders/detection.py @@ -19,7 +19,7 @@ @dataclass -class DetectionDataLoader(Dataset[Sweep]): # type: ignore +class DetectionDataLoader(Dataset[Sweep]): """PyTorch data-loader for the sensor dataset. The sensor dataset should exist somewhere such as `~/data/datasets/{dataset_name}/{dataset_type}/{split_name}`, diff --git a/src/av2/torch/data_loaders/scene_flow.py b/src/av2/torch/data_loaders/scene_flow.py index 2dfe0c4e..fa3c4c48 100644 --- a/src/av2/torch/data_loaders/scene_flow.py +++ b/src/av2/torch/data_loaders/scene_flow.py @@ -23,7 +23,7 @@ @dataclass -class SceneFlowDataloader(Dataset[Tuple[Sweep, Sweep, Se3, Optional[Flow]]]): # type: ignore +class SceneFlowDataloader(Dataset[Tuple[Sweep, Sweep, Se3, Optional[Flow]]]): """PyTorch data-loader for the sensor dataset. Args: @@ -93,7 +93,7 @@ def __getitem__(self, index: int) -> Tuple[Sweep, Sweep, Se3, Optional[Flow]]: if sweep.cuboids is not None: flow = Flow.from_sweep_pair((sweep, next_sweep)) - ego_1_SE3_ego_0 = next_sweep.city_SE3_ego.inverse() * sweep.city_SE3_ego + ego_1_SE3_ego_0 = next_sweep.city_SE3_ego.inverse()._mul_se3(sweep.city_SE3_ego) ego_1_SE3_ego_0.rotation._q.requires_grad_(False) ego_1_SE3_ego_0.translation.requires_grad_(False) diff --git a/src/av2/torch/structures/flow.py b/src/av2/torch/structures/flow.py index 81b38d14..13009e13 100644 --- a/src/av2/torch/structures/flow.py +++ b/src/av2/torch/structures/flow.py @@ -66,7 +66,7 @@ def from_sweep_pair(cls, sweeps: Tuple[Sweep, Sweep]) -> Flow: current_sweep.city_SE3_ego, next_sweep.city_SE3_ego, ) - ego1_SE3_ego0 = city_SE3_ego1.inverse() * city_SE3_ego0 + ego1_SE3_ego0 = city_SE3_ego1.inverse()._mul_se3(city_SE3_ego0) current_cuboid_map = cuboids_to_id_cuboid_map(current_cuboids) next_cuboid_map = cuboids_to_id_cuboid_map(next_cuboids) @@ -87,9 +87,10 @@ def from_sweep_pair(cls, sweeps: Tuple[Sweep, Sweep]) -> Flow: c0.length_m += BOUNDING_BOX_EXPANSION # the bounding boxes are a little too tight sometimes c0.width_m += BOUNDING_BOX_EXPANSION obj_pts_npy, obj_mask_npy = c0.compute_interior_points(current_pc.numpy()) - obj_pts, obj_mask = torch.as_tensor( - obj_pts_npy, dtype=torch.float32 - ), torch.as_tensor(obj_mask_npy) + obj_pts, obj_mask = ( + torch.as_tensor(obj_pts_npy, dtype=torch.float32), + torch.as_tensor(obj_mask_npy), + ) category_inds[obj_mask] = CATEGORY_TO_INDEX[str(c0.category)] if id in next_cuboid_map: diff --git a/src/av2/utils/depth_map_utils.py b/src/av2/utils/depth_map_utils.py index 1edaead6..50118e30 100644 --- a/src/av2/utils/depth_map_utils.py +++ b/src/av2/utils/depth_map_utils.py @@ -7,6 +7,7 @@ import cv2 import matplotlib.pyplot as plt import numpy as np +from cv2.typing import MatLike from av2.utils.typing import NDArrayByte, NDArrayFloat @@ -42,7 +43,7 @@ def compute_allowed_noise_per_point(points_cam: NDArrayFloat) -> NDArrayFloat: def vis_depth_map( img_rgb: NDArrayByte, - depth_map: NDArrayFloat, + depth_map: MatLike, interp_depth_map: bool, num_dilation_iters: int = 10, ) -> None: diff --git a/src/av2/utils/dilation_utils.py b/src/av2/utils/dilation_utils.py index b63d2c80..b753d4e3 100644 --- a/src/av2/utils/dilation_utils.py +++ b/src/av2/utils/dilation_utils.py @@ -2,14 +2,14 @@ """Utility functions for dilation of a binary mask.""" - import cv2 import numpy as np +from cv2.typing import MatLike -from av2.utils.typing import NDArrayByte, NDArrayFloat +from av2.utils.typing import NDArrayByte -def dilate_by_l2(img: NDArrayByte, dilation_thresh: float = 5.0) -> NDArrayByte: +def dilate_by_l2(img: NDArrayByte, dilation_thresh: float = 5.0) -> MatLike: """Dilate a mask using the L2 distance from a zero pixel. OpenCV's distance transform calculates the DISTANCE TO THE CLOSEST ZERO PIXEL for each @@ -34,7 +34,7 @@ def dilate_by_l2(img: NDArrayByte, dilation_thresh: float = 5.0) -> NDArrayByte: raise ValueError("Input to distance transform must be a uint8 array.") mask_diff: NDArrayByte = np.ones_like(img, dtype=np.uint8) - img - distance_mask: NDArrayFloat = cv2.distanceTransform( + distance_mask = cv2.distanceTransform( mask_diff, distanceType=cv2.DIST_L2, maskSize=cv2.DIST_MASK_PRECISE ) dilated_img: NDArrayByte = np.less_equal( diff --git a/src/av2/utils/io.py b/src/av2/utils/io.py index 74599a57..cc164d2f 100644 --- a/src/av2/utils/io.py +++ b/src/av2/utils/io.py @@ -9,12 +9,13 @@ import cv2 import numpy as np import pandas as pd +from cv2.typing import MatLike from pyarrow import feather from upath import UPath import av2.geometry.geometry as geometry_utils from av2.geometry.se3 import SE3 -from av2.utils.typing import NDArrayByte, NDArrayFloat, PathType +from av2.utils.typing import NDArrayFloat, PathType # Mapping from egovehicle time in nanoseconds to egovehicle pose. TimestampedCitySE3EgoPoses = Dict[int, SE3] @@ -174,7 +175,7 @@ def read_city_SE3_ego(log_dir: Union[Path, UPath]) -> TimestampedCitySE3EgoPoses return timestamp_city_SE3_ego_dict -def read_img(img_path: Path, channel_order: str = "RGB") -> NDArrayByte: +def read_img(img_path: Path, channel_order: str = "RGB") -> MatLike: """Return a RGB or BGR image array, given an image file path. Args: @@ -190,15 +191,15 @@ def read_img(img_path: Path, channel_order: str = "RGB") -> NDArrayByte: if channel_order not in ["RGB", "BGR"]: raise ValueError("Unsupported channel order (must be BGR or RGB).") - img_bgr: NDArrayByte = cv2.imread(str(img_path)) + img_bgr = cv2.imread(str(img_path)) if channel_order == "BGR": return img_bgr - img_rgb: NDArrayByte = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) + img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) return img_rgb -def write_img(img_path: Path, img: NDArrayByte, channel_order: str = "RGB") -> None: +def write_img(img_path: Path, img: MatLike, channel_order: str = "RGB") -> None: """Save image to disk. Args: diff --git a/src/av2/utils/raster.py b/src/av2/utils/raster.py index cbe9c32a..239bcb80 100644 --- a/src/av2/utils/raster.py +++ b/src/av2/utils/raster.py @@ -6,9 +6,10 @@ import cv2 import numpy as np +from cv2.typing import MatLike from PIL import Image, ImageDraw -from av2.utils.typing import NDArrayByte, NDArrayFloat +from av2.utils.typing import NDArrayByte, NDArrayFloat, NDArrayNumber def get_mask_from_polygons( @@ -37,17 +38,17 @@ def get_mask_from_polygons( def blend_images( - img0: NDArrayByte, img1: NDArrayByte, alpha: float = 0.7 -) -> NDArrayByte: + img0: NDArrayNumber, img1: NDArrayNumber, alpha: float = 0.7 +) -> NDArrayNumber: """Alpha-blend two images together. Args: - img0: uint8 array of shape (H,W,3) - img1: uint8 array of shape (H,W,3) + img0: Array of shape (H,W,3). + img1: Array of shape (H,W,3). alpha: Alpha blending coefficient. Returns: - uint8 array of shape (H,W,3) + Array of shape (H,W,3). """ - blended: NDArrayByte = cv2.addWeighted(img0, alpha, img1, (1 - alpha), gamma=0) + blended = cv2.addWeighted(img0, alpha, img1, (1 - alpha), gamma=0) return blended diff --git a/src/av2/utils/typing.py b/src/av2/utils/typing.py index 75086a7b..c901ae57 100644 --- a/src/av2/utils/typing.py +++ b/src/av2/utils/typing.py @@ -11,7 +11,7 @@ import numpy.typing as npt from upath import UPath -NDArrayNumber = npt.NDArray["np.number[Any]"] +NDArrayNumber = np.ndarray[Any, np.dtype[Union[np.integer[Any], np.floating[Any]]]] NDArrayBool = npt.NDArray[np.bool_] NDArrayFloat = npt.NDArray[np.float64] NDArrayFloat32 = npt.NDArray[np.float32] diff --git a/tests/unit/datasets/motion_forecasting/eval/test_metrics.py b/tests/unit/datasets/motion_forecasting/eval/test_metrics.py index 9ba1a7f1..2f32597f 100644 --- a/tests/unit/datasets/motion_forecasting/eval/test_metrics.py +++ b/tests/unit/datasets/motion_forecasting/eval/test_metrics.py @@ -235,7 +235,9 @@ def test_compute_brier_ade( ], ) def test_compute_brier_ade_data_validation( - forecast_probabilities: NDArrayFloat, normalize: bool, expectation: AbstractContextManager # type: ignore + forecast_probabilities: NDArrayFloat, + normalize: bool, + expectation: AbstractContextManager, # type: ignore ) -> None: """Test that test_compute_brier_ade raises the correct errors when inputs are invalid. @@ -322,7 +324,9 @@ def test_compute_brier_fde( ], ) def test_compute_brier_fde_data_validation( - forecast_probabilities: NDArrayFloat, normalize: bool, expectation: AbstractContextManager # type: ignore + forecast_probabilities: NDArrayFloat, + normalize: bool, + expectation: AbstractContextManager, # type: ignore ) -> None: """Test that test_compute_brier_fde raises the correct errors when inputs are invalid. diff --git a/tests/unit/datasets/motion_forecasting/eval/test_submission.py b/tests/unit/datasets/motion_forecasting/eval/test_submission.py index 091298c0..5f120588 100644 --- a/tests/unit/datasets/motion_forecasting/eval/test_submission.py +++ b/tests/unit/datasets/motion_forecasting/eval/test_submission.py @@ -68,7 +68,8 @@ ids=["valid", "wrong_shape_trajectory", "mismatched_trajectory_probability_shape"], ) def test_challenge_submission_data_validation( - test_submission_dict: Dict[str, ScenarioPredictions], expectation: AbstractContextManager # type: ignore + test_submission_dict: Dict[str, ScenarioPredictions], + expectation: AbstractContextManager, # type: ignore ) -> None: """Test that validation of submitted trajectories works as expected during challenge submission initialization. diff --git a/tests/unit/datasets/sensor/test_sensor_dataloader.py b/tests/unit/datasets/sensor/test_sensor_dataloader.py index fd79d73d..8cec2377 100644 --- a/tests/unit/datasets/sensor/test_sensor_dataloader.py +++ b/tests/unit/datasets/sensor/test_sensor_dataloader.py @@ -35,7 +35,7 @@ def _create_dummy_sensor_dataloader(log_id: str) -> SensorDataloader: "sensors", "cameras", sensor_name, - f"{int(t*1e6)}.jpg", + f"{int(t * 1e6)}.jpg", ) Path(fpath).parent.mkdir(exist_ok=True, parents=True) fpath.open("w").close() @@ -46,7 +46,7 @@ def _create_dummy_sensor_dataloader(log_id: str) -> SensorDataloader: log_id, "sensors", sensor_name, - f"{int(t*1e6)}.feather", + f"{int(t * 1e6)}.feather", ) Path(fpath).parent.mkdir(exist_ok=True, parents=True) fpath.open("w").close() diff --git a/tests/unit/evaluation/scene_flow/test_sf_eval.py b/tests/unit/evaluation/scene_flow/test_sf_eval.py index dd028fce..6fadf093 100644 --- a/tests/unit/evaluation/scene_flow/test_sf_eval.py +++ b/tests/unit/evaluation/scene_flow/test_sf_eval.py @@ -9,9 +9,8 @@ import av2.evaluation.scene_flow.eval as eval from av2.evaluation.scene_flow.make_annotation_files import write_annotation from av2.evaluation.scene_flow.utils import write_output_file -from av2.utils.typing import NDArrayBool, NDArrayFloat, NDArrayInt -gts: NDArrayFloat = np.array( +gts = np.array( [ [0.0, 0.0, 0.0], [1e-3, 0.0, 0.0], @@ -27,24 +26,25 @@ dtype=np.float64, ) -dts_perfect: NDArrayFloat = gts.copy() -dts_very_close: NDArrayFloat = gts + 0.01 -dts_close: NDArrayFloat = gts + 0.05 -dts_zero: NDArrayFloat = np.zeros_like(gts).astype(np.float64) +dts_perfect = gts.copy() +dts_very_close = gts + 0.01 +dts_close = gts + 0.05 +dts_zero = np.zeros_like(gts).astype(np.float64) -gts_dynamic: NDArrayBool = np.array( - [False, False, False, False, True, True, True, True, False, False] +gts_dynamic = np.array( + [False, False, False, False, True, True, True, True, False, False], dtype=np.bool ) -gts_classes: NDArrayInt = np.array([0, 0, 0, 0, 17, 17, 1, 11, 0, 23]) -gts_valid: NDArrayBool = np.array( - [False, True, True, True, True, True, True, True, True, True] +gts_classes = np.array([0, 0, 0, 0, 17, 17, 1, 11, 0, 23], dtype=int) +gts_valid = np.array( + [False, True, True, True, True, True, True, True, True, True], dtype=np.bool ) -gts_close: NDArrayBool = np.array( - [True, True, False, False, True, True, False, False, True, True] +gts_close = np.array( + [True, True, False, False, True, True, False, False, True, True], dtype=np.bool ) -dts_dynamic: NDArrayBool = np.array( - [False, True, False, True, False, True, False, True, False, True] +dts_dynamic = np.array( + [False, True, False, True, False, True, False, True, False, True], + dtype=np.bool, ) diff --git a/tests/unit/geometry/test_geometry.py b/tests/unit/geometry/test_geometry.py index 141f0c86..ad302225 100644 --- a/tests/unit/geometry/test_geometry.py +++ b/tests/unit/geometry/test_geometry.py @@ -370,7 +370,7 @@ def test_compute_interior_points_mask( def test_benchmark_compute_interior_points_mask_optimized( - benchmark: Callable[..., Any] + benchmark: Callable[..., Any], ) -> None: """Benchmark compute_interior_pts on 100000 random points.""" rotation: NDArrayFloat = np.eye(3) @@ -393,7 +393,7 @@ def test_benchmark_compute_interior_points_mask_optimized( def test_benchmark_compute_interior_points_mask_slow( - benchmark: Callable[..., Any] + benchmark: Callable[..., Any], ) -> None: """Benchmark compute_interior_points_mask on 100000 random points.""" rotation: NDArrayFloat = np.eye(3) diff --git a/tests/unit/map/test_drivable_area.py b/tests/unit/map/test_drivable_area.py index 56deb5d1..3983a749 100644 --- a/tests/unit/map/test_drivable_area.py +++ b/tests/unit/map/test_drivable_area.py @@ -2,7 +2,6 @@ """Unit tests for the DrivableArea class.""" - import unittest from av2.map.drivable_area import DrivableArea diff --git a/tests/unit/rendering/ops/test_draw.py b/tests/unit/rendering/ops/test_draw.py index 5b50ef91..0378b4c2 100644 --- a/tests/unit/rendering/ops/test_draw.py +++ b/tests/unit/rendering/ops/test_draw.py @@ -6,6 +6,7 @@ import cv2 import numpy as np +from cv2.typing import MatLike from av2.rendering.ops.draw import ( alpha_blend_kernel, @@ -16,12 +17,12 @@ def _draw_points_cv2( - img: NDArrayByte, + img: MatLike, points_xy: NDArrayInt, colors: NDArrayByte, radius: int, with_anti_alias: bool = True, -) -> NDArrayByte: +) -> MatLike: """Draw points in an image using OpenCV functionality. Args: @@ -34,11 +35,11 @@ def _draw_points_cv2( Returns: The image with points overlaid. """ - line_type = cv2.LINE_AA if with_anti_alias else None + line_type = cv2.LINE_AA if with_anti_alias else 0 for i, (x, y) in enumerate(points_xy): rgb = colors[i] rgb = tuple([int(intensity) for intensity in rgb]) - cv2.circle(img, (x, y), radius, (0, 0, 0), -1, line_type) + img = cv2.circle(img, (x, y), radius, (0, 0, 0), -1, line_type) return img @@ -142,7 +143,7 @@ def test_benchmark_draw_points_kernel_aliased(benchmark: Callable[..., Any]) -> def test_benchmark_draw_points_kernel_anti_aliased( - benchmark: Callable[..., Any] + benchmark: Callable[..., Any], ) -> None: """Benchmark the draw points kernel _with_ anti-aliasing.""" img: NDArrayByte = np.zeros((2048, 2048, 3), dtype=np.uint8) diff --git a/tests/unit/utils/test_dense_grid_interpolation.py b/tests/unit/utils/test_dense_grid_interpolation.py index dc2148dd..189a071b 100644 --- a/tests/unit/utils/test_dense_grid_interpolation.py +++ b/tests/unit/utils/test_dense_grid_interpolation.py @@ -1,6 +1,7 @@ # """Unit tests on utilities that perform dense 2d grid interpolation from sparse values.""" + from typing import Final, Tuple import numpy as np diff --git a/tests/unit/utils/test_raster.py b/tests/unit/utils/test_raster.py index a3d64327..090212aa 100644 --- a/tests/unit/utils/test_raster.py +++ b/tests/unit/utils/test_raster.py @@ -6,6 +6,7 @@ import cv2 import numpy as np +from cv2.typing import MatLike import av2.utils.raster as raster_utils from av2.utils.typing import NDArrayByte, NDArrayFloat @@ -130,7 +131,7 @@ def test_benchmark_blend_images_cv2(benchmark: Callable[..., Any]) -> None: def blend_images( img0: NDArrayByte, img1: NDArrayByte, alpha: float = 0.7 - ) -> NDArrayByte: + ) -> MatLike: """Alpha-blend two images together using OpenCV `addWeighted`. Args: @@ -141,7 +142,7 @@ def blend_images( Returns: uint8 array of shape (H,W,3) """ - blended: NDArrayByte = cv2.addWeighted(img0, alpha, img1, (1 - alpha), gamma=0) + blended = cv2.addWeighted(img0, alpha, img1, (1 - alpha), gamma=0) return blended size = (2048, 1550, 3) diff --git a/tests/unit/utils/test_se3.py b/tests/unit/utils/test_se3.py index 94737572..8b141332 100644 --- a/tests/unit/utils/test_se3.py +++ b/tests/unit/utils/test_se3.py @@ -172,7 +172,7 @@ def test_SE3_chaining_transforms() -> None: def test_benchmark_SE3_transform_point_cloud_optimized( - benchmark: Callable[..., Any] + benchmark: Callable[..., Any], ) -> None: """Ensure that our transform_point_cloud() implementation is faster than a naive implementation.""" num_pts = 100000 @@ -191,7 +191,7 @@ def test_benchmark_SE3_transform_point_cloud_optimized( def test_benchmark_SE3_transform_point_cloud_unoptimized( - benchmark: Callable[..., Any] + benchmark: Callable[..., Any], ) -> None: """Benchmark unoptimized SE(3) transformation.""" diff --git a/tutorials/generate_egoview_overlaid_vector_map.py b/tutorials/generate_egoview_overlaid_vector_map.py index ebbf2ce2..49161cce 100644 --- a/tutorials/generate_egoview_overlaid_vector_map.py +++ b/tutorials/generate_egoview_overlaid_vector_map.py @@ -24,7 +24,7 @@ from av2.map.map_api import ArgoverseStaticMap from av2.rendering.color import BLUE_BGR from av2.rendering.map import EgoViewMapRenderer -from av2.utils.typing import NDArrayByte +from av2.utils.typing import NDArrayByte, NDArrayNumber RING_CAMERA_FPS: Final[int] = 20 @@ -132,7 +132,7 @@ def render_egoview( log_id: str, max_range_m: float, dump_single_frames: bool, -) -> NDArrayByte: +) -> NDArrayNumber: """Synthetically manipulate a vector map, render the map in the ego-view, and save rendering to disk. Args: @@ -160,12 +160,12 @@ def render_egoview( if save_fpath.exists(): logger.info("Rendered image already exists, skipping") - img: NDArrayByte = io_utils.read_img(save_fpath) + img = io_utils.read_img(save_fpath) return img start = time.time() - img_rgb: NDArrayByte = io_utils.read_img(img_fpath) + img_rgb = io_utils.read_img(img_fpath) # to prevent washing out, can pass in black image, and get just mask back, or can overlay directly. img_h, img_w, _ = img_rgb.shape diff --git a/tutorials/generate_forecasting_scenario_visualizations.py b/tutorials/generate_forecasting_scenario_visualizations.py index c2273670..4fe6f7cc 100644 --- a/tutorials/generate_forecasting_scenario_visualizations.py +++ b/tutorials/generate_forecasting_scenario_visualizations.py @@ -23,8 +23,8 @@ class SelectionCriteria(str, Enum): """Valid criteria used to select Argoverse scenarios for visualization.""" - FIRST: str = "first" - RANDOM: str = "random" + FIRST = "first" + RANDOM = "random" def generate_scenario_visualizations( diff --git a/tutorials/generate_per_camera_videos.py b/tutorials/generate_per_camera_videos.py index 9a1bda2f..cc64faae 100644 --- a/tutorials/generate_per_camera_videos.py +++ b/tutorials/generate_per_camera_videos.py @@ -9,6 +9,7 @@ import click import numpy as np +from cv2.typing import MatLike from joblib import Parallel, delayed import av2.rendering.video as video_utils @@ -73,7 +74,7 @@ def render_log_ring_camera_videos( cam_im_fpaths = loader.get_ordered_log_cam_fpaths(log_id, camera_name) num_cam_imgs = len(cam_im_fpaths) - video_list: List[NDArrayByte] = [] + video_list: List[MatLike] = [] for i, im_fpath in enumerate(cam_im_fpaths): if i % PRINT_EVERY == 0: logger.info( diff --git a/tutorials/map_tutorial.ipynb b/tutorials/map_tutorial.ipynb index 6367577a..179f1534 100644 --- a/tutorials/map_tutorial.ipynb +++ b/tutorials/map_tutorial.ipynb @@ -98,10 +98,7 @@ "outputs": [], "source": [ "def single_log_teaser(args: argparse.Namespace) -> None:\n", - " \"\"\"\n", - " For a single log, render all local crosswalks in green, and pedestrian crossings in purple,\n", - " in a bird's eye view.\n", - " \"\"\"\n", + " \"\"\"For a single log, render all local crosswalks in green, and pedestrian crossings in purple, in a bird's eye view.\"\"\"\n", " log_map_dirpath = Path(args.dataroot) / args.log_id / \"map\"\n", " avm = ArgoverseStaticMap.from_map_dir(log_map_dirpath, build_raster=False)\n", "\n", @@ -111,13 +108,19 @@ " for _, ls in avm.vector_lane_segments.items():\n", " # right_ln_bnd\n", " # left_ln_bnd\n", - " vector_plotting_utils.draw_polygon_mpl(ax, ls.polygon_boundary, color=\"g\", linewidth=0.5)\n", - " vector_plotting_utils.plot_polygon_patch_mpl(ls.polygon_boundary, ax, color=\"g\", alpha=0.2)\n", + " vector_plotting_utils.draw_polygon_mpl(\n", + " ax, ls.polygon_boundary, color=\"g\", linewidth=0.5\n", + " )\n", + " vector_plotting_utils.plot_polygon_patch_mpl(\n", + " ls.polygon_boundary, ax, color=\"g\", alpha=0.2\n", + " )\n", "\n", " # plot all pedestrian crossings\n", " for _, pc in avm.vector_pedestrian_crossings.items():\n", " vector_plotting_utils.draw_polygon_mpl(ax, pc.polygon, color=\"m\", linewidth=0.5)\n", - " vector_plotting_utils.plot_polygon_patch_mpl(pc.polygon, ax, color=\"m\", alpha=0.2)\n", + " vector_plotting_utils.plot_polygon_patch_mpl(\n", + " pc.polygon, ax, color=\"m\", alpha=0.2\n", + " )\n", "\n", " plt.show()" ] @@ -192,14 +195,11 @@ "outputs": [], "source": [ "def plot_lane_segments(\n", - " ax: matplotlib.axes.Axes, lane_segments: List[LaneSegment], lane_color: np.ndarray = DARK_GRAY_RGB_MPL\n", + " ax: matplotlib.axes.Axes,\n", + " lane_segments: List[LaneSegment],\n", + " lane_color: np.ndarray = DARK_GRAY_RGB_MPL,\n", ") -> None:\n", - " \"\"\"\n", - "\n", - " Args:\n", - " ax:\n", - " lane_segments:\n", - " \"\"\"\n", + " \"\"\"Plot lane segments.\"\"\"\n", " for ls in lane_segments:\n", " pts_city = ls.polygon_boundary\n", " ALPHA = 1.0 # 0.1\n", @@ -208,7 +208,8 @@ " )\n", "\n", " for bound_type, bound_city in zip(\n", - " [ls.left_mark_type, ls.right_mark_type], [ls.left_lane_boundary, ls.right_lane_boundary]\n", + " [ls.left_mark_type, ls.right_mark_type],\n", + " [ls.left_lane_boundary, ls.right_lane_boundary],\n", " ):\n", " if \"YELLOW\" in bound_type:\n", " mark_color = \"y\"\n", @@ -228,8 +229,22 @@ " left, right = polyline_utils.get_double_polylines(\n", " polyline=bound_city.xyz[:, :2], width_scaling_factor=0.1\n", " )\n", - " ax.plot(left[:, 0], left[:, 1], mark_color, alpha=ALPHA, linestyle=linestyle, zorder=2)\n", - " ax.plot(right[:, 0], right[:, 1], mark_color, alpha=ALPHA, linestyle=linestyle, zorder=2)\n", + " ax.plot(\n", + " left[:, 0],\n", + " left[:, 1],\n", + " mark_color,\n", + " alpha=ALPHA,\n", + " linestyle=linestyle,\n", + " zorder=2,\n", + " )\n", + " ax.plot(\n", + " right[:, 0],\n", + " right[:, 1],\n", + " mark_color,\n", + " alpha=ALPHA,\n", + " linestyle=linestyle,\n", + " zorder=2,\n", + " )\n", " else:\n", " ax.plot(\n", " bound_city.xyz[:, 0],\n", @@ -248,9 +263,10 @@ "metadata": {}, "outputs": [], "source": [ - "def argoverse2_sensor_dataset_teaser(args: argparse.Namespace, save_plot: bool = False) -> None:\n", - " \"\"\"\n", - " Visualize both ego-vehicle poses and the per-log local vector map.\n", + "def argoverse2_sensor_dataset_teaser(\n", + " args: argparse.Namespace, save_plot: bool = False\n", + ") -> None:\n", + " \"\"\"Visualize both ego-vehicle poses and the per-log local vector map.\n", "\n", " Crosswalks are plotted in purple. Lane segments plotted in dark gray. Ego-pose in red.\n", " \"\"\"\n", diff --git a/tutorials/object_detection_evaluation.ipynb b/tutorials/object_detection_evaluation.ipynb index 4a4284de..b98acf75 100644 --- a/tutorials/object_detection_evaluation.ipynb +++ b/tutorials/object_detection_evaluation.ipynb @@ -40,8 +40,12 @@ "metadata": {}, "outputs": [], "source": [ - "dataset_dir = Path.home() / \"data\" / \"datasets\" / \"av2\" / \"sensor\" # Path to your AV2 sensor dataset directory.\n", - "competition_cfg = DetectionCfg(dataset_dir=dataset_dir) # Defaults to competition parameters." + "dataset_dir = (\n", + " Path.home() / \"data\" / \"datasets\" / \"av2\" / \"sensor\"\n", + ") # Path to your AV2 sensor dataset directory.\n", + "competition_cfg = DetectionCfg(\n", + " dataset_dir=dataset_dir\n", + ") # Defaults to competition parameters." ] }, { @@ -51,7 +55,9 @@ "outputs": [], "source": [ "split = \"val\"\n", - "gts = read_all_annotations(dataset_dir=dataset_dir, split=split) # Contains all annotations in a particular split.\n", + "gts = read_all_annotations(\n", + " dataset_dir=dataset_dir, split=split\n", + ") # Contains all annotations in a particular split.\n", "display(gts)" ] },