diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml deleted file mode 100644 index 69d448cd7ca..00000000000 --- a/.github/workflows/coverage.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Coverage - -on: [pull_request, push] - -jobs: - coverage: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - submodules: true # needed to test IPC, which are located in a submodule - - name: Install Rust - run: rustup toolchain install stable --component llvm-tools-preview - - name: Install cargo-llvm-cov - uses: taiki-e/install-action@cargo-llvm-cov - - name: Setup parquet files - run: | - apt update && apt install python3-pip python3-venv -y -q - python3 -m venv venv - source venv/bin/activate - pip install pip --upgrade - pip install pyarrow==6 pyorc - python parquet_integration/write_parquet.py - python tests/it/io/orc/write.py - deactivate - - uses: Swatinem/rust-cache@v1 - - name: Generate code coverage - run: cargo llvm-cov --features full --lcov --output-path lcov.info - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos - files: lcov.info - fail_ci_if_error: true diff --git a/.github/workflows/integration-ffi.yml b/.github/workflows/integration-ffi.yml index f09f0955880..ccb7c0cba67 100644 --- a/.github/workflows/integration-ffi.yml +++ b/.github/workflows/integration-ffi.yml @@ -10,8 +10,8 @@ jobs: - uses: actions/checkout@v2 - name: Setup Rust toolchain run: | - rustup toolchain install stable - rustup default stable + rustup toolchain install 1.72.1 + rustup default 1.72.1 rustup component add rustfmt clippy - name: Cache Cargo uses: actions/cache@v2 diff --git a/.github/workflows/integration-odbc.yml b/.github/workflows/integration-odbc.yml deleted file mode 100644 index 2ee3bf096f2..00000000000 --- a/.github/workflows/integration-odbc.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Integration ODBC - -on: [push, pull_request] - -env: - CARGO_TERM_COLOR: always - -jobs: - linux: - name: Test - runs-on: ubuntu-latest - - services: - sqlserver: - image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu - ports: - - 1433:1433 - env: - ACCEPT_EULA: Y - SA_PASSWORD: My@Test@Password1 - - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Install ODBC Drivers - run: | - curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list - apt-get update - ACCEPT_EULA=Y apt-get install -y msodbcsql17 - ln -s /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.*.so.* /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.so - shell: sudo bash {0} - - name: Setup Rust toolchain - run: | - rustup toolchain install stable - rustup default stable - rustup component add rustfmt clippy - - uses: Swatinem/rust-cache@v1 - - name: Test - run: cd arrow-odbc-integration-testing && cargo test diff --git a/.github/workflows/integration-parquet.yml b/.github/workflows/integration-parquet.yml deleted file mode 100644 index 53a76d5b52f..00000000000 --- a/.github/workflows/integration-parquet.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Integration Parquet - -on: [push, pull_request] - -jobs: - docker: - name: Test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - name: Setup Rust toolchain - run: | - rustup toolchain install stable - rustup default stable - rustup component add rustfmt clippy - - name: Cache Cargo - uses: actions/cache@v2 - with: - path: /home/runner/.cargo - key: cargo-parquet-cache- - - name: Cache Rust dependencies - uses: actions/cache@v2 - with: - path: /home/runner/target - key: ${{ runner.os }}-amd64-target-parquet-cache - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Build - run: | - export CARGO_HOME="/home/runner/.cargo" - export CARGO_TARGET_DIR="/home/runner/target" - - cd arrow-parquet-integration-testing - - cargo build - - name: Run - run: | - export CARGO_HOME="/home/runner/.cargo" - export CARGO_TARGET_DIR="/home/runner/target" - - cd arrow-parquet-integration-testing - - python -m venv venv - source venv/bin/activate - pip install --upgrade pip - pip install pyarrow==8 pyspark==3 - python main.py - # test against spark - python main_spark.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9a9e91c2435..a2580f5dc18 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,10 +9,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - with: - submodules: true # needed to test IPC, which are located in a submodule - name: Install Rust - run: rustup update stable + run: rustup update 1.72.1 - name: Setup parquet files run: | apt update && apt install python3-pip python3-venv -y -q @@ -35,10 +33,8 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - with: - submodules: true # needed to test IPC, which are located in a submodule - name: Install Rust - run: rustup update stable + run: rustup update 1.72.1 - uses: Swatinem/rust-cache@v1 - name: Run shell: bash @@ -52,7 +48,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install Rust - run: rustup update stable + run: rustup update 1.72.1 - uses: Swatinem/rust-cache@v1 - name: Install clippy run: rustup component add clippy @@ -65,7 +61,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install Rust - run: rustup update stable + run: rustup update 1.72.1 - uses: Swatinem/rust-cache@v1 - name: Install rustfmt run: rustup component add rustfmt @@ -79,7 +75,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: - toolchain: nightly-2022-12-05 + toolchain: nightly override: true - uses: Swatinem/rust-cache@v1 with: @@ -98,11 +94,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - with: - submodules: true # needed to test IPC, which are located in a submodule - uses: actions-rs/toolchain@v1 with: - toolchain: nightly-2022-12-05 + toolchain: nightly override: true - uses: Swatinem/rust-cache@v1 with: @@ -121,7 +115,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: - toolchain: nightly-2022-12-05 + toolchain: nightly override: true - uses: Swatinem/rust-cache@v1 with: @@ -139,7 +133,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install Rust - run: rustup update stable + run: rustup update 1.72.1 - name: Setup all features run: cargo install cargo-all-features - uses: Swatinem/rust-cache@v1 @@ -158,15 +152,13 @@ jobs: - i686-unknown-linux-gnu - powerpc-unknown-linux-gnu - powerpc64-unknown-linux-gnu - - mips-unknown-linux-gnu + # - mips-unknown-linux-gnu - arm-linux-androideabi steps: - uses: actions/checkout@v2 - with: - submodules: true - uses: actions-rs/toolchain@v1 with: - toolchain: nightly-2022-12-05 + toolchain: nightly target: ${{ matrix.target }} override: true - uses: Swatinem/rust-cache@v1 @@ -174,7 +166,7 @@ jobs: with: use-cross: true command: check - args: --features=compute_merge_sort,io_ipc,io_csv,io_print,io_json,io_parquet --target ${{ matrix.target }} + args: --features=compute_merge_sort,io_ipc,io_csv,io_print,io_json --target ${{ matrix.target }} linux-simd-test: name: SIMD @@ -183,7 +175,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: - toolchain: nightly-2022-12-05 + toolchain: nightly override: true - uses: Swatinem/rust-cache@v1 - name: Run diff --git a/.gitignore b/.gitignore index c10f9e51df0..a5a306f937a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ target +target_ra target-tarpaulin venv lcov.info -Cargo.lock example.arrow fixtures settings.json diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 61a00f837c1..00000000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "testing/arrow-testing"] - path = testing/arrow-testing - url = https://github.com/apache/arrow-testing -[submodule "testing/parquet-testing"] - path = testing/parquet-testing - url = https://github.com/apache/parquet-testing diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000000..cc9510604a2 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3317 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +dependencies = [ + "cfg-if 1.0.0", + "const-random", + "getrandom 0.2.8", + "once_cell", + "version_check", + "zerocopy 0.7.32", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anyhow" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" + +[[package]] +name = "array-init-cursor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76" + +[[package]] +name = "arrow-array" +version = "49.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bda9acea48b25123c08340f3a8ac361aa0f74469bb36f5ee9acf923fce23e9d" +dependencies = [ + "ahash", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "half 2.2.1", + "hashbrown 0.14.3", + "num", +] + +[[package]] +name = "arrow-buffer" +version = "49.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01a0fc21915b00fc6c2667b069c1b64bdd920982f426079bc4a7cab86822886c" +dependencies = [ + "bytes", + "half 2.2.1", + "num", +] + +[[package]] +name = "arrow-data" +version = "49.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907fafe280a3874474678c1858b9ca4cb7fd83fb8034ff5b6d6376205a08c634" +dependencies = [ + "arrow-buffer", + "arrow-schema", + "half 2.2.1", + "num", +] + +[[package]] +name = "arrow-format" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07884ea216994cdc32a2d5f8274a8bee979cfe90274b83f86f440866ee3132c7" +dependencies = [ + "planus", + "prost 0.11.8", + "prost-derive 0.11.8", + "serde", +] + +[[package]] +name = "arrow-schema" +version = "49.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09e28a5e781bf1b0f981333684ad13f5901f4cd2f20589eab7cf1797da8fc167" + +[[package]] +name = "arrow2" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c468daea140b747d781a1da9f7db5f0a8e6636d4af20cc539e43d05b0604fa" +dependencies = [ + "ahash", + "bytemuck", + "chrono", + "dyn-clone", + "either", + "ethnum", + "foreign_vec", + "getrandom 0.2.8", + "hash_hasher", + "num-traits", + "rustc_version", + "simdutf8", +] + +[[package]] +name = "async-stream" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad445822218ce64be7a341abfb0b1ea43b5c23aa83902542a4542e78309d8e5e" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4655ae1a7b0cdf149156f780c5bf3f1352bc53cbd9e0a361a7ef7b22947e965" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-trait" +version = "0.1.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ea188f25f0255d8f92797797c97ebf5631fa88178beb1a46fdf5622c9a00e4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "avro-rs" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece550dd6710221de9bcdc1697424d8eee4fc4ca7e017479ea9d50c348465e37" +dependencies = [ + "byteorder", + "crc 1.8.1", + "digest", + "lazy_static", + "libflate", + "num-bigint 0.2.6", + "rand 0.7.3", + "serde", + "serde_json", + "snap 0.2.5", + "strum 0.18.0", + "strum_macros 0.18.0", + "thiserror", + "typed-builder", + "uuid", + "zerocopy 0.3.0", +] + +[[package]] +name = "avro-schema" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5281855b39aba9684d2f47bf96983fbfd8f1725f12fabb0513a8ab879647bbd" +dependencies = [ + "async-stream", + "crc 2.1.0", + "fallible-streaming-iterator", + "futures", + "libflate", + "serde", + "serde_json", + "snap 1.1.0", +] + +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "brotli" +version = "3.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" +dependencies = [ + "memchr", + "once_cell", + "regex-automata 0.1.10", + "serde", +] + +[[package]] +name = "build_const" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "calloop" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf2eec61efe56aa1e813f5126959296933cf0700030e4314786c48779a66ab82" +dependencies = [ + "log", + "nix 0.22.3", +] + +[[package]] +name = "casey" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614586263949597dcc18675da12ef9b429135e13628d92eb8b8c6fa50ca5656b" +dependencies = [ + "syn 1.0.109", +] + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.48.0", +] + +[[package]] +name = "chrono-tz" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9cc2b23599e6d7479755f3594285efb3f74a1bdca7a7374948bc831e23a552" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9998fb9f7e9b2111641485bf8beb32f92945f97f92a3d061f744cfef335f751" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + +[[package]] +name = "ciborium" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" + +[[package]] +name = "ciborium-ll" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +dependencies = [ + "ciborium-io", + "half 1.8.2", +] + +[[package]] +name = "clap" +version = "3.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +dependencies = [ + "bitflags", + "clap_lex", + "indexmap", + "textwrap", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "comfy-table" +version = "6.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e7b787b0dc42e8111badfdbe4c3059158ccb2db8780352fa1b01e8ccf45cc4d" +dependencies = [ + "strum 0.24.1", + "strum_macros 0.24.3", + "unicode-width", +] + +[[package]] +name = "const-random" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.8", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys 0.8.3", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + +[[package]] +name = "crc" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" +dependencies = [ + "build_const", +] + +[[package]] +name = "crc" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "criterion" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +dependencies = [ + "anes", + "atty", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset 0.8.0", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "csv" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-async" +version = "1.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71933d3f2d0481d5111cb2817b15b6961961458ec58adf8008194e6c850046f4" +dependencies = [ + "bstr", + "cfg-if 1.0.0", + "csv-core", + "futures", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "cxx" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.48", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +dependencies = [ + "libloading", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "dyn-clone" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "env_logger" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "ethnum" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0198b9d0078e0f30dedc7acbb21c974e838fc8fae3ee170128658a98cb2c1c04" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "flate2" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "force-send-sync" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d9188d4e883c054455b2c7950be30c54b11d7400f0a8562b74a4acd79c495b6" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +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 = "futures" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" + +[[package]] +name = "futures-executor" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" + +[[package]] +name = "futures-macro" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "futures-sink" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" + +[[package]] +name = "futures-task" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" + +[[package]] +name = "futures-util" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", + "num-traits", +] + +[[package]] +name = "hash_hasher" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74721d007512d0cb3338cd20f0654ac913920061a4c4d0d8708edb3f2a698c0c" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "iana-time-zone" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +dependencies = [ + "android_system_properties", + "core-foundation-sys 0.8.3", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-deserializer" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f63b421e16eb4100beb677af56f0b4f3a4f08bab74ef2af079ce5bb92c2683f" +dependencies = [ + "indexmap", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" + +[[package]] +name = "libflate" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97822bf791bd4d5b403713886a5fbe8bf49520fe78e323b0dc480ca1a03e50b0" +dependencies = [ + "adler32", + "crc32fast", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" +dependencies = [ + "rle-decode-fast", +] + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "libm" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" + +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "lz4" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "lz4_flex" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a8cbbb2831780bc3b9c15a41f5b49222ef756b6730a95f3decfdd15903eb5a3" +dependencies = [ + "twox-hash", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memmap2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +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.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "multiversion" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2c7b9d7fe61760ce5ea19532ead98541f6b4c495d87247aff9826445cf6872a" +dependencies = [ + "multiversion-macros", + "target-features", +] + +[[package]] +name = "multiversion-macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a83d8500ed06d68877e9de1dde76c1dbb83885dcdbda4ef44ccbc3fbda2ac8" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "target-features", +] + +[[package]] +name = "ndk" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-glue" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "libc", + "memoffset 0.6.5", +] + +[[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 = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint 0.4.3", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint 0.4.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "odbc-api" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d9ca44aa6e1cd7c7a64dc9eeff0fb918993e118b6c235f5844f05321c6ac13" +dependencies = [ + "force-send-sync", + "log", + "odbc-sys", + "thiserror", + "widestring", + "winit", +] + +[[package]] +name = "odbc-sys" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592c5c4ce58f47dde428c52b39904252191d25436b410cc232fae0813ff58f08" + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "orc-format" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a2dcf15f0a73c4fe33c622dec93adf95e05cb72d5b9a9af2bf51f3cc41f0b" +dependencies = [ + "fallible-streaming-iterator", + "flate2", + "prost 0.9.0", +] + +[[package]] +name = "os_str_bytes" +version = "6.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "parquet-format-safe" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f" +dependencies = [ + "async-trait", + "futures", +] + +[[package]] +name = "parquet2" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aefc53bedbf9bbe0ff8912befafaafe30ced83851fb0aebe86696a9289ebb29e" +dependencies = [ + "async-stream", + "brotli", + "flate2", + "futures", + "lz4", + "lz4_flex", + "parquet-format-safe", + "seq-macro", + "snap 1.1.0", + "streaming-decompression", + "xxhash-rust", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "parse-zoneinfo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +dependencies = [ + "regex", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "phf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56ac890c5e3ca598bbdeaa99964edb5b0258a583a9eb6ef4e89fc85d9224770" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_shared" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "planus" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1691dd09e82f428ce8d6310bd6d5da2557c82ff17694d2a32cad7242aea89f" +dependencies = [ + "array-init-cursor", +] + +[[package]] +name = "plotters" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f1b898011ce9595050a68e60f90bad083ff2987a695a42357134c8381fba70" +dependencies = [ + "bitflags", + "byteorder", + "lazy_static", + "num-traits", + "quick-error", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "regex-syntax 0.6.28", + "unarray", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive 0.9.0", +] + +[[package]] +name = "prost" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48e50df39172a3e7eb17e14642445da64996989bc212b583015435d39a58537" +dependencies = [ + "bytes", + "prost-derive 0.11.8", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-derive" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea9b0f8cbe5e15a8a042d030bd96668db28ecb567ec37d691971ff5731d2b1b" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quickcheck" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" +dependencies = [ + "env_logger", + "log", + "rand 0.8.5", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_regex" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a9fe2d7d9eeaf3279d1780452a5bbd26b31b27938787ef1c3e930d1e9cfbd" +dependencies = [ + "rand 0.8.5", + "regex-syntax 0.6.28", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "raw-window-handle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +dependencies = [ + "cty", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "re_arrow2" +version = "0.17.4" +dependencies = [ + "ahash", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-format", + "arrow-schema", + "async-stream", + "avro-rs", + "avro-schema", + "base64", + "bytemuck", + "chrono", + "chrono-tz", + "comfy-table", + "criterion", + "crossbeam-channel", + "csv", + "csv-async", + "csv-core", + "doc-comment", + "dyn-clone", + "either", + "ethnum", + "fallible-streaming-iterator", + "flate2", + "foreign_vec", + "futures", + "getrandom 0.2.8", + "hash_hasher", + "hashbrown 0.14.3", + "hex", + "indexmap", + "itertools", + "json-deserializer", + "lexical-core", + "lz4", + "memchr", + "multiversion", + "num-traits", + "odbc-api", + "orc-format", + "parquet2", + "proptest", + "rand 0.8.5", + "regex", + "regex-syntax 0.7.5", + "rustc_version", + "sample-arrow2", + "sample-std", + "sample-test", + "serde", + "serde_derive", + "serde_json", + "simdutf8", + "streaming-iterator", + "strength_reduce", + "tokio", + "tokio-util", + "zstd 0.12.3+zstd.1.5.2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rle-decode-fast" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "sample-arrow2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b557c2d798c04f6ce0ae365117c6dcc48554bd71149dd4d78129badbbc717ac" +dependencies = [ + "arrow2", + "sample-std", +] + +[[package]] +name = "sample-std" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567a153dc3302ce838920fb095c025a6d0529fff0290d25deeec2136e41a57c8" +dependencies = [ + "casey", + "quickcheck", + "rand 0.8.5", + "rand_regex", + "regex", +] + +[[package]] +name = "sample-test" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713e500947ff19fc1ae2805afa33ef45f3bb2ec656c77d92252d24cf9e3091b2" +dependencies = [ + "quickcheck", + "sample-std", + "sample-test-macros", +] + +[[package]] +name = "sample-test-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1a2c832a259aae95b6ed1da3aa377111ffde38d4282fa734faa3fff356534e" +dependencies = [ + "proc-macro2", + "quote", + "sample-std", + "syn 1.0.109", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "scratch" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" + +[[package]] +name = "seq-macro" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b44e8fc93a14e66336d230954dda83d18b4605ccace8fe09bc7514a71ad0bc" + +[[package]] +name = "serde" +version = "1.0.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "serde_json" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "smithay-client-toolkit" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a28f16a97fa0e8ce563b2774d1e732dd5d4025d2772c5dba0a41a0f90a29da3" +dependencies = [ + "bitflags", + "calloop", + "dlib", + "lazy_static", + "log", + "memmap2", + "nix 0.22.3", + "pkg-config", + "wayland-client", + "wayland-cursor", + "wayland-protocols", +] + +[[package]] +name = "snap" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95d697d63d44ad8b78b8d235bf85b34022a78af292c8918527c5f0cffdde7f43" +dependencies = [ + "byteorder", + "lazy_static", +] + +[[package]] +name = "snap" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum_macros" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "target-features" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24840de800c1707d75c800893dbd727a5e1501ce921944e602f0698167491e36" + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tokio" +version = "1.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +dependencies = [ + "autocfg", + "bytes", + "memchr", + "pin-project-lite", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" + +[[package]] +name = "toml_edit" +version = "0.19.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if 1.0.0", + "static_assertions", +] + +[[package]] +name = "typed-builder" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cea224ddd4282dfc40d1edabbd0c020a12e946e3a48e2c2b8f6ff167ad29fe" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.8", + "serde", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "wayland-client" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" +dependencies = [ + "bitflags", + "downcast-rs", + "libc", + "nix 0.24.3", + "scoped-tls", + "wayland-commons", + "wayland-scanner", + "wayland-sys", +] + +[[package]] +name = "wayland-commons" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" +dependencies = [ + "nix 0.24.3", + "once_cell", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-cursor" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" +dependencies = [ + "nix 0.24.3", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +dependencies = [ + "bitflags", + "wayland-client", + "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +dependencies = [ + "proc-macro2", + "quote", + "xml-rs", +] + +[[package]] +name = "wayland-sys" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" +dependencies = [ + "dlib", + "lazy_static", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +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", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winit" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "ndk", + "ndk-glue", + "ndk-sys", + "objc", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "smithay-client-toolkit", + "wasm-bindgen", + "wayland-client", + "wayland-protocols", + "web-sys", + "winapi", + "x11-dl", +] + +[[package]] +name = "winnow" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" +dependencies = [ + "memchr", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "xcursor" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +dependencies = [ + "nom", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" + +[[package]] +name = "xxhash-rust" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "735a71d46c4d68d71d4b24d03fdc2b98e38cea81730595801db779c04fe80d70" + +[[package]] +name = "zerocopy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6580539ad917b7c026220c4b3f2c08d52ce54d6ce0dc491e66002e35388fab46" +dependencies = [ + "byteorder", + "zerocopy-derive 0.2.0", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive 0.7.32", +] + +[[package]] +name = "zerocopy-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d498dbd1fd7beb83c86709ae1c33ca50942889473473d287d56ce4770a18edfb" +dependencies = [ + "proc-macro2", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.3+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806" +dependencies = [ + "zstd-safe 6.0.5+zstd.1.5.4", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "6.0.5+zstd.1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56d9e60b4b1758206c238a10165fbcae3ca37b01744e394c463463f6529d23b" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.7+zstd.1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94509c3ba2fe55294d752b79842c530ccfab760192521df74a081a78d2b3c7f5" +dependencies = [ + "cc", + "libc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index a8e5933d2fe..a246f702222 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,17 +1,22 @@ [package] -name = "arrow2" +name = "re_arrow2" version = "0.17.4" license = "Apache-2.0" description = "Unofficial implementation of Apache Arrow spec in safe Rust" -homepage = "https://github.com/jorgecarleitao/arrow2" -repository = "https://github.com/jorgecarleitao/arrow2" -authors = ["Jorge C. Leitao ", "Apache Arrow "] +homepage = "https://github.com/rerun-io/re_arrow2" +repository = "https://github.com/rerun-io/re_arrow2" +authors = [ + "Rerun.io ", + "Jorge C. Leitao ", + "Apache Arrow ", +] keywords = ["arrow", "analytics"] edition = "2021" +rust-version = "1.72" exclude = ["testing/"] [lib] -name = "arrow2" +name = "re_arrow2" bench = false [dependencies] @@ -51,7 +56,9 @@ regex-syntax = { version = "0.7", optional = true } streaming-iterator = { version = "0.1", optional = true } fallible-streaming-iterator = { version = "0.1", optional = true } -json-deserializer = { version = "0.4.4", optional = true, features = ["preserve_order"] } +json-deserializer = { version = "0.4.4", optional = true, features = [ + "preserve_order", +] } indexmap = { version = "^1.6", optional = true } # used to print columns in a nice columnar format @@ -86,7 +93,9 @@ orc-format = { version = "0.3.0", optional = true } # Arrow integration tests support serde = { version = "^1.0", features = ["rc"], optional = true } serde_derive = { version = "^1.0", optional = true } -serde_json = { version = "^1.0", features = ["preserve_order"], optional = true } +serde_json = { version = "^1.0", features = [ + "preserve_order", +], optional = true } # for division/remainder optimization at runtime strength_reduce = { version = "0.2", optional = true } @@ -138,7 +147,7 @@ sample-test = "0.1" # ugly hack needed to match this library in sample_arrow2 [patch.crates-io] -arrow2 = { path = "." } +re_arrow2 = { path = "." } [package.metadata.docs.rs] features = ["full"] @@ -148,7 +157,7 @@ rustdoc-args = ["--cfg", "docsrs"] default = [] full = [ "arrow", - "io_odbc", + # "io_odbc", "io_csv", "io_csv_async", "io_json", @@ -159,8 +168,8 @@ full = [ "io_ipc_compression", "io_json_integration", "io_print", - "io_parquet_async", - "io_parquet_compression", + # "io_parquet_async", + # "io_parquet_compression", "io_avro", "io_orc", "io_avro_compression", @@ -180,7 +189,11 @@ io_csv_read_async = ["csv-async", "lexical-core", "futures"] io_csv_write = ["csv-core", "streaming-iterator", "lexical-core"] io_json = ["io_json_read", "io_json_write"] io_json_read = ["json-deserializer", "indexmap", "lexical-core"] -io_json_write = ["streaming-iterator", "fallible-streaming-iterator", "lexical-core"] +io_json_write = [ + "streaming-iterator", + "fallible-streaming-iterator", + "lexical-core", +] io_ipc = ["arrow-format"] io_ipc_write_async = ["io_ipc", "futures"] io_ipc_read_async = ["io_ipc", "futures", "async-stream"] @@ -188,35 +201,39 @@ io_ipc_compression = ["lz4", "zstd"] io_flight = ["io_ipc", "arrow-format/flight-data"] # base64 + io_ipc because arrow schemas are stored as base64-encoded ipc format. -io_parquet = ["parquet2", "io_ipc", "base64", "streaming-iterator", "fallible-streaming-iterator"] -io_parquet_async = ["futures", "io_parquet", "parquet2/async"] +io_parquet = [ + "parquet2", + "io_ipc", + "base64", + "streaming-iterator", + "fallible-streaming-iterator", +] +io_parquet_async = ["futures", "io_parquet", "parquet2?/async"] io_parquet_compression = [ "io_parquet_zstd", "io_parquet_gzip", "io_parquet_snappy", "io_parquet_lz4", - "io_parquet_brotli" + "io_parquet_brotli", ] # sample testing of generated arrow data io_parquet_sample_test = ["io_parquet_async"] # compression backends -io_parquet_zstd = ["parquet2/zstd"] -io_parquet_snappy = ["parquet2/snappy"] -io_parquet_gzip = ["parquet2/gzip"] -io_parquet_lz4_flex = ["parquet2/lz4_flex"] -io_parquet_lz4 = ["parquet2/lz4"] -io_parquet_brotli = ["parquet2/brotli"] +io_parquet_zstd = ["parquet2?/zstd"] +io_parquet_snappy = ["parquet2?/snappy"] +io_parquet_gzip = ["parquet2?/gzip"] +io_parquet_lz4_flex = ["parquet2?/lz4_flex"] +io_parquet_lz4 = ["parquet2?/lz4"] +io_parquet_brotli = ["parquet2?/brotli"] # parquet bloom filter functions -io_parquet_bloom_filter = ["parquet2/bloom_filter"] +io_parquet_bloom_filter = ["parquet2?/bloom_filter"] io_avro = ["avro-schema", "streaming-iterator"] -io_avro_compression = [ - "avro-schema/compression", -] +io_avro_compression = ["avro-schema/compression"] io_avro_async = ["avro-schema/async"] io_orc = ["orc-format"] @@ -277,7 +294,7 @@ compute = [ "compute_take", "compute_temporal", "compute_utf8", - "compute_window" + "compute_window", ] benchmarks = ["rand"] serde_types = ["serde", "serde_derive"] @@ -322,14 +339,6 @@ name = "comparison_kernels" harness = false -[[bench]] -name = "read_parquet" -harness = false - -[[bench]] -name = "write_parquet" -harness = false - [[bench]] name = "aggregate" harness = false @@ -401,4 +410,3 @@ harness = false [[bench]] name = "like_kernels" harness = false - diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 23ed2664e01..1afaff592b4 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -4,13 +4,6 @@ This crate follows the standard for developing a Rust library via `cargo`. The CI is our "ground truth" over the state of the library. Check out the different parts of the CI to understand how to test the different parts of this library locally. -## Git clone with submodules -The crate comes with additional submodules to aid with testing, to ensure you have them if you plan on testing, using `--recurse-submodules` will clone the submodules alongside the repository. - -```bash -git clone --recurse-submodules https://github.com/jorgecarleitao/arrow2 -``` - ## Checks PRs will run the following checks: @@ -22,7 +15,7 @@ cargo clippy --all --features=full --tests -- -D warnings ## Testing -The simplest way to test the crate is to run +The simplest way to test the crate is to run ```bash cargo test --tests @@ -62,14 +55,6 @@ python tests/it/io/orc/write.py deactivate ``` -If you receive warnings about other files not found (IPC), ensure you have all submodules: -```bash -# If you didn't clone with `git clone --recurse-submodules https://github.com/jorgecarleitao/arrow2` -git submodule update --init --recursive - -# Update to the latest submodules -git submodule update --recursive --remote -``` during development of particular parts of the crate, it is usually faster to reduce the feature set - the tests are gated to only the relevant tests @@ -91,7 +76,7 @@ an issue, we favor having the PR on the changelog, since it includes a reference the author (credits). Summary: -* pull requests with both backward-incompatible changes and new +* pull requests with both backward-incompatible changes and new features/enhancements MUST close at least one issue (the one documenting the backward-incompatible change) * Every other pull request MAY close one issue diff --git a/README.md b/README.md index 0c4e428b57b..55cfe4d2c60 100644 --- a/README.md +++ b/README.md @@ -1,131 +1,6 @@ -# Arrow2: Transmute-free Arrow - -[![test](https://github.com/jorgecarleitao/arrow2/actions/workflows/test.yml/badge.svg)](https://github.com/jorgecarleitao/arrow2/actions/workflows/Build.yml) -[![codecov](https://codecov.io/gh/jorgecarleitao/arrow2/branch/main/graph/badge.svg?token=AgyTF60R3D)](https://codecov.io/gh/jorgecarleitao/arrow2) -[![](https://img.shields.io/crates/d/arrow2.svg)](https://crates.io/crates/arrow2) -[![](https://img.shields.io/crates/dv/arrow2.svg)](https://crates.io/crates/arrow2) -[![](https://docs.rs/arrow2/badge.svg)](https://docs.rs/arrow2/) - -A Rust crate to work with [Apache Arrow](https://arrow.apache.org/). -The most feature-complete implementation of the Arrow format after the C++ -implementation. - -Check out [the guide](https://jorgecarleitao.github.io/arrow2/main/guide) -for a general introduction on how to use this crate, and -[API docs](https://jorgecarleitao.github.io/arrow2/main/docs/arrow2) -for a detailed documentation of each of its APIs. - -## Features - -* Most feature-complete implementation of Apache Arrow after the reference implementation (C++) - * Decimal 256 unsupported (not a Rust native type) -* C data interface supported for all Arrow types (read and write) -* C stream interface supported for all Arrow types (read and write) -* Full interoperability with Rust's `Vec` -* MutableArray API to work with bitmaps and arrays in-place -* Full support for timestamps with timezones, including arithmetics that take - timezones into account -* Support to read from, and write to: - * CSV - * Apache Arrow IPC (all types) - * Apache Arrow Flight (all types) - * Apache Parquet (except deep nested types) - * Apache Avro (all types) - * NJSON - * ODBC (some types) -* Extensive suite of compute operations - * aggregations - * arithmetics - * cast - * comparison - * sort and merge-sort - * boolean (AND, OR, etc) and boolean kleene - * filter, take - * hash - * if-then-else - * nullif - * temporal (day, month, week day, hour, etc.) - * window - * ... and more ... -* Extensive set of cargo feature flags to reduce compilation time and binary size -* Fully-decoupled IO between CPU-bounded and IO-bounded tasks, allowing - this crate to both be used in `async` contexts without blocking and leverage parallelism -* Fastest known implementation of Avro and Parquet (e.g. faster than the official - C++ implementations) - -## Safety and Security - -This crate uses `unsafe` when strictly necessary: -* when the compiler can't prove certain invariants and -* FFI - -We have extensive tests over these, all of which run and pass under MIRI. -Most uses of `unsafe` fall into 3 categories: - -* The Arrow format has invariants over UTF-8 that can't be written in safe Rust -* `TrustedLen` and trait specialization are still nightly features -* FFI - -We actively monitor for vulnerabilities in Rust's advisory and either patch or mitigate -them (see e.g. `.cargo/audit.yaml` and `.github/workflows/security.yaml`). - -Reading from untrusted data currently _may_ `panic!` on the following formats: - -* Apache Parquet -* Apache Avro - -We are actively addressing this. - -## Integration tests - -Our tests include roundtrip against: -* Apache Arrow IPC (both little and big endian) generated by C++, Java, Go, C# and JS - implementations. -* Apache Parquet format (in its different configurations) generated by Arrow's C++ and - Spark's implementation -* Apache Avro generated by the official Rust Avro implementation - -Check [DEVELOPMENT.md](DEVELOPMENT.md) for our development practices. - -## Versioning - -We use the SemVer 2.0 used by Cargo and the remaining of the Rust ecosystem, -we also use the `0.x.y` versioning, since we are iterating over the API. - -## Design - -This repo and crate's primary goal is to offer a safe Rust implementation of the Arrow specification. -As such, it - -* MUST NOT implement any logical type other than the ones defined on the arrow specification, [schema.fbs](https://github.com/apache/arrow/blob/master/format/Schema.fbs). -* MUST lay out memory according to the [arrow specification](https://arrow.apache.org/docs/format/Columnar.html) -* MUST support reading from and writing to the [C data interface](https://arrow.apache.org/docs/format/CDataInterface.html) at zero-copy. -* MUST support reading from, and writing to, the [IPC specification](https://arrow.apache.org/docs/python/ipc.html), which it MUST verify against golden files available [here](https://github.com/apache/arrow-testing). - -Design documents about each of the parts of this repo are available on their respective READMEs. - -## FAQ - -### Any plans to merge with the Apache Arrow project? - -Maybe. The primary reason to have this repo and crate is to be able to prototype -and mature using a fundamentally different design based on a transmute-free -implementation. This requires breaking backward compatibility and loss of -features that is impossible to achieve on the Arrow repo. - -Furthermore, the arrow project currently has a release mechanism that is -unsuitable for this type of work: - -* A release of the Apache consists of a release of all implementations of the - arrow format at once, with the same version. It is currently at `5.0.0`. - -This implies that the crate version is independent of the changelog or its API stability, -which violates SemVer. This procedure makes the crate incompatible with -Rust's (and many others') ecosystem that heavily relies on SemVer to constraint -software versions. - -Secondly, this implies the arrow crate is versioned as `>0.x`. This places -expectations about API stability that are incompatible with this effort. +# `re_arrow2` - a fork of +The eco-system is moving to , so we suggest you use that instead. +We are planning on switching to `arrow` in the future as well. ## License @@ -135,7 +10,3 @@ Licensed under either of * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. - -### Contribution - -Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. diff --git a/arrow-odbc-integration-testing/Cargo.toml b/arrow-odbc-integration-testing/Cargo.toml index add16ba5d2d..5fb2f8ec10b 100644 --- a/arrow-odbc-integration-testing/Cargo.toml +++ b/arrow-odbc-integration-testing/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Jorge C. Leitao "] edition = "2021" [dependencies] -arrow2 = { path = "../", default-features = false, features = ["io_odbc"] } +re_arrow2 = { path = "../", default-features = false, features = ["io_odbc"] } lazy_static = "1.4.0" # Function name macro is used to ensure unique table names in test stdext = "0.3.1" diff --git a/arrow-parquet-integration-testing/.gitignore b/arrow-parquet-integration-testing/.gitignore deleted file mode 100644 index 47693803088..00000000000 --- a/arrow-parquet-integration-testing/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -target -target-tarpaulin -venv -lcov.info -Cargo.lock -fixtures -settings.json -*.parquet diff --git a/arrow-parquet-integration-testing/Cargo.toml b/arrow-parquet-integration-testing/Cargo.toml deleted file mode 100644 index 570bd8fa6f9..00000000000 --- a/arrow-parquet-integration-testing/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "arrow-parquet-integration-testing" -version = "0.1.0" -authors = ["Jorge C. Leitao "] -edition = "2021" - -[dependencies] -clap = { version = "^3", features = ["derive"] } -arrow2 = { path = "../", default-features = false, features = ["io_parquet", "io_json_integration", "io_parquet_compression"] } -flate2 = "^1" -serde = { version = "^1.0", features = ["rc"] } -serde_derive = { version = "^1.0" } -serde_json = { version = "^1.0", features = ["preserve_order"] } diff --git a/arrow-parquet-integration-testing/main.py b/arrow-parquet-integration-testing/main.py deleted file mode 100644 index a880af617d8..00000000000 --- a/arrow-parquet-integration-testing/main.py +++ /dev/null @@ -1,108 +0,0 @@ -import subprocess -import os - -import pyarrow.ipc -import pyarrow.parquet as pq - - -def get_file_path(file: str): - return f"../testing/arrow-testing/data/arrow-ipc-stream/integration/1.0.0-littleendian/{file}.arrow_file" - - -def _prepare( - file: str, - version: str, - compression: str, - encoding_utf8: str, - encoding_int: str, - projection=None, -): - write = f"{file}.parquet" - - args = [ - "cargo", - "run", - "--", - "--json", - file, - "--output", - write, - "--version", - version, - "--encoding-utf8", - encoding_utf8, - "--encoding-int", - encoding_int, - "--compression", - compression, - ] - - if projection: - projection = list(map(str, projection)) - args += ["--projection", ",".join(projection)] - - subprocess.call(args) - return write - - -def _expected(file: str) -> pyarrow.Table: - return pyarrow.ipc.RecordBatchFileReader(get_file_path(file)).read_all() - - -# types without a native parquet logical representation -# There is currently no specification on how to represent these in parquet, -# and thus we ignore them in comparisons -non_native_types = [ - pyarrow.date64(), - pyarrow.time32("s"), - pyarrow.timestamp("s"), - # the issue here is the second, not the tz - pyarrow.timestamp("s", tz="UTC"), -] - - -def variations(): - for version in ["1", "2"]: - for file in [ - "generated_primitive", - "generated_primitive_no_batches", - "generated_primitive_zerolength", - "generated_null", - "generated_null_trivial", - "generated_primitive_large_offsets", - "generated_datetime", - "generated_decimal", - "generated_interval", - # see https://issues.apache.org/jira/browse/ARROW-13486 and - # https://issues.apache.org/jira/browse/ARROW-13487 - # "generated_dictionary", - # requires writing Struct - # "generated_duplicate_fieldnames", - # requires writing un-nested List - # "generated_custom_metadata", - ]: - # pyarrow does not support decoding "delta"-encoded values. - for encoding_int in ["plain", "delta"]: - if encoding_int == "delta" and file in {"generated_primitive", "generated_null"}: - # see https://issues.apache.org/jira/browse/ARROW-17465 - continue - - for compression in ["uncompressed", "zstd", "snappy"]: - yield (version, file, compression, "plain", encoding_int) - - -if __name__ == "__main__": - for (version, file, compression, encoding_utf8, encoding_int) in variations(): - expected = _expected(file) - path = _prepare(file, version, compression, encoding_utf8, encoding_int) - - table = pq.read_table(path) - os.remove(path) - - for c1, c2 in zip(expected, table): - if c1.type in non_native_types: - continue - if str(c1.type) in ["month_interval", "day_time_interval"]: - # pyarrow does not support interval types from parquet - continue - assert c1 == c2, (c1, c2) diff --git a/arrow-parquet-integration-testing/main_spark.py b/arrow-parquet-integration-testing/main_spark.py deleted file mode 100644 index e29655fb46b..00000000000 --- a/arrow-parquet-integration-testing/main_spark.py +++ /dev/null @@ -1,70 +0,0 @@ -""" -Verifies that spark can correctly read a delta-encoded utf8 column written by arrow2. -""" -import os -import pyspark.sql - -from main import _prepare, _expected - - -def test( - file: str, - version: str, - column: str, - compression: str, - encoding: str, -): - """ - Tests that pyspark can read a parquet file written by arrow2. - - In arrow2: read IPC, write parquet - In pyarrow: read (same) IPC to Python - In pyspark: read (written) parquet to Python - assert that they are equal - """ - # read IPC to Python - expected = _expected(file) - column_index = next(i for i, c in enumerate(expected.column_names) if c == column) - expected = expected[column].combine_chunks().tolist() - - # write parquet - path = _prepare(file, version, compression, encoding, encoding, [column_index]) - - # read parquet to Python - spark = pyspark.sql.SparkSession.builder.config( - # see https://stackoverflow.com/a/62024670/931303 - "spark.sql.parquet.enableVectorizedReader", - "false", - ).getOrCreate() - - result = spark.read.parquet(path).select(column).collect() - result = [r[column] for r in result] - os.remove(path) - - # assert equality - assert expected == result - - -test("generated_null", "2", "f1", "uncompressed", "delta") - -test("generated_primitive", "2", "utf8_nullable", "uncompressed", "delta") -test("generated_primitive", "2", "utf8_nullable", "snappy", "delta") -test("generated_primitive", "2", "int32_nullable", "uncompressed", "delta") -test("generated_primitive", "2", "int32_nullable", "snappy", "delta") -test("generated_primitive", "2", "int16_nullable", "uncompressed", "delta") -test("generated_primitive", "2", "int16_nullable", "snappy", "delta") - -test("generated_dictionary", "1", "dict0", "uncompressed", "plain") -test("generated_dictionary", "1", "dict0", "snappy", "plain") -test("generated_dictionary", "2", "dict0", "uncompressed", "plain") -test("generated_dictionary", "2", "dict0", "snappy", "plain") - -test("generated_dictionary", "1", "dict1", "uncompressed", "plain") -test("generated_dictionary", "1", "dict1", "snappy", "plain") -test("generated_dictionary", "2", "dict1", "uncompressed", "plain") -test("generated_dictionary", "2", "dict1", "snappy", "plain") - -test("generated_dictionary", "1", "dict2", "uncompressed", "plain") -test("generated_dictionary", "1", "dict2", "snappy", "plain") -test("generated_dictionary", "2", "dict2", "uncompressed", "plain") -test("generated_dictionary", "2", "dict2", "snappy", "plain") diff --git a/arrow-pyarrow-integration-testing/Cargo.toml b/arrow-pyarrow-integration-testing/Cargo.toml index 009dc24d7e8..e686bd934e4 100644 --- a/arrow-pyarrow-integration-testing/Cargo.toml +++ b/arrow-pyarrow-integration-testing/Cargo.toml @@ -18,7 +18,10 @@ [package] name = "arrow-pyarrow-integration-testing" version = "0.0.0" -authors = ["Jorge C. Leitao ", "Apache Arrow "] +authors = [ + "Jorge C. Leitao ", + "Apache Arrow ", +] license = "Apache-2.0" edition = "2021" @@ -27,7 +30,7 @@ name = "arrow_pyarrow_integration_testing" crate-type = ["cdylib"] [dependencies] -arrow2 = { path = "../", default-features = false } +re_arrow2 = { path = "../", default-features = false } pyo3 = { version = "0.14", features = ["extension-module"] } [package.metadata.maturin] diff --git a/guide/src/high_level.md b/guide/src/high_level.md index 008bdd83dbe..d706be8d0be 100644 --- a/guide/src/high_level.md +++ b/guide/src/high_level.md @@ -9,7 +9,7 @@ Probably the simplest `Array` in this crate is the `PrimitiveArray`. It can b constructed from a slice of option values, ```rust -# use arrow2::array::{Array, PrimitiveArray}; +# use re_arrow2::array::{Array, PrimitiveArray}; # fn main() { let array = PrimitiveArray::::from([Some(1), None, Some(123)]); assert_eq!(array.len(), 3) @@ -19,7 +19,7 @@ assert_eq!(array.len(), 3) from a slice of values, ```rust -# use arrow2::array::{Array, PrimitiveArray}; +# use re_arrow2::array::{Array, PrimitiveArray}; # fn main() { let array = PrimitiveArray::::from_slice([1.0, 0.0, 123.0]); assert_eq!(array.len(), 3) @@ -29,7 +29,7 @@ assert_eq!(array.len(), 3) or from an iterator ```rust -# use arrow2::array::{Array, PrimitiveArray}; +# use re_arrow2::array::{Array, PrimitiveArray}; # fn main() { let array: PrimitiveArray = [Some(1), None, Some(123)].iter().collect(); assert_eq!(array.len(), 3) @@ -52,8 +52,8 @@ The first allows interoperability with Arrow's ecosystem and efficient SIMD oper In the example ```rust -# use arrow2::array::PrimitiveArray; -# use arrow2::datatypes::DataType; +# use re_arrow2::array::PrimitiveArray; +# use re_arrow2::datatypes::DataType; # fn main() { let ints = PrimitiveArray::::from([Some(1), None]); let dates = PrimitiveArray::::from([Some(1), None]).to(DataType::Date32); @@ -67,8 +67,8 @@ All physical types (e.g. `i32`) have a "natural" logical `DataType` (e.g. `DataT which is assigned when allocating arrays from iterators, slices, etc. ```rust -# use arrow2::array::{Array, Int32Array, PrimitiveArray}; -# use arrow2::datatypes::DataType; +# use re_arrow2::array::{Array, Int32Array, PrimitiveArray}; +# use re_arrow2::datatypes::DataType; # fn main() { let array = PrimitiveArray::::from_slice([1, 0, 123]); assert_eq!(array.data_type(), &DataType::Int32); @@ -96,7 +96,7 @@ The following arrays are supported: to `&dyn Array`, which enables dynamic casting and run-time nesting. ```rust -# use arrow2::array::{Array, PrimitiveArray}; +# use re_arrow2::array::{Array, PrimitiveArray}; # fn main() { let a = PrimitiveArray::::from(&[Some(1), None]); let a: &dyn Array = &a; @@ -110,8 +110,8 @@ Given a trait object `array: &dyn Array`, we know its physical type via to its concrete physical type: ```rust -# use arrow2::array::{Array, PrimitiveArray}; -# use arrow2::datatypes::PhysicalType; +# use re_arrow2::array::{Array, PrimitiveArray}; +# use re_arrow2::datatypes::PhysicalType; # fn main() { let array = PrimitiveArray::::from(&[Some(1), None]); let array = &array as &dyn Array; @@ -144,8 +144,8 @@ where `_` represents each of the variants (e.g. `PrimitiveType::Int32 <-> i32`). In this context, a common idiom in using `Array` as a trait object is as follows: ```rust -use arrow2::datatypes::{PhysicalType, PrimitiveType}; -use arrow2::array::{Array, PrimitiveArray}; +use re_arrow2::datatypes::{PhysicalType, PrimitiveType}; +use re_arrow2::array::{Array, PrimitiveArray}; fn float_operator(array: &dyn Array) -> Result, String> { match array.data_type().to_physical_type() { @@ -193,7 +193,7 @@ We've already seen how to create an array from an iterator. Most arrays also imp `IntoIterator`: ```rust -# use arrow2::array::{Array, Int32Array}; +# use re_arrow2::array::{Array, Int32Array}; # fn main() { let array = Int32Array::from(&[Some(1), None, Some(123)]); @@ -219,7 +219,7 @@ validity and values, while the latter is suitable for SIMD and copies, as they r contiguous memory regions (buffers and bitmaps). We will see below how to leverage these APIs. This idea holds more generally in this crate's arrays: `values()` returns something that has -a contiguous in-memory representation, while `iter()` returns items taking validity into account. +a contiguous in-memory representation, while `iter()` returns items taking validity into account. To get an iterator over contiguous values, use `array.values().iter()`. There is one last API that is worth mentioning, and that is `Bitmap::chunks`. When performing @@ -236,8 +236,8 @@ it often enables SIMD. For example, an unary operation `op` on a `PrimitiveArray likely emits SIMD instructions on the following code: ```rust -# use arrow2::buffer::Buffer; -# use arrow2::{ +# use re_arrow2::buffer::Buffer; +# use re_arrow2::{ # array::{Array, PrimitiveArray}, # types::NativeType, # datatypes::DataType, @@ -275,7 +275,7 @@ We support the mutation of arrays in-place via clone-on-write semantics. Essentially, all data is under an `Arc`, but it can be taken via `Arc::get_mut` and operated in place. -Below is a complete example of how to operate on a `Box` without +Below is a complete example of how to operate on a `Box` without extra allocations. ```rust,ignore diff --git a/guide/src/low_level.md b/guide/src/low_level.md index 83fa0f08bf1..6ca90923a02 100644 --- a/guide/src/low_level.md +++ b/guide/src/low_level.md @@ -28,7 +28,7 @@ Let's see how these structures are used. Create a new `Buffer`: ```rust -# use arrow2::buffer::Buffer; +# use re_arrow2::buffer::Buffer; # fn main() { let x = vec![1u32, 2, 3]; let x: Buffer = x.into(); @@ -45,8 +45,8 @@ the following physical types: * `i8-i128` * `u8-u64` * `f32` and `f64` -* `arrow2::types::days_ms` -* `arrow2::types::months_days_ns` +* `re_arrow2::types::days_ms` +* `re_arrow2::types::months_days_ns` This is because the arrow specification only supports the above Rust types; all other complex types supported by arrow are built on top of these types, which enables Arrow to be a highly @@ -57,7 +57,7 @@ interoperable in-memory format. Arrow's in-memory arrangement of boolean values is different from `Vec`. Specifically, arrow uses individual bits to represent a boolean, as opposed to the usual byte that `bool` holds. -Besides the 8x compression, this makes the validity particularly useful for +Besides the 8x compression, this makes the validity particularly useful for [AVX512](https://en.wikipedia.org/wiki/AVX-512) masks. One tradeoff is that an arrows' bitmap is not represented as a Rust slice, as Rust slices use pointer arithmetics, whose smallest unit is a byte. @@ -66,7 +66,7 @@ Arrow2 has two containers for bitmaps: `Bitmap` (immutable and sharable) and `MutableBitmap` (mutable): ```rust -use arrow2::bitmap::Bitmap; +use re_arrow2::bitmap::Bitmap; # fn main() { let x = Bitmap::from(&[true, false]); let iter = x.iter().map(|x| !x); @@ -77,7 +77,7 @@ assert_eq!(y.get_bit(1), true); ``` ```rust -use arrow2::bitmap::MutableBitmap; +use re_arrow2::bitmap::MutableBitmap; # fn main() { let mut x = MutableBitmap::new(); x.push(true); diff --git a/guide/src/metadata.md b/guide/src/metadata.md index 7a78d82edac..026ef1d5cc9 100644 --- a/guide/src/metadata.md +++ b/guide/src/metadata.md @@ -9,7 +9,7 @@ The Arrow specification contains a set of logical types, an enumeration of the different semantical types defined in Arrow. -In Arrow2, logical types are declared as variants of the `enum` `arrow2::datatypes::DataType`. +In Arrow2, logical types are declared as variants of the `enum` `re_arrow2::datatypes::DataType`. For example, `DataType::Int32` represents a signed integer of 32 bits. Each `DataType` has an associated `enum PhysicalType` (many-to-one) representing the @@ -29,7 +29,7 @@ nullable (`bool`), and optional metadata. ## `Schema` (table metadata) -The most common use of `Field` is to declare a `arrow2::datatypes::Schema`, a sequence of `Field`s +The most common use of `Field` is to declare a `re_arrow2::datatypes::Schema`, a sequence of `Field`s with optional metadata. `Schema` is essentially metadata of a "table": it has a sequence of named columns and their metadata (`Field`s) with optional metadata. diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 904c6cc5fcb..7e8f0a9aabf 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "nightly-2023-06-01" +channel = "1.72" diff --git a/src/array/boolean/mod.rs b/src/array/boolean/mod.rs index cd7f040b88c..2def39750b9 100644 --- a/src/array/boolean/mod.rs +++ b/src/array/boolean/mod.rs @@ -19,7 +19,6 @@ mod from; mod iterator; mod mutable; -pub use iterator::*; pub use mutable::*; /// A [`BooleanArray`] is Arrow's semantically equivalent of an immutable `Vec>`. diff --git a/src/array/fixed_size_list/mod.rs b/src/array/fixed_size_list/mod.rs index 9af967a06d3..edd8e1968c7 100644 --- a/src/array/fixed_size_list/mod.rs +++ b/src/array/fixed_size_list/mod.rs @@ -13,7 +13,6 @@ mod data; mod ffi; pub(super) mod fmt; mod iterator; -pub use iterator::*; mod mutable; pub use mutable::*; diff --git a/src/array/map/mod.rs b/src/array/map/mod.rs index 952695297fa..3668c425fa1 100644 --- a/src/array/map/mod.rs +++ b/src/array/map/mod.rs @@ -12,7 +12,6 @@ mod data; mod ffi; pub(super) mod fmt; mod iterator; -pub use iterator::*; /// An array representing a (key, value), both of arbitrary logical types. #[derive(Clone)] diff --git a/src/array/mod.rs b/src/array/mod.rs index 02735c3d0bb..4807b12b61b 100644 --- a/src/array/mod.rs +++ b/src/array/mod.rs @@ -25,7 +25,7 @@ use crate::{ datatypes::DataType, }; -pub(self) mod physical_binary; +mod physical_binary; /// A trait representing an immutable Arrow array. Arrow arrays are trait objects /// that are infallibly downcasted to concrete types according to the [`Array::data_type`]. diff --git a/src/array/primitive/fmt.rs b/src/array/primitive/fmt.rs index 05357ef5876..0108cc646af 100644 --- a/src/array/primitive/fmt.rs +++ b/src/array/primitive/fmt.rs @@ -15,7 +15,11 @@ macro_rules! dyn_primitive { .as_any() .downcast_ref::>() .unwrap(); - Box::new(move |f, index| write!(f, "{}", $expr(array.value(index)))) + Box::new(move |f, index| { + #[allow(clippy::redundant_closure_call)] + let value = $expr(array.value(index)); + write!(f, "{}", value) + }) }}; } diff --git a/src/array/primitive/mod.rs b/src/array/primitive/mod.rs index eb52ea3d5dd..1b6fdc04c9f 100644 --- a/src/array/primitive/mod.rs +++ b/src/array/primitive/mod.rs @@ -19,7 +19,6 @@ mod ffi; pub(super) mod fmt; mod from_natural; mod iterator; -pub use iterator::*; mod mutable; pub use mutable::*; diff --git a/src/buffer/mod.rs b/src/buffer/mod.rs index 46c0a4d64a3..ba50325cd04 100644 --- a/src/buffer/mod.rs +++ b/src/buffer/mod.rs @@ -7,6 +7,7 @@ use crate::ffi::InternalArrowArray; use std::ops::Deref; pub(crate) enum BytesAllocator { + #[allow(dead_code)] InternalArrowArray(InternalArrowArray), #[cfg(feature = "arrow")] diff --git a/src/compute/aggregate/min_max.rs b/src/compute/aggregate/min_max.rs index 7b88f510003..17cb7640788 100644 --- a/src/compute/aggregate/min_max.rs +++ b/src/compute/aggregate/min_max.rs @@ -1,3 +1,5 @@ +#![allow(clippy::redundant_closure_call)] + use crate::bitmap::utils::{BitChunkIterExact, BitChunksExact}; use crate::datatypes::{DataType, PhysicalType, PrimitiveType}; use crate::error::{Error, Result}; diff --git a/src/compute/aggregate/simd/packed.rs b/src/compute/aggregate/simd/packed.rs index c3ee4ffcf32..809bac7a58f 100644 --- a/src/compute/aggregate/simd/packed.rs +++ b/src/compute/aggregate/simd/packed.rs @@ -1,4 +1,4 @@ -use std::simd::{SimdFloat as _, SimdInt as _, SimdOrd as _, SimdUint as _}; +use std::simd::prelude::*; use crate::types::simd::*; @@ -35,31 +35,37 @@ macro_rules! simd_ord_int { #[inline] fn max_element(self) -> $type { + use std::simd::prelude::*; self.reduce_max() } #[inline] fn min_element(self) -> $type { + use std::simd::prelude::*; self.reduce_min() } #[inline] fn max_lane(self, x: Self) -> Self { + use std::simd::prelude::*; self.simd_max(x) } #[inline] fn min_lane(self, x: Self) -> Self { + use std::simd::prelude::*; self.simd_min(x) } #[inline] fn new_min() -> Self { + use std::simd::prelude::*; Self::splat(Self::MAX) } #[inline] fn new_max() -> Self { + use std::simd::prelude::*; Self::splat(Self::MIN) } } diff --git a/src/compute/comparison/simd/packed.rs b/src/compute/comparison/simd/packed.rs index 937e3bb81a2..731227b5caa 100644 --- a/src/compute/comparison/simd/packed.rs +++ b/src/compute/comparison/simd/packed.rs @@ -1,5 +1,5 @@ use std::convert::TryInto; -use std::simd::{SimdPartialEq, SimdPartialOrd, ToBitMask}; +use std::simd::prelude::*; use crate::types::simd::*; use crate::types::{days_ms, f16, i256, months_days_ns}; @@ -29,34 +29,40 @@ macro_rules! simd8 { impl Simd8PartialEq for $md { #[inline] fn eq(self, other: Self) -> u8 { - self.simd_eq(other).to_bitmask() + use std::simd::prelude::*; + self.simd_eq(other).to_bitmask().try_into().unwrap() } #[inline] fn neq(self, other: Self) -> u8 { - self.simd_ne(other).to_bitmask() + use std::simd::prelude::*; + self.simd_ne(other).to_bitmask().try_into().unwrap() } } impl Simd8PartialOrd for $md { #[inline] fn lt_eq(self, other: Self) -> u8 { - self.simd_le(other).to_bitmask() + use std::simd::prelude::*; + self.simd_le(other).to_bitmask().try_into().unwrap() } #[inline] fn lt(self, other: Self) -> u8 { - self.simd_lt(other).to_bitmask() + use std::simd::prelude::*; + self.simd_lt(other).to_bitmask().try_into().unwrap() } #[inline] fn gt_eq(self, other: Self) -> u8 { - self.simd_ge(other).to_bitmask() + use std::simd::prelude::*; + self.simd_ge(other).to_bitmask().try_into().unwrap() } #[inline] fn gt(self, other: Self) -> u8 { - self.simd_gt(other).to_bitmask() + use std::simd::prelude::*; + self.simd_gt(other).to_bitmask().try_into().unwrap() } } }; diff --git a/src/compute/sort/mod.rs b/src/compute/sort/mod.rs index 068020c6a6b..09bbbcb94e8 100644 --- a/src/compute/sort/mod.rs +++ b/src/compute/sort/mod.rs @@ -345,7 +345,7 @@ where let mut values = if options.nulls_first { null_indices.into_iter().chain(values).collect::>() } else { - values.chain(null_indices.into_iter()).collect::>() + values.chain(null_indices).collect::>() }; values.truncate(limit.unwrap_or(values.len())); diff --git a/src/compute/sort/row/interner.rs b/src/compute/sort/row/interner.rs index 77c53a06843..a7ef90bd200 100644 --- a/src/compute/sort/row/interner.rs +++ b/src/compute/sort/row/interner.rs @@ -415,7 +415,7 @@ mod tests { #[test] fn test_intern_duplicates() { // Unsorted with duplicates - let values = vec![0_u8, 1, 8, 4, 1, 0]; + let values = [0_u8, 1, 8, 4, 1, 0]; let mut interner = OrderPreservingInterner::default(); let interned = interner.intern(values.iter().map(std::slice::from_ref).map(Some)); diff --git a/src/doc/lib.md b/src/doc/lib.md index 9708a6cd3d1..afeffddf20d 100644 --- a/src/doc/lib.md +++ b/src/doc/lib.md @@ -11,12 +11,12 @@ Below is an example of some of the things you can do with it: ```rust use std::sync::Arc; -use arrow2::array::*; -use arrow2::datatypes::{Field, DataType, Schema}; -use arrow2::compute::arithmetics; -use arrow2::error::Result; -use arrow2::io::parquet::write::*; -use arrow2::chunk::Chunk; +use re_arrow2::array::*; +use re_arrow2::datatypes::{Field, DataType, Schema}; +use re_arrow2::compute::arithmetics; +use re_arrow2::error::Result; +// use re_arrow2::io::parquet::write::*; +use re_arrow2::chunk::Chunk; fn main() -> Result<()> { // declare arrays @@ -36,32 +36,33 @@ fn main() -> Result<()> { // declare chunk let chunk = Chunk::new(vec![a.arced(), b.arced()]); - // write to parquet (probably the fastest implementation of writing to parquet out there) + // // write to parquet (probably the fastest implementation of writing to parquet out there) - let options = WriteOptions { - write_statistics: true, - compression: CompressionOptions::Snappy, - version: Version::V1, - data_pagesize_limit: None, - }; + // let options = WriteOptions { + // write_statistics: true, + // compression: CompressionOptions::Snappy, + // version: Version::V1, + // data_pagesize_limit: None, + // }; - let row_groups = RowGroupIterator::try_new( - vec![Ok(chunk)].into_iter(), - &schema, - options, - vec![vec![Encoding::Plain], vec![Encoding::Plain]], - )?; + // let row_groups = RowGroupIterator::try_new( + // vec![Ok(chunk)].into_iter(), + // &schema, + // options, + // vec![vec![Encoding::Plain], vec![Encoding::Plain]], + // )?; - // anything implementing `std::io::Write` works - let mut file = vec![]; + // // anything implementing `std::io::Write` works + // let mut file = vec![]; - let mut writer = FileWriter::try_new(file, schema, options)?; + // let mut writer = FileWriter::try_new(file, schema, options)?; + + // // Write the file. + // for group in row_groups { + // writer.write(group?)?; + // } + // let _ = writer.end(None)?; - // Write the file. - for group in row_groups { - writer.write(group?)?; - } - let _ = writer.end(None)?; Ok(()) } ``` @@ -83,5 +84,5 @@ functionality, such as: * `compute` to operate on arrays (addition, sum, sort, etc.) The feature `simd` (not part of `full`) produces more explicit SIMD instructions -via [`std::simd`](https://doc.rust-lang.org/nightly/std/simd/index.html), but requires the +via [`std::simd`](https://doc.rust-lang.org/nightly/std/simd/index.html), but requires the nightly channel. diff --git a/src/ffi/mmap.rs b/src/ffi/mmap.rs index 0f879d4fdca..cbc03dbcba7 100644 --- a/src/ffi/mmap.rs +++ b/src/ffi/mmap.rs @@ -105,7 +105,7 @@ pub unsafe fn slice(slice: &[T]) -> PrimitiveArray { let validity = None; let data: &[u8] = bytemuck::cast_slice(slice); - let ptr = data.as_ptr() as *const u8; + let ptr = data.as_ptr(); let data = Arc::new(data); // safety: the underlying assumption of this function: the array will not be used @@ -147,7 +147,7 @@ pub unsafe fn bitmap(data: &[u8], offset: usize, length: usize) -> Result PrimitiveScalar { #[inline] pub fn new(data_type: DataType, value: Option) -> Self { if !data_type.to_physical_type().eq_primitive(T::PRIMITIVE) { - Err(Error::InvalidArgumentError(format!( - "Type {} does not support logical type {:?}", - std::any::type_name::(), - data_type - ))) - .unwrap() + panic!( + "{:?}", + Error::InvalidArgumentError(format!( + "Type {} does not support logical type {:?}", + std::any::type_name::(), + data_type + )) + ); } Self { value, data_type } } diff --git a/src/types/simd/packed.rs b/src/types/simd/packed.rs index 0d95b68882a..048d3b5d757 100644 --- a/src/types/simd/packed.rs +++ b/src/types/simd/packed.rs @@ -1,7 +1,7 @@ pub use std::simd::{ f32x16, f32x8, f64x8, i16x32, i16x8, i32x16, i32x8, i64x8, i8x64, i8x8, mask32x16 as m32x16, - mask64x8 as m64x8, mask8x64 as m8x64, u16x32, u16x8, u32x16, u32x8, u64x8, u8x64, u8x8, - SimdPartialEq, + mask64x8 as m64x8, mask8x64 as m8x64, prelude::*, u16x32, u16x8, u32x16, u32x8, u64x8, u8x64, + u8x8, }; /// Vector of 32 16-bit masks diff --git a/testing/arrow-testing b/testing/arrow-testing deleted file mode 160000 index e8ce32338f2..00000000000 --- a/testing/arrow-testing +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e8ce32338f2dfeca3a5126f7677bdee159604000 diff --git a/testing/parquet-testing b/testing/parquet-testing deleted file mode 160000 index 8e7badc6a38..00000000000 --- a/testing/parquet-testing +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8e7badc6a3817a02e06d17b5d8ab6b6dc356e890 diff --git a/tests/it/array/utf8/mutable.rs b/tests/it/array/utf8/mutable.rs index 04699a9feaf..52939fb4433 100644 --- a/tests/it/array/utf8/mutable.rs +++ b/tests/it/array/utf8/mutable.rs @@ -135,7 +135,7 @@ fn test_extend_values() { fn test_extend() { let mut array = MutableUtf8Array::::new(); - array.extend([Some("hi"), None, Some("there"), None].into_iter()); + array.extend([Some("hi"), None, Some("there"), None]); let array: Utf8Array = array.into(); @@ -149,7 +149,7 @@ fn test_extend() { fn as_arc() { let mut array = MutableUtf8Array::::new(); - array.extend([Some("hi"), None, Some("there"), None].into_iter()); + array.extend([Some("hi"), None, Some("there"), None]); assert_eq!( Utf8Array::::from([Some("hi"), None, Some("there"), None]), diff --git a/tests/it/bitmap/utils/zip_validity.rs b/tests/it/bitmap/utils/zip_validity.rs index df29abbbcce..96003307d94 100644 --- a/tests/it/bitmap/utils/zip_validity.rs +++ b/tests/it/bitmap/utils/zip_validity.rs @@ -32,8 +32,8 @@ fn complete() { fn slices() { let a = Bitmap::from([true, false]); let a = Some(a.iter()); - let offsets = vec![0, 2, 3]; - let values = vec![1, 2, 3]; + let offsets = [0, 2, 3]; + let values = [1, 2, 3]; let iter = offsets.windows(2).map(|x| { let start = x[0]; let end = x[1]; diff --git a/tests/it/compute/arithmetics/mod.rs b/tests/it/compute/arithmetics/mod.rs index 921f667a67b..f1345755280 100644 --- a/tests/it/compute/arithmetics/mod.rs +++ b/tests/it/compute/arithmetics/mod.rs @@ -62,7 +62,7 @@ fn consistency() { Interval(IntervalUnit::MonthDayNano), ]; - let cases = datatypes.clone().into_iter().zip(datatypes.into_iter()); + let cases = datatypes.clone().into_iter().zip(datatypes); cases.for_each(|(lhs, rhs)| { let lhs_a = new_empty_array(lhs.clone()); diff --git a/tests/it/io/csv/read.rs b/tests/it/io/csv/read.rs index 9d31d6e6ada..7bebc8ec955 100644 --- a/tests/it/io/csv/read.rs +++ b/tests/it/io/csv/read.rs @@ -379,7 +379,7 @@ fn decimal_only_integer() -> Result<()> { #[test] fn boolean() -> Result<()> { - let input = vec!["true", "True", "False", "F", "t"]; + let input = ["true", "True", "False", "F", "t"]; let input = input.join("\n"); let expected = BooleanArray::from(&[Some(true), Some(true), Some(false), None, None]); @@ -392,7 +392,7 @@ fn boolean() -> Result<()> { #[test] fn float32() -> Result<()> { - let input = vec!["12.34", "12", "0.0", "inf", "-inf", "dd"]; + let input = ["12.34", "12", "0.0", "inf", "-inf", "dd"]; let input = input.join("\n"); let expected = Float32Array::from(&[ @@ -411,7 +411,7 @@ fn float32() -> Result<()> { #[test] fn deserialize_binary() -> Result<()> { - let input = vec!["aa", "bb"]; + let input = ["aa", "bb"]; let input = input.join("\n"); let expected = BinaryArray::::from([Some(b"aa"), Some(b"bb")]); @@ -423,7 +423,7 @@ fn deserialize_binary() -> Result<()> { #[test] fn deserialize_timestamp() -> Result<()> { - let input = vec!["1996-12-19T16:34:57-02:00", "1996-12-19T16:34:58-02:00"]; + let input = ["1996-12-19T16:34:57-02:00", "1996-12-19T16:34:58-02:00"]; let input = input.join("\n"); let data_type = DataType::Timestamp( diff --git a/tests/it/io/mod.rs b/tests/it/io/mod.rs index bf228251df3..597277abca2 100644 --- a/tests/it/io/mod.rs +++ b/tests/it/io/mod.rs @@ -7,8 +7,8 @@ mod json; #[cfg(feature = "io_json")] mod ndjson; -#[cfg(feature = "io_json_integration")] -mod ipc; +// #[cfg(feature = "io_json_integration")] // disabled: requiers test data +// mod ipc; // disabled: requiers test data #[cfg(feature = "io_parquet")] mod parquet; @@ -16,8 +16,8 @@ mod parquet; #[cfg(feature = "io_avro")] mod avro; -#[cfg(feature = "io_orc")] -mod orc; +// #[cfg(feature = "io_orc")] // disabled: requiers test data +// mod orc; // disabled: requiers test data #[cfg(any( feature = "io_csv_read", @@ -26,5 +26,5 @@ mod orc; ))] mod csv; -#[cfg(feature = "io_flight")] -mod flight; +// #[cfg(feature = "io_flight")] // disabled: requiers test data +// mod flight; // disabled: requiers test data diff --git a/tests/it/temporal_conversions.rs b/tests/it/temporal_conversions.rs index 0afa9e2e01e..408775ae85b 100644 --- a/tests/it/temporal_conversions.rs +++ b/tests/it/temporal_conversions.rs @@ -1,8 +1,9 @@ +use std::sync::Arc; + use re_arrow2::array::*; use re_arrow2::datatypes::TimeUnit; use re_arrow2::temporal_conversions; use re_arrow2::types::months_days_ns; -use std::sync::Arc; use chrono::NaiveDateTime;