From 3445cf91bc119a24ca29176b4a5b8e81f91dc1e3 Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:08:25 +0800 Subject: [PATCH 1/8] ci: organize benchmark files --- .github/actions/benchmark_cloud/action.yml | 10 +-- .github/actions/benchmark_local/action.yml | 6 +- .github/workflows/reuse.benchmark.yml | 14 +-- benchmark/{clickbench => }/README.md | 9 +- benchmark/{clickbench => }/benchmark_cloud.py | 0 benchmark/{clickbench => }/benchmark_local.sh | 0 .../benchmark_local_merge_into.sh | 0 benchmark/{clickbench => }/hits/analyze.sql | 0 benchmark/{clickbench => }/hits/clear.sql | 0 benchmark/{clickbench => }/hits/create.sql | 0 .../{clickbench => }/hits/create_local.sql | 0 benchmark/{clickbench => }/hits/load.sql | 0 .../{clickbench => }/hits/queries/00.sql | 0 .../{clickbench => }/hits/queries/01.sql | 0 .../{clickbench => }/hits/queries/02.sql | 0 .../{clickbench => }/hits/queries/03.sql | 0 .../{clickbench => }/hits/queries/04.sql | 0 .../{clickbench => }/hits/queries/05.sql | 0 .../{clickbench => }/hits/queries/06.sql | 0 .../{clickbench => }/hits/queries/07.sql | 0 .../{clickbench => }/hits/queries/08.sql | 0 .../{clickbench => }/hits/queries/09.sql | 0 .../{clickbench => }/hits/queries/10.sql | 0 .../{clickbench => }/hits/queries/11.sql | 0 .../{clickbench => }/hits/queries/12.sql | 0 .../{clickbench => }/hits/queries/13.sql | 0 .../{clickbench => }/hits/queries/14.sql | 0 .../{clickbench => }/hits/queries/15.sql | 0 .../{clickbench => }/hits/queries/16.sql | 0 .../{clickbench => }/hits/queries/17.sql | 0 .../{clickbench => }/hits/queries/18.sql | 0 .../{clickbench => }/hits/queries/19.sql | 0 .../{clickbench => }/hits/queries/20.sql | 0 .../{clickbench => }/hits/queries/21.sql | 0 .../{clickbench => }/hits/queries/22.sql | 0 .../{clickbench => }/hits/queries/23.sql | 0 .../{clickbench => }/hits/queries/24.sql | 0 .../{clickbench => }/hits/queries/25.sql | 0 .../{clickbench => }/hits/queries/26.sql | 0 .../{clickbench => }/hits/queries/27.sql | 0 .../{clickbench => }/hits/queries/28.sql | 0 .../{clickbench => }/hits/queries/29.sql | 0 .../{clickbench => }/hits/queries/30.sql | 0 .../{clickbench => }/hits/queries/31.sql | 0 .../{clickbench => }/hits/queries/32.sql | 0 .../{clickbench => }/hits/queries/33.sql | 0 .../{clickbench => }/hits/queries/34.sql | 0 .../{clickbench => }/hits/queries/35.sql | 0 .../{clickbench => }/hits/queries/36.sql | 0 .../{clickbench => }/hits/queries/37.sql | 0 .../{clickbench => }/hits/queries/38.sql | 0 .../{clickbench => }/hits/queries/39.sql | 0 .../{clickbench => }/hits/queries/40.sql | 0 .../{clickbench => }/hits/queries/41.sql | 0 .../{clickbench => }/hits/queries/42.sql | 0 benchmark/{clickbench => }/index.jinja | 0 benchmark/{clickbench => }/internal/load.sh | 0 .../{clickbench => }/internal/queries/00.sql | 0 .../{clickbench => }/internal/queries/01.sql | 0 .../{clickbench => }/internal/queries/02.sql | 0 .../{clickbench => }/internal/queries/03.sql | 0 .../{clickbench => }/internal/queries/04.sql | 0 benchmark/{clickbench => }/load/clear.sh | 0 benchmark/{clickbench => }/load/load.sh | 0 .../{clickbench => }/load/queries/00.sql | 0 .../{clickbench => }/load/queries/01.sql | 0 .../{clickbench => }/load/queries/02.sql | 0 .../{clickbench => }/merge_into/clear.sql | 0 .../merge_into/create_local.sql | 0 .../{clickbench => }/merge_into/load.sql | 0 .../{clickbench => }/merge_into/queries.sql | 0 benchmark/{ => old}/tpcds/README.md | 0 benchmark/{ => old}/tpcds/load_data.sh | 0 benchmark/{ => old}/tpcds/shell_env.sh | 0 benchmark/{ => old}/tpcds/tpcds.sql | 0 benchmark/{ => old}/tpch/README.md | 0 benchmark/{ => old}/tpch/load_data.sh | 0 benchmark/{ => old}/tpch/shell_env.sh | 0 benchmark/{ => old}/tpch/tpch.sh | 0 benchmark/pyproject.toml | 9 ++ benchmark/{clickbench => }/tpch/analyze.sql | 0 benchmark/{clickbench => }/tpch/clear.sql | 0 benchmark/{clickbench => }/tpch/create.sql | 0 .../{clickbench => }/tpch/create_local.sql | 0 benchmark/{clickbench => }/tpch/load.sql | 0 .../{clickbench => }/tpch/queries/00.sql | 0 .../{clickbench => }/tpch/queries/01.sql | 0 .../{clickbench => }/tpch/queries/02.sql | 0 .../{clickbench => }/tpch/queries/03.sql | 0 .../{clickbench => }/tpch/queries/04.sql | 0 .../{clickbench => }/tpch/queries/05.sql | 0 .../{clickbench => }/tpch/queries/06.sql | 0 .../{clickbench => }/tpch/queries/07.sql | 0 .../{clickbench => }/tpch/queries/08.sql | 0 .../{clickbench => }/tpch/queries/09.sql | 0 .../{clickbench => }/tpch/queries/10.sql | 0 .../{clickbench => }/tpch/queries/11.sql | 0 .../{clickbench => }/tpch/queries/12.sql | 0 .../{clickbench => }/tpch/queries/13.sql | 0 .../{clickbench => }/tpch/queries/14.sql | 0 .../{clickbench => }/tpch/queries/15.sql | 0 .../{clickbench => }/tpch/queries/16.sql | 0 .../{clickbench => }/tpch/queries/17.sql | 0 .../{clickbench => }/tpch/queries/18.sql | 0 .../{clickbench => }/tpch/queries/19.sql | 0 .../{clickbench => }/tpch/queries/20.sql | 0 .../{clickbench => }/tpch/queries/21.sql | 0 .../{clickbench => }/tpch/queries/22.sql | 0 benchmark/{clickbench => }/update_results.py | 0 benchmark/uv.lock | 88 +++++++++++++++++++ benchmark/{clickbench => }/wait_tcp.py | 0 src/bendpy/pyproject.toml | 5 +- 112 files changed, 118 insertions(+), 23 deletions(-) rename benchmark/{clickbench => }/README.md (88%) rename benchmark/{clickbench => }/benchmark_cloud.py (100%) rename benchmark/{clickbench => }/benchmark_local.sh (100%) rename benchmark/{clickbench => }/benchmark_local_merge_into.sh (100%) rename benchmark/{clickbench => }/hits/analyze.sql (100%) rename benchmark/{clickbench => }/hits/clear.sql (100%) rename benchmark/{clickbench => }/hits/create.sql (100%) rename benchmark/{clickbench => }/hits/create_local.sql (100%) rename benchmark/{clickbench => }/hits/load.sql (100%) rename benchmark/{clickbench => }/hits/queries/00.sql (100%) rename benchmark/{clickbench => }/hits/queries/01.sql (100%) rename benchmark/{clickbench => }/hits/queries/02.sql (100%) rename benchmark/{clickbench => }/hits/queries/03.sql (100%) rename benchmark/{clickbench => }/hits/queries/04.sql (100%) rename benchmark/{clickbench => }/hits/queries/05.sql (100%) rename benchmark/{clickbench => }/hits/queries/06.sql (100%) rename benchmark/{clickbench => }/hits/queries/07.sql (100%) rename benchmark/{clickbench => }/hits/queries/08.sql (100%) rename benchmark/{clickbench => }/hits/queries/09.sql (100%) rename benchmark/{clickbench => }/hits/queries/10.sql (100%) rename benchmark/{clickbench => }/hits/queries/11.sql (100%) rename benchmark/{clickbench => }/hits/queries/12.sql (100%) rename benchmark/{clickbench => }/hits/queries/13.sql (100%) rename benchmark/{clickbench => }/hits/queries/14.sql (100%) rename benchmark/{clickbench => }/hits/queries/15.sql (100%) rename benchmark/{clickbench => }/hits/queries/16.sql (100%) rename benchmark/{clickbench => }/hits/queries/17.sql (100%) rename benchmark/{clickbench => }/hits/queries/18.sql (100%) rename benchmark/{clickbench => }/hits/queries/19.sql (100%) rename benchmark/{clickbench => }/hits/queries/20.sql (100%) rename benchmark/{clickbench => }/hits/queries/21.sql (100%) rename benchmark/{clickbench => }/hits/queries/22.sql (100%) rename benchmark/{clickbench => }/hits/queries/23.sql (100%) rename benchmark/{clickbench => }/hits/queries/24.sql (100%) rename benchmark/{clickbench => }/hits/queries/25.sql (100%) rename benchmark/{clickbench => }/hits/queries/26.sql (100%) rename benchmark/{clickbench => }/hits/queries/27.sql (100%) rename benchmark/{clickbench => }/hits/queries/28.sql (100%) rename benchmark/{clickbench => }/hits/queries/29.sql (100%) rename benchmark/{clickbench => }/hits/queries/30.sql (100%) rename benchmark/{clickbench => }/hits/queries/31.sql (100%) rename benchmark/{clickbench => }/hits/queries/32.sql (100%) rename benchmark/{clickbench => }/hits/queries/33.sql (100%) rename benchmark/{clickbench => }/hits/queries/34.sql (100%) rename benchmark/{clickbench => }/hits/queries/35.sql (100%) rename benchmark/{clickbench => }/hits/queries/36.sql (100%) rename benchmark/{clickbench => }/hits/queries/37.sql (100%) rename benchmark/{clickbench => }/hits/queries/38.sql (100%) rename benchmark/{clickbench => }/hits/queries/39.sql (100%) rename benchmark/{clickbench => }/hits/queries/40.sql (100%) rename benchmark/{clickbench => }/hits/queries/41.sql (100%) rename benchmark/{clickbench => }/hits/queries/42.sql (100%) rename benchmark/{clickbench => }/index.jinja (100%) rename benchmark/{clickbench => }/internal/load.sh (100%) rename benchmark/{clickbench => }/internal/queries/00.sql (100%) rename benchmark/{clickbench => }/internal/queries/01.sql (100%) rename benchmark/{clickbench => }/internal/queries/02.sql (100%) rename benchmark/{clickbench => }/internal/queries/03.sql (100%) rename benchmark/{clickbench => }/internal/queries/04.sql (100%) rename benchmark/{clickbench => }/load/clear.sh (100%) rename benchmark/{clickbench => }/load/load.sh (100%) rename benchmark/{clickbench => }/load/queries/00.sql (100%) rename benchmark/{clickbench => }/load/queries/01.sql (100%) rename benchmark/{clickbench => }/load/queries/02.sql (100%) rename benchmark/{clickbench => }/merge_into/clear.sql (100%) rename benchmark/{clickbench => }/merge_into/create_local.sql (100%) rename benchmark/{clickbench => }/merge_into/load.sql (100%) rename benchmark/{clickbench => }/merge_into/queries.sql (100%) rename benchmark/{ => old}/tpcds/README.md (100%) rename benchmark/{ => old}/tpcds/load_data.sh (100%) rename benchmark/{ => old}/tpcds/shell_env.sh (100%) rename benchmark/{ => old}/tpcds/tpcds.sql (100%) rename benchmark/{ => old}/tpch/README.md (100%) rename benchmark/{ => old}/tpch/load_data.sh (100%) rename benchmark/{ => old}/tpch/shell_env.sh (100%) rename benchmark/{ => old}/tpch/tpch.sh (100%) create mode 100644 benchmark/pyproject.toml rename benchmark/{clickbench => }/tpch/analyze.sql (100%) rename benchmark/{clickbench => }/tpch/clear.sql (100%) rename benchmark/{clickbench => }/tpch/create.sql (100%) rename benchmark/{clickbench => }/tpch/create_local.sql (100%) rename benchmark/{clickbench => }/tpch/load.sql (100%) rename benchmark/{clickbench => }/tpch/queries/00.sql (100%) rename benchmark/{clickbench => }/tpch/queries/01.sql (100%) rename benchmark/{clickbench => }/tpch/queries/02.sql (100%) rename benchmark/{clickbench => }/tpch/queries/03.sql (100%) rename benchmark/{clickbench => }/tpch/queries/04.sql (100%) rename benchmark/{clickbench => }/tpch/queries/05.sql (100%) rename benchmark/{clickbench => }/tpch/queries/06.sql (100%) rename benchmark/{clickbench => }/tpch/queries/07.sql (100%) rename benchmark/{clickbench => }/tpch/queries/08.sql (100%) rename benchmark/{clickbench => }/tpch/queries/09.sql (100%) rename benchmark/{clickbench => }/tpch/queries/10.sql (100%) rename benchmark/{clickbench => }/tpch/queries/11.sql (100%) rename benchmark/{clickbench => }/tpch/queries/12.sql (100%) rename benchmark/{clickbench => }/tpch/queries/13.sql (100%) rename benchmark/{clickbench => }/tpch/queries/14.sql (100%) rename benchmark/{clickbench => }/tpch/queries/15.sql (100%) rename benchmark/{clickbench => }/tpch/queries/16.sql (100%) rename benchmark/{clickbench => }/tpch/queries/17.sql (100%) rename benchmark/{clickbench => }/tpch/queries/18.sql (100%) rename benchmark/{clickbench => }/tpch/queries/19.sql (100%) rename benchmark/{clickbench => }/tpch/queries/20.sql (100%) rename benchmark/{clickbench => }/tpch/queries/21.sql (100%) rename benchmark/{clickbench => }/tpch/queries/22.sql (100%) rename benchmark/{clickbench => }/update_results.py (100%) create mode 100644 benchmark/uv.lock rename benchmark/{clickbench => }/wait_tcp.py (100%) diff --git a/.github/actions/benchmark_cloud/action.yml b/.github/actions/benchmark_cloud/action.yml index 9613b2246be86..60c5334e4dd18 100644 --- a/.github/actions/benchmark_cloud/action.yml +++ b/.github/actions/benchmark_cloud/action.yml @@ -53,7 +53,7 @@ runs: sudo apt-get install -yq python3 - name: Prepare - working-directory: benchmark/clickbench + working-directory: benchmark shell: bash id: prepare env: @@ -64,7 +64,7 @@ runs: else database="${{ inputs.database }}" if [[ -z "$database" ]]; then - database="clickbench" + database="benchmark" fi echo "database=$database" >> $GITHUB_OUTPUT fi @@ -79,7 +79,7 @@ runs: echo "tries=$tries" >> $GITHUB_OUTPUT - name: Run Benchmark - working-directory: benchmark/clickbench + working-directory: benchmark env: BENCHMARK_ID: ${{ inputs.run_id }} BENCHMARK_DATASET: ${{ inputs.dataset }} @@ -104,8 +104,8 @@ runs: with: name: benchmark-${{ inputs.dataset }}-${{ inputs.size }}-cache-${{ inputs.cache_size }} path: | - benchmark/clickbench/result-${{ inputs.dataset }}-cloud-${{ inputs.size }}-cache-${{ inputs.cache_size }}.json - benchmark/clickbench/result-${{ inputs.dataset }}-cloud-${{ inputs.size }}-cache-${{ inputs.cache_size }}-*.ndjson + benchmark/result-${{ inputs.dataset }}-cloud-${{ inputs.size }}-cache-${{ inputs.cache_size }}.json + benchmark/result-${{ inputs.dataset }}-cloud-${{ inputs.size }}-cache-${{ inputs.cache_size }}-*.ndjson - name: Remove warehouse if: always() diff --git a/.github/actions/benchmark_local/action.yml b/.github/actions/benchmark_local/action.yml index 116cf7a2eccda..cdba436da57f0 100644 --- a/.github/actions/benchmark_local/action.yml +++ b/.github/actions/benchmark_local/action.yml @@ -27,7 +27,7 @@ runs: sudo apt-get install -yq python3 - name: Run Benchmark - working-directory: benchmark/clickbench + working-directory: benchmark env: BENCHMARK_ID: ${{ inputs.run_id }} BENCHMARK_DATASET: ${{ inputs.dataset }} @@ -42,7 +42,7 @@ runs: name: benchmark_local - name: Prepare Metadata - working-directory: benchmark/clickbench + working-directory: benchmark shell: bash run: | case ${{ inputs.source }} in @@ -63,4 +63,4 @@ runs: uses: actions/upload-artifact@v4 with: name: benchmark-${{ inputs.dataset }}-local - path: benchmark/clickbench/result-${{ inputs.dataset }}-local.json + path: benchmark/result-${{ inputs.dataset }}-local.json diff --git a/.github/workflows/reuse.benchmark.yml b/.github/workflows/reuse.benchmark.yml index 4e3a240a3cd0a..36ec6d92cd103 100644 --- a/.github/workflows/reuse.benchmark.yml +++ b/.github/workflows/reuse.benchmark.yml @@ -195,11 +195,11 @@ jobs: sudo apt-get install -yq python3-jinja2 - uses: actions/download-artifact@v4 with: - path: benchmark/clickbench/results + path: benchmark/results pattern: benchmark-* merge-multiple: true - name: Get Report Prefix - working-directory: benchmark/clickbench + working-directory: benchmark run: | shopt -s nullglob for result in results/*.json; do @@ -220,7 +220,7 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: auto AWS_ENDPOINT_URL: ${{ secrets.R2_ENDPOINT_URL }} - working-directory: benchmark/clickbench + working-directory: benchmark run: | echo -e "## ClickBench Report\n" > /tmp/body shopt -s nullglob @@ -260,11 +260,11 @@ jobs: sudo apt-get install -yq python3-jinja2 - uses: actions/download-artifact@v4 with: - path: benchmark/clickbench/results + path: benchmark/results pattern: benchmark-${{ matrix.dataset }}-* merge-multiple: true - name: Prepare results directory - working-directory: benchmark/clickbench + working-directory: benchmark run: | shopt -s nullglob for result in results/*.json; do @@ -279,7 +279,7 @@ jobs: mv $ndjson ndjsons/${dataset}/$(basename $ndjson) done - name: Generate report and upload to R2 - working-directory: benchmark/clickbench + working-directory: benchmark env: AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} @@ -299,7 +299,7 @@ jobs: aws s3 cp ./results/${{ matrix.dataset }}.html s3://benchmark/clickbench/release/${{ matrix.dataset }}.html --no-progress --checksum-algorithm=CRC32 - name: Upload NDJSON archives to R2 - working-directory: benchmark/clickbench + working-directory: benchmark env: AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} diff --git a/benchmark/clickbench/README.md b/benchmark/README.md similarity index 88% rename from benchmark/clickbench/README.md rename to benchmark/README.md index a1a9d3fb64038..1476e51239476 100644 --- a/benchmark/clickbench/README.md +++ b/benchmark/README.md @@ -1,24 +1,23 @@ # Benchmark Directory -This directory contains subdirectories dedicated to various performance tests, +This directory contains subdirectories dedicated to various performance tests, specifically for TPCH tests, Hits tests, and internal query performance tests. Below is a brief overview of each subdirectory: ## 1. tpch -This subdirectory includes performance evaluation tools and scripts related to TPCH tests. +This subdirectory includes performance evaluation tools and scripts related to TPCH tests. TPCH tests are designed to simulate complex query scenarios to assess the system's performance when handling large datasets. In this directory, you can find testing scripts, configuration files, and documentation for test results. ## 2. hits -Hits tests focus on specific queries or operations for performance testing. +Hits tests focus on specific queries or operations for performance testing. In this subdirectory, you'll find scripts for Hits tests, sample queries, and performance analysis tools. ## 3. internal -The internal subdirectory contains testing tools and scripts dedicated to ensuring the performance of internal queries. +The internal subdirectory contains testing tools and scripts dedicated to ensuring the performance of internal queries. These tests may be conducted to ensure the system performs well when handling internal queries specific. - diff --git a/benchmark/clickbench/benchmark_cloud.py b/benchmark/benchmark_cloud.py similarity index 100% rename from benchmark/clickbench/benchmark_cloud.py rename to benchmark/benchmark_cloud.py diff --git a/benchmark/clickbench/benchmark_local.sh b/benchmark/benchmark_local.sh similarity index 100% rename from benchmark/clickbench/benchmark_local.sh rename to benchmark/benchmark_local.sh diff --git a/benchmark/clickbench/benchmark_local_merge_into.sh b/benchmark/benchmark_local_merge_into.sh similarity index 100% rename from benchmark/clickbench/benchmark_local_merge_into.sh rename to benchmark/benchmark_local_merge_into.sh diff --git a/benchmark/clickbench/hits/analyze.sql b/benchmark/hits/analyze.sql similarity index 100% rename from benchmark/clickbench/hits/analyze.sql rename to benchmark/hits/analyze.sql diff --git a/benchmark/clickbench/hits/clear.sql b/benchmark/hits/clear.sql similarity index 100% rename from benchmark/clickbench/hits/clear.sql rename to benchmark/hits/clear.sql diff --git a/benchmark/clickbench/hits/create.sql b/benchmark/hits/create.sql similarity index 100% rename from benchmark/clickbench/hits/create.sql rename to benchmark/hits/create.sql diff --git a/benchmark/clickbench/hits/create_local.sql b/benchmark/hits/create_local.sql similarity index 100% rename from benchmark/clickbench/hits/create_local.sql rename to benchmark/hits/create_local.sql diff --git a/benchmark/clickbench/hits/load.sql b/benchmark/hits/load.sql similarity index 100% rename from benchmark/clickbench/hits/load.sql rename to benchmark/hits/load.sql diff --git a/benchmark/clickbench/hits/queries/00.sql b/benchmark/hits/queries/00.sql similarity index 100% rename from benchmark/clickbench/hits/queries/00.sql rename to benchmark/hits/queries/00.sql diff --git a/benchmark/clickbench/hits/queries/01.sql b/benchmark/hits/queries/01.sql similarity index 100% rename from benchmark/clickbench/hits/queries/01.sql rename to benchmark/hits/queries/01.sql diff --git a/benchmark/clickbench/hits/queries/02.sql b/benchmark/hits/queries/02.sql similarity index 100% rename from benchmark/clickbench/hits/queries/02.sql rename to benchmark/hits/queries/02.sql diff --git a/benchmark/clickbench/hits/queries/03.sql b/benchmark/hits/queries/03.sql similarity index 100% rename from benchmark/clickbench/hits/queries/03.sql rename to benchmark/hits/queries/03.sql diff --git a/benchmark/clickbench/hits/queries/04.sql b/benchmark/hits/queries/04.sql similarity index 100% rename from benchmark/clickbench/hits/queries/04.sql rename to benchmark/hits/queries/04.sql diff --git a/benchmark/clickbench/hits/queries/05.sql b/benchmark/hits/queries/05.sql similarity index 100% rename from benchmark/clickbench/hits/queries/05.sql rename to benchmark/hits/queries/05.sql diff --git a/benchmark/clickbench/hits/queries/06.sql b/benchmark/hits/queries/06.sql similarity index 100% rename from benchmark/clickbench/hits/queries/06.sql rename to benchmark/hits/queries/06.sql diff --git a/benchmark/clickbench/hits/queries/07.sql b/benchmark/hits/queries/07.sql similarity index 100% rename from benchmark/clickbench/hits/queries/07.sql rename to benchmark/hits/queries/07.sql diff --git a/benchmark/clickbench/hits/queries/08.sql b/benchmark/hits/queries/08.sql similarity index 100% rename from benchmark/clickbench/hits/queries/08.sql rename to benchmark/hits/queries/08.sql diff --git a/benchmark/clickbench/hits/queries/09.sql b/benchmark/hits/queries/09.sql similarity index 100% rename from benchmark/clickbench/hits/queries/09.sql rename to benchmark/hits/queries/09.sql diff --git a/benchmark/clickbench/hits/queries/10.sql b/benchmark/hits/queries/10.sql similarity index 100% rename from benchmark/clickbench/hits/queries/10.sql rename to benchmark/hits/queries/10.sql diff --git a/benchmark/clickbench/hits/queries/11.sql b/benchmark/hits/queries/11.sql similarity index 100% rename from benchmark/clickbench/hits/queries/11.sql rename to benchmark/hits/queries/11.sql diff --git a/benchmark/clickbench/hits/queries/12.sql b/benchmark/hits/queries/12.sql similarity index 100% rename from benchmark/clickbench/hits/queries/12.sql rename to benchmark/hits/queries/12.sql diff --git a/benchmark/clickbench/hits/queries/13.sql b/benchmark/hits/queries/13.sql similarity index 100% rename from benchmark/clickbench/hits/queries/13.sql rename to benchmark/hits/queries/13.sql diff --git a/benchmark/clickbench/hits/queries/14.sql b/benchmark/hits/queries/14.sql similarity index 100% rename from benchmark/clickbench/hits/queries/14.sql rename to benchmark/hits/queries/14.sql diff --git a/benchmark/clickbench/hits/queries/15.sql b/benchmark/hits/queries/15.sql similarity index 100% rename from benchmark/clickbench/hits/queries/15.sql rename to benchmark/hits/queries/15.sql diff --git a/benchmark/clickbench/hits/queries/16.sql b/benchmark/hits/queries/16.sql similarity index 100% rename from benchmark/clickbench/hits/queries/16.sql rename to benchmark/hits/queries/16.sql diff --git a/benchmark/clickbench/hits/queries/17.sql b/benchmark/hits/queries/17.sql similarity index 100% rename from benchmark/clickbench/hits/queries/17.sql rename to benchmark/hits/queries/17.sql diff --git a/benchmark/clickbench/hits/queries/18.sql b/benchmark/hits/queries/18.sql similarity index 100% rename from benchmark/clickbench/hits/queries/18.sql rename to benchmark/hits/queries/18.sql diff --git a/benchmark/clickbench/hits/queries/19.sql b/benchmark/hits/queries/19.sql similarity index 100% rename from benchmark/clickbench/hits/queries/19.sql rename to benchmark/hits/queries/19.sql diff --git a/benchmark/clickbench/hits/queries/20.sql b/benchmark/hits/queries/20.sql similarity index 100% rename from benchmark/clickbench/hits/queries/20.sql rename to benchmark/hits/queries/20.sql diff --git a/benchmark/clickbench/hits/queries/21.sql b/benchmark/hits/queries/21.sql similarity index 100% rename from benchmark/clickbench/hits/queries/21.sql rename to benchmark/hits/queries/21.sql diff --git a/benchmark/clickbench/hits/queries/22.sql b/benchmark/hits/queries/22.sql similarity index 100% rename from benchmark/clickbench/hits/queries/22.sql rename to benchmark/hits/queries/22.sql diff --git a/benchmark/clickbench/hits/queries/23.sql b/benchmark/hits/queries/23.sql similarity index 100% rename from benchmark/clickbench/hits/queries/23.sql rename to benchmark/hits/queries/23.sql diff --git a/benchmark/clickbench/hits/queries/24.sql b/benchmark/hits/queries/24.sql similarity index 100% rename from benchmark/clickbench/hits/queries/24.sql rename to benchmark/hits/queries/24.sql diff --git a/benchmark/clickbench/hits/queries/25.sql b/benchmark/hits/queries/25.sql similarity index 100% rename from benchmark/clickbench/hits/queries/25.sql rename to benchmark/hits/queries/25.sql diff --git a/benchmark/clickbench/hits/queries/26.sql b/benchmark/hits/queries/26.sql similarity index 100% rename from benchmark/clickbench/hits/queries/26.sql rename to benchmark/hits/queries/26.sql diff --git a/benchmark/clickbench/hits/queries/27.sql b/benchmark/hits/queries/27.sql similarity index 100% rename from benchmark/clickbench/hits/queries/27.sql rename to benchmark/hits/queries/27.sql diff --git a/benchmark/clickbench/hits/queries/28.sql b/benchmark/hits/queries/28.sql similarity index 100% rename from benchmark/clickbench/hits/queries/28.sql rename to benchmark/hits/queries/28.sql diff --git a/benchmark/clickbench/hits/queries/29.sql b/benchmark/hits/queries/29.sql similarity index 100% rename from benchmark/clickbench/hits/queries/29.sql rename to benchmark/hits/queries/29.sql diff --git a/benchmark/clickbench/hits/queries/30.sql b/benchmark/hits/queries/30.sql similarity index 100% rename from benchmark/clickbench/hits/queries/30.sql rename to benchmark/hits/queries/30.sql diff --git a/benchmark/clickbench/hits/queries/31.sql b/benchmark/hits/queries/31.sql similarity index 100% rename from benchmark/clickbench/hits/queries/31.sql rename to benchmark/hits/queries/31.sql diff --git a/benchmark/clickbench/hits/queries/32.sql b/benchmark/hits/queries/32.sql similarity index 100% rename from benchmark/clickbench/hits/queries/32.sql rename to benchmark/hits/queries/32.sql diff --git a/benchmark/clickbench/hits/queries/33.sql b/benchmark/hits/queries/33.sql similarity index 100% rename from benchmark/clickbench/hits/queries/33.sql rename to benchmark/hits/queries/33.sql diff --git a/benchmark/clickbench/hits/queries/34.sql b/benchmark/hits/queries/34.sql similarity index 100% rename from benchmark/clickbench/hits/queries/34.sql rename to benchmark/hits/queries/34.sql diff --git a/benchmark/clickbench/hits/queries/35.sql b/benchmark/hits/queries/35.sql similarity index 100% rename from benchmark/clickbench/hits/queries/35.sql rename to benchmark/hits/queries/35.sql diff --git a/benchmark/clickbench/hits/queries/36.sql b/benchmark/hits/queries/36.sql similarity index 100% rename from benchmark/clickbench/hits/queries/36.sql rename to benchmark/hits/queries/36.sql diff --git a/benchmark/clickbench/hits/queries/37.sql b/benchmark/hits/queries/37.sql similarity index 100% rename from benchmark/clickbench/hits/queries/37.sql rename to benchmark/hits/queries/37.sql diff --git a/benchmark/clickbench/hits/queries/38.sql b/benchmark/hits/queries/38.sql similarity index 100% rename from benchmark/clickbench/hits/queries/38.sql rename to benchmark/hits/queries/38.sql diff --git a/benchmark/clickbench/hits/queries/39.sql b/benchmark/hits/queries/39.sql similarity index 100% rename from benchmark/clickbench/hits/queries/39.sql rename to benchmark/hits/queries/39.sql diff --git a/benchmark/clickbench/hits/queries/40.sql b/benchmark/hits/queries/40.sql similarity index 100% rename from benchmark/clickbench/hits/queries/40.sql rename to benchmark/hits/queries/40.sql diff --git a/benchmark/clickbench/hits/queries/41.sql b/benchmark/hits/queries/41.sql similarity index 100% rename from benchmark/clickbench/hits/queries/41.sql rename to benchmark/hits/queries/41.sql diff --git a/benchmark/clickbench/hits/queries/42.sql b/benchmark/hits/queries/42.sql similarity index 100% rename from benchmark/clickbench/hits/queries/42.sql rename to benchmark/hits/queries/42.sql diff --git a/benchmark/clickbench/index.jinja b/benchmark/index.jinja similarity index 100% rename from benchmark/clickbench/index.jinja rename to benchmark/index.jinja diff --git a/benchmark/clickbench/internal/load.sh b/benchmark/internal/load.sh similarity index 100% rename from benchmark/clickbench/internal/load.sh rename to benchmark/internal/load.sh diff --git a/benchmark/clickbench/internal/queries/00.sql b/benchmark/internal/queries/00.sql similarity index 100% rename from benchmark/clickbench/internal/queries/00.sql rename to benchmark/internal/queries/00.sql diff --git a/benchmark/clickbench/internal/queries/01.sql b/benchmark/internal/queries/01.sql similarity index 100% rename from benchmark/clickbench/internal/queries/01.sql rename to benchmark/internal/queries/01.sql diff --git a/benchmark/clickbench/internal/queries/02.sql b/benchmark/internal/queries/02.sql similarity index 100% rename from benchmark/clickbench/internal/queries/02.sql rename to benchmark/internal/queries/02.sql diff --git a/benchmark/clickbench/internal/queries/03.sql b/benchmark/internal/queries/03.sql similarity index 100% rename from benchmark/clickbench/internal/queries/03.sql rename to benchmark/internal/queries/03.sql diff --git a/benchmark/clickbench/internal/queries/04.sql b/benchmark/internal/queries/04.sql similarity index 100% rename from benchmark/clickbench/internal/queries/04.sql rename to benchmark/internal/queries/04.sql diff --git a/benchmark/clickbench/load/clear.sh b/benchmark/load/clear.sh similarity index 100% rename from benchmark/clickbench/load/clear.sh rename to benchmark/load/clear.sh diff --git a/benchmark/clickbench/load/load.sh b/benchmark/load/load.sh similarity index 100% rename from benchmark/clickbench/load/load.sh rename to benchmark/load/load.sh diff --git a/benchmark/clickbench/load/queries/00.sql b/benchmark/load/queries/00.sql similarity index 100% rename from benchmark/clickbench/load/queries/00.sql rename to benchmark/load/queries/00.sql diff --git a/benchmark/clickbench/load/queries/01.sql b/benchmark/load/queries/01.sql similarity index 100% rename from benchmark/clickbench/load/queries/01.sql rename to benchmark/load/queries/01.sql diff --git a/benchmark/clickbench/load/queries/02.sql b/benchmark/load/queries/02.sql similarity index 100% rename from benchmark/clickbench/load/queries/02.sql rename to benchmark/load/queries/02.sql diff --git a/benchmark/clickbench/merge_into/clear.sql b/benchmark/merge_into/clear.sql similarity index 100% rename from benchmark/clickbench/merge_into/clear.sql rename to benchmark/merge_into/clear.sql diff --git a/benchmark/clickbench/merge_into/create_local.sql b/benchmark/merge_into/create_local.sql similarity index 100% rename from benchmark/clickbench/merge_into/create_local.sql rename to benchmark/merge_into/create_local.sql diff --git a/benchmark/clickbench/merge_into/load.sql b/benchmark/merge_into/load.sql similarity index 100% rename from benchmark/clickbench/merge_into/load.sql rename to benchmark/merge_into/load.sql diff --git a/benchmark/clickbench/merge_into/queries.sql b/benchmark/merge_into/queries.sql similarity index 100% rename from benchmark/clickbench/merge_into/queries.sql rename to benchmark/merge_into/queries.sql diff --git a/benchmark/tpcds/README.md b/benchmark/old/tpcds/README.md similarity index 100% rename from benchmark/tpcds/README.md rename to benchmark/old/tpcds/README.md diff --git a/benchmark/tpcds/load_data.sh b/benchmark/old/tpcds/load_data.sh similarity index 100% rename from benchmark/tpcds/load_data.sh rename to benchmark/old/tpcds/load_data.sh diff --git a/benchmark/tpcds/shell_env.sh b/benchmark/old/tpcds/shell_env.sh similarity index 100% rename from benchmark/tpcds/shell_env.sh rename to benchmark/old/tpcds/shell_env.sh diff --git a/benchmark/tpcds/tpcds.sql b/benchmark/old/tpcds/tpcds.sql similarity index 100% rename from benchmark/tpcds/tpcds.sql rename to benchmark/old/tpcds/tpcds.sql diff --git a/benchmark/tpch/README.md b/benchmark/old/tpch/README.md similarity index 100% rename from benchmark/tpch/README.md rename to benchmark/old/tpch/README.md diff --git a/benchmark/tpch/load_data.sh b/benchmark/old/tpch/load_data.sh similarity index 100% rename from benchmark/tpch/load_data.sh rename to benchmark/old/tpch/load_data.sh diff --git a/benchmark/tpch/shell_env.sh b/benchmark/old/tpch/shell_env.sh similarity index 100% rename from benchmark/tpch/shell_env.sh rename to benchmark/old/tpch/shell_env.sh diff --git a/benchmark/tpch/tpch.sh b/benchmark/old/tpch/tpch.sh similarity index 100% rename from benchmark/tpch/tpch.sh rename to benchmark/old/tpch/tpch.sh diff --git a/benchmark/pyproject.toml b/benchmark/pyproject.toml new file mode 100644 index 0000000000000..0b2e73bb54b41 --- /dev/null +++ b/benchmark/pyproject.toml @@ -0,0 +1,9 @@ +[project] +name = "benchmark" +version = "0.1.0" +description = "Databend benchmark" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [ + "jinja2>=3.1.6", +] diff --git a/benchmark/clickbench/tpch/analyze.sql b/benchmark/tpch/analyze.sql similarity index 100% rename from benchmark/clickbench/tpch/analyze.sql rename to benchmark/tpch/analyze.sql diff --git a/benchmark/clickbench/tpch/clear.sql b/benchmark/tpch/clear.sql similarity index 100% rename from benchmark/clickbench/tpch/clear.sql rename to benchmark/tpch/clear.sql diff --git a/benchmark/clickbench/tpch/create.sql b/benchmark/tpch/create.sql similarity index 100% rename from benchmark/clickbench/tpch/create.sql rename to benchmark/tpch/create.sql diff --git a/benchmark/clickbench/tpch/create_local.sql b/benchmark/tpch/create_local.sql similarity index 100% rename from benchmark/clickbench/tpch/create_local.sql rename to benchmark/tpch/create_local.sql diff --git a/benchmark/clickbench/tpch/load.sql b/benchmark/tpch/load.sql similarity index 100% rename from benchmark/clickbench/tpch/load.sql rename to benchmark/tpch/load.sql diff --git a/benchmark/clickbench/tpch/queries/00.sql b/benchmark/tpch/queries/00.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/00.sql rename to benchmark/tpch/queries/00.sql diff --git a/benchmark/clickbench/tpch/queries/01.sql b/benchmark/tpch/queries/01.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/01.sql rename to benchmark/tpch/queries/01.sql diff --git a/benchmark/clickbench/tpch/queries/02.sql b/benchmark/tpch/queries/02.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/02.sql rename to benchmark/tpch/queries/02.sql diff --git a/benchmark/clickbench/tpch/queries/03.sql b/benchmark/tpch/queries/03.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/03.sql rename to benchmark/tpch/queries/03.sql diff --git a/benchmark/clickbench/tpch/queries/04.sql b/benchmark/tpch/queries/04.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/04.sql rename to benchmark/tpch/queries/04.sql diff --git a/benchmark/clickbench/tpch/queries/05.sql b/benchmark/tpch/queries/05.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/05.sql rename to benchmark/tpch/queries/05.sql diff --git a/benchmark/clickbench/tpch/queries/06.sql b/benchmark/tpch/queries/06.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/06.sql rename to benchmark/tpch/queries/06.sql diff --git a/benchmark/clickbench/tpch/queries/07.sql b/benchmark/tpch/queries/07.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/07.sql rename to benchmark/tpch/queries/07.sql diff --git a/benchmark/clickbench/tpch/queries/08.sql b/benchmark/tpch/queries/08.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/08.sql rename to benchmark/tpch/queries/08.sql diff --git a/benchmark/clickbench/tpch/queries/09.sql b/benchmark/tpch/queries/09.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/09.sql rename to benchmark/tpch/queries/09.sql diff --git a/benchmark/clickbench/tpch/queries/10.sql b/benchmark/tpch/queries/10.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/10.sql rename to benchmark/tpch/queries/10.sql diff --git a/benchmark/clickbench/tpch/queries/11.sql b/benchmark/tpch/queries/11.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/11.sql rename to benchmark/tpch/queries/11.sql diff --git a/benchmark/clickbench/tpch/queries/12.sql b/benchmark/tpch/queries/12.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/12.sql rename to benchmark/tpch/queries/12.sql diff --git a/benchmark/clickbench/tpch/queries/13.sql b/benchmark/tpch/queries/13.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/13.sql rename to benchmark/tpch/queries/13.sql diff --git a/benchmark/clickbench/tpch/queries/14.sql b/benchmark/tpch/queries/14.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/14.sql rename to benchmark/tpch/queries/14.sql diff --git a/benchmark/clickbench/tpch/queries/15.sql b/benchmark/tpch/queries/15.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/15.sql rename to benchmark/tpch/queries/15.sql diff --git a/benchmark/clickbench/tpch/queries/16.sql b/benchmark/tpch/queries/16.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/16.sql rename to benchmark/tpch/queries/16.sql diff --git a/benchmark/clickbench/tpch/queries/17.sql b/benchmark/tpch/queries/17.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/17.sql rename to benchmark/tpch/queries/17.sql diff --git a/benchmark/clickbench/tpch/queries/18.sql b/benchmark/tpch/queries/18.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/18.sql rename to benchmark/tpch/queries/18.sql diff --git a/benchmark/clickbench/tpch/queries/19.sql b/benchmark/tpch/queries/19.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/19.sql rename to benchmark/tpch/queries/19.sql diff --git a/benchmark/clickbench/tpch/queries/20.sql b/benchmark/tpch/queries/20.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/20.sql rename to benchmark/tpch/queries/20.sql diff --git a/benchmark/clickbench/tpch/queries/21.sql b/benchmark/tpch/queries/21.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/21.sql rename to benchmark/tpch/queries/21.sql diff --git a/benchmark/clickbench/tpch/queries/22.sql b/benchmark/tpch/queries/22.sql similarity index 100% rename from benchmark/clickbench/tpch/queries/22.sql rename to benchmark/tpch/queries/22.sql diff --git a/benchmark/clickbench/update_results.py b/benchmark/update_results.py similarity index 100% rename from benchmark/clickbench/update_results.py rename to benchmark/update_results.py diff --git a/benchmark/uv.lock b/benchmark/uv.lock new file mode 100644 index 0000000000000..a8ca90d7fa870 --- /dev/null +++ b/benchmark/uv.lock @@ -0,0 +1,88 @@ +version = 1 +requires-python = ">=3.12" + +[[package]] +name = "benchmark" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "jinja2" }, +] + +[package.metadata] +requires-dist = [{ name = "jinja2", specifier = ">=3.1.6" }] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615 }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020 }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332 }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947 }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962 }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760 }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529 }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015 }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540 }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105 }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906 }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622 }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029 }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374 }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980 }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990 }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784 }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588 }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041 }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543 }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113 }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911 }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658 }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066 }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639 }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569 }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284 }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801 }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769 }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642 }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612 }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200 }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973 }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619 }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029 }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408 }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005 }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048 }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821 }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606 }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043 }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747 }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341 }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073 }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661 }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069 }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670 }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598 }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261 }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835 }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733 }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672 }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819 }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426 }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146 }, +] diff --git a/benchmark/clickbench/wait_tcp.py b/benchmark/wait_tcp.py similarity index 100% rename from benchmark/clickbench/wait_tcp.py rename to benchmark/wait_tcp.py diff --git a/src/bendpy/pyproject.toml b/src/bendpy/pyproject.toml index 243b49520ecf2..6fc71944777e5 100644 --- a/src/bendpy/pyproject.toml +++ b/src/bendpy/pyproject.toml @@ -16,12 +16,12 @@ keywords = ["databend", "database", "analytics", "data-warehouse", "sql", "olap" classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", - "Intended Audience :: Science/Research", + "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", @@ -52,4 +52,3 @@ test = [ features = ["pyo3/extension-module"] module-name = "databend.databend" strip = true - From da2106e6f5d241f28fc1d28fcf2294d4d5b753c1 Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:15:39 +0800 Subject: [PATCH 2/8] ci: remove cluster_size from benchmark --- benchmark/benchmark_cloud.py | 11 ++++------- benchmark/benchmark_local.sh | 1 - benchmark/benchmark_local_merge_into.sh | 1 - benchmark/index.jinja | 25 ++----------------------- 4 files changed, 6 insertions(+), 32 deletions(-) diff --git a/benchmark/benchmark_cloud.py b/benchmark/benchmark_cloud.py index c4cbcfcbb3afb..71b8cd2bd6cb1 100755 --- a/benchmark/benchmark_cloud.py +++ b/benchmark/benchmark_cloud.py @@ -44,7 +44,6 @@ class ResultRecord: version: str warehouse: str machine: str - cluster_size: str tags: List[str] result: List[List[float]] values: Dict[str, List[float]] @@ -162,9 +161,9 @@ def ensure_dependencies() -> None: logger.info("bendsql version: %s", subprocess.check_output(["bendsql", "--version"]).decode().strip()) -SIZE_MAPPING: Dict[str, Dict[str, str]] = { - "Small": {"cluster_size": "16", "machine": "Small"}, - "Large": {"cluster_size": "64", "machine": "Large"}, +SIZE_MAPPING: Dict[str, str] = { + "Small": "Small", + "Large": "Large", } @@ -282,8 +281,7 @@ def main() -> None: run_date = datetime.now(timezone.utc).strftime("%Y-%m-%d") tags = ["s3", f"cache-{config.cache_size}"] - cluster_size = SIZE_MAPPING[config.size]["cluster_size"] - machine = SIZE_MAPPING[config.size]["machine"] + machine = SIZE_MAPPING[config.size] system: Optional[str] = None comment: Optional[str] = None if config.source and config.source_id: @@ -307,7 +305,6 @@ def main() -> None: version=config.version, warehouse=config.warehouse, machine=machine, - cluster_size=cluster_size, tags=tags, result=[], values={}, diff --git a/benchmark/benchmark_local.sh b/benchmark/benchmark_local.sh index 26ea4c8872755..6b077f77021a9 100755 --- a/benchmark/benchmark_local.sh +++ b/benchmark/benchmark_local.sh @@ -90,7 +90,6 @@ echo '{}' >result.json yq -i ".date = \"$(date -u +%Y-%m-%d)\"" -o json result.json yq -i ".load_time = ${load_time} | .data_size = ${data_size} | .result = []" -o json result.json yq -i ".machine = \"${instance_type}\"" -o json result.json -yq -i '.cluster_size = 1' -o json result.json yq -i '.tags = ["gp3"]' -o json result.json echo "Running queries..." diff --git a/benchmark/benchmark_local_merge_into.sh b/benchmark/benchmark_local_merge_into.sh index a66245c11ac41..e7edcc97d6aa7 100755 --- a/benchmark/benchmark_local_merge_into.sh +++ b/benchmark/benchmark_local_merge_into.sh @@ -79,7 +79,6 @@ echo '{}' >result.json yq -i ".date = \"$(date -u +%Y-%m-%d)\"" -o json result.json yq -i ".load_time = ${load_time} | .data_size = ${data_size} | .result = []" -o json result.json yq -i ".machine = \"${format_instance_type}\"" -o json result.json -yq -i '.cluster_size = 1' -o json result.json yq -i '.tags = ["gp3"]' -o json result.json yq -i ".system = \"${1}\"" -o json result.json diff --git a/benchmark/index.jinja b/benchmark/index.jinja index 2cc3250ac45e5..5428a12600115 100644 --- a/benchmark/index.jinja +++ b/benchmark/index.jinja @@ -328,12 +328,6 @@ All - - Cluster size: - - All - - Cache size: @@ -391,7 +385,6 @@ "system": {}, "type": {}, "machine": {}, - "cluster_size": {}, "cache_size": {}, "metric": "hot", "queries": [], @@ -401,7 +394,6 @@ selectors.system = selectors.system || {}; selectors.type = selectors.type || {}; selectors.machine = selectors.machine || {}; - selectors.cluster_size = selectors.cluster_size || {}; selectors.cache_size = selectors.cache_size || {}; selectors.metric = selectors.metric || 'hot'; selectors.queries = selectors.queries || []; @@ -429,7 +421,6 @@ let systems = document.getElementById('selectors_system'); let types = document.getElementById('selectors_type'); let machines = document.getElementById('selectors_machine'); - let cluster_sizes = document.getElementById('selectors_cluster_size'); let cache_sizes = document.getElementById('selectors_cache_size'); let unique_systems = [... new Set(data.map(elem => elem.system))]; @@ -499,15 +490,6 @@ selector.addEventListener('click', e => toggle(e, elem, selectors.machine)); }); - [... new Set(data.map(elem => elem.cluster_size))].sort( - (a, b) => ((typeof (b) === 'number') - (typeof (a) === 'number')) || (a - b)).map(elem => { - let selector = document.createElement('a'); - selector.className = 'selector selector-active'; - selector.appendChild(document.createTextNode(elem)); - cluster_sizes.appendChild(selector); - if (!(elem in selectors.cluster_size)) { selectors.cluster_size[elem] = true; } - selector.addEventListener('click', e => toggle(e, elem, selectors.cluster_size)); - }); [... new Set(data.map(getCacheLabel))].map(elem => { let selector = document.createElement('a'); selector.className = 'selector selector-active'; @@ -520,7 +502,6 @@ document.getElementById('select-all-systems').addEventListener('click', e => toggleAll(e, selectors.system)); document.getElementById('select-all-types').addEventListener('click', e => toggleAll(e, selectors.type)); document.getElementById('select-all-machines').addEventListener('click', e => toggleAll(e, selectors.machine)); - document.getElementById('select-all-cluster-sizes').addEventListener('click', e => toggleAll(e, selectors.cluster_size)); document.getElementById('select-all-cache-sizes').addEventListener('click', e => toggleAll(e, selectors.cache_size)); [...document.getElementById('selectors_run').querySelectorAll('a')].map(elem => elem.addEventListener('click', e => { @@ -538,7 +519,6 @@ [...systems.childNodes].map(elem => { elem.className = selectors.system[elem.innerText] ? 'selector selector-active' : 'selector' }); [...types.childNodes].map(elem => { elem.className = selectors.type[elem.innerText] ? 'selector selector-active' : 'selector' }); [...machines.childNodes].map(elem => { elem.className = selectors.machine[elem.innerText] ? 'selector selector-active' : 'selector' }); - [...cluster_sizes.childNodes].map(elem => { elem.className = selectors.cluster_size[elem.innerText] ? 'selector selector-active' : 'selector' }); [...cache_sizes.childNodes].map(elem => { elem.className = selectors.cache_size[elem.innerText] ? 'selector selector-active' : 'selector' }); [...document.getElementById('selectors_run').querySelectorAll('a')].map(elem => { @@ -651,7 +631,7 @@ if (!elem.fake) { let link = document.createElement('a'); - link.appendChild(document.createTextNode(`${elem.system} (${Number.isInteger(elem.cluster_size) && elem.cluster_size > 1 ? elem.cluster_size + '×' : ''}${elem.machine})`)); + link.appendChild(document.createTextNode(`${elem.system} (${elem.machine})`)); link.href = "https://github.com/ClickHouse/ClickBench/blob/main/" + elem.source; td_name.appendChild(link); } else { @@ -750,7 +730,6 @@ let filtered_data = data.filter(elem => selectors.system[elem.system] && selectors.machine[elem.machine] && - selectors.cluster_size[elem.cluster_size] && selectors.cache_size[getCacheLabel(elem)] && elem.tags.filter(type => selectors.type[type]).length > 0); @@ -793,7 +772,7 @@ sorted_indices.map(idx => { const elem = filtered_data[idx]; let th = document.createElement('th'); - th.appendChild(document.createTextNode(`${elem.system}\n(${Number.isInteger(elem.cluster_size) && elem.cluster_size > 1 ? elem.cluster_size + '×' : ''}${elem.machine})`)); + th.appendChild(document.createTextNode(`${elem.system}\n(${elem.machine})`)); th.className = 'th-entry'; th.dataset.system = elem.system; details_head.appendChild(th); From 6845fd667dceba0cb0a91edf3007a47ab0fc4788 Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:19:22 +0800 Subject: [PATCH 3/8] ci: empty cache_size as zero --- benchmark/benchmark_cloud.py | 3 ++- benchmark/index.jinja | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/benchmark/benchmark_cloud.py b/benchmark/benchmark_cloud.py index 71b8cd2bd6cb1..2061f729fd46d 100755 --- a/benchmark/benchmark_cloud.py +++ b/benchmark/benchmark_cloud.py @@ -102,7 +102,8 @@ def load_config() -> BenchmarkConfig: benchmark_id = os.environ.get("BENCHMARK_ID", str(int(time.time()))) dataset = os.environ.get("BENCHMARK_DATASET", "hits") size = os.environ.get("BENCHMARK_SIZE", "Small") - cache_size = os.environ.get("BENCHMARK_CACHE_SIZE", "0") + raw_cache_size = os.environ.get("BENCHMARK_CACHE_SIZE", "") + cache_size = raw_cache_size.strip() or "0" version = os.environ.get("BENCHMARK_VERSION", "") database = os.environ.get("BENCHMARK_DATABASE", "default") tries_raw = os.environ.get("BENCHMARK_TRIES", "3") diff --git a/benchmark/index.jinja b/benchmark/index.jinja index 5428a12600115..3a382b3c05fa1 100644 --- a/benchmark/index.jinja +++ b/benchmark/index.jinja @@ -424,7 +424,7 @@ let cache_sizes = document.getElementById('selectors_cache_size'); let unique_systems = [... new Set(data.map(elem => elem.system))]; - const default_cache_size = 'n/a'; + const default_cache_size = '0'; const getCacheLabel = entry => { if (entry.cache_size === undefined || entry.cache_size === null || entry.cache_size === '') { return default_cache_size; From 2127051772acca27fb237b7460279ae346d814dc Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:19:32 +0800 Subject: [PATCH 4/8] ci: add workspace uv --- pyproject.toml | 15 +++ uv.lock | 336 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 351 insertions(+) create mode 100644 pyproject.toml create mode 100644 uv.lock diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000000..78c4900f28851 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,15 @@ +[project] +name = "databend" +version = "0.1.0" +description = "Databend" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [] + + +[tool.uv.workspace] +members = [ + "benchmark", + "tests/udf", + "tests/cloud_control_server", +] diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000000000..d6b04ffdeca0f --- /dev/null +++ b/uv.lock @@ -0,0 +1,336 @@ +version = 1 +requires-python = ">=3.12" + +[manifest] +members = [ + "benchmark", + "cloud-control-server", + "databend", + "udf-server", +] + +[[package]] +name = "benchmark" +version = "0.1.0" +source = { virtual = "benchmark" } +dependencies = [ + { name = "jinja2" }, +] + +[package.metadata] +requires-dist = [{ name = "jinja2", specifier = ">=3.1.6" }] + +[[package]] +name = "cloud-control-server" +version = "0.1.0" +source = { virtual = "tests/cloud_control_server" } +dependencies = [ + { name = "grpcio" }, + { name = "grpcio-reflection" }, + { name = "protobuf" }, +] + +[package.dev-dependencies] +dev = [ + { name = "grpcio-tools" }, +] + +[package.metadata] +requires-dist = [ + { name = "grpcio" }, + { name = "grpcio-reflection" }, + { name = "protobuf" }, +] + +[package.metadata.requires-dev] +dev = [{ name = "grpcio-tools" }] + +[[package]] +name = "databend" +version = "0.1.0" +source = { virtual = "." } + +[[package]] +name = "databend-udf" +version = "0.2.20" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "prometheus-client" }, + { name = "pyarrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/11/1b63068017c913c208a70050ff34f76ba54250622afe55dfdd206d5f4b81/databend_udf-0.2.20.tar.gz", hash = "sha256:d3c4f6f840a5ebb8d818c3d3ae3683263f9f41f87f30c4679a1e3da6e2c63036", size = 29951 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/5f/d0734ca7931e96975f0a48e80a17ed8cc1511a77612751a74ebece1ab973/databend_udf-0.2.20-py3-none-any.whl", hash = "sha256:5849d3885736f4d26febcd9ea2b778f9982e4e96fd0c60789aa331a97dd39286", size = 20711 }, +] + +[[package]] +name = "grpcio" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/e0/318c1ce3ae5a17894d5791e87aea147587c9e702f24122cc7a5c8bbaeeb1/grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73", size = 12785182 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/05/8e29121994b8d959ffa0afd28996d452f291b48cfc0875619de0bde2c50c/grpcio-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8", size = 5799718 }, + { url = "https://files.pythonhosted.org/packages/d9/75/11d0e66b3cdf998c996489581bdad8900db79ebd83513e45c19548f1cba4/grpcio-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280", size = 11825627 }, + { url = "https://files.pythonhosted.org/packages/28/50/2f0aa0498bc188048f5d9504dcc5c2c24f2eb1a9337cd0fa09a61a2e75f0/grpcio-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4", size = 6359167 }, + { url = "https://files.pythonhosted.org/packages/66/e5/bbf0bb97d29ede1d59d6588af40018cfc345b17ce979b7b45424628dc8bb/grpcio-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11", size = 7044267 }, + { url = "https://files.pythonhosted.org/packages/f5/86/f6ec2164f743d9609691115ae8ece098c76b894ebe4f7c94a655c6b03e98/grpcio-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6", size = 6573963 }, + { url = "https://files.pythonhosted.org/packages/60/bc/8d9d0d8505feccfdf38a766d262c71e73639c165b311c9457208b56d92ae/grpcio-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8", size = 7164484 }, + { url = "https://files.pythonhosted.org/packages/67/e6/5d6c2fc10b95edf6df9b8f19cf10a34263b7fd48493936fffd5085521292/grpcio-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980", size = 8127777 }, + { url = "https://files.pythonhosted.org/packages/3f/c8/dce8ff21c86abe025efe304d9e31fdb0deaaa3b502b6a78141080f206da0/grpcio-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882", size = 7594014 }, + { url = "https://files.pythonhosted.org/packages/e0/42/ad28191ebf983a5d0ecef90bab66baa5a6b18f2bfdef9d0a63b1973d9f75/grpcio-1.76.0-cp312-cp312-win32.whl", hash = "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958", size = 3984750 }, + { url = "https://files.pythonhosted.org/packages/9e/00/7bd478cbb851c04a48baccaa49b75abaa8e4122f7d86da797500cccdd771/grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347", size = 4704003 }, + { url = "https://files.pythonhosted.org/packages/fc/ed/71467ab770effc9e8cef5f2e7388beb2be26ed642d567697bb103a790c72/grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2", size = 5807716 }, + { url = "https://files.pythonhosted.org/packages/2c/85/c6ed56f9817fab03fa8a111ca91469941fb514e3e3ce6d793cb8f1e1347b/grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468", size = 11821522 }, + { url = "https://files.pythonhosted.org/packages/ac/31/2b8a235ab40c39cbc141ef647f8a6eb7b0028f023015a4842933bc0d6831/grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3", size = 6362558 }, + { url = "https://files.pythonhosted.org/packages/bd/64/9784eab483358e08847498ee56faf8ff6ea8e0a4592568d9f68edc97e9e9/grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb", size = 7049990 }, + { url = "https://files.pythonhosted.org/packages/2b/94/8c12319a6369434e7a184b987e8e9f3b49a114c489b8315f029e24de4837/grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae", size = 6575387 }, + { url = "https://files.pythonhosted.org/packages/15/0f/f12c32b03f731f4a6242f771f63039df182c8b8e2cf8075b245b409259d4/grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77", size = 7166668 }, + { url = "https://files.pythonhosted.org/packages/ff/2d/3ec9ce0c2b1d92dd59d1c3264aaec9f0f7c817d6e8ac683b97198a36ed5a/grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03", size = 8124928 }, + { url = "https://files.pythonhosted.org/packages/1a/74/fd3317be5672f4856bcdd1a9e7b5e17554692d3db9a3b273879dc02d657d/grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42", size = 7589983 }, + { url = "https://files.pythonhosted.org/packages/45/bb/ca038cf420f405971f19821c8c15bcbc875505f6ffadafe9ffd77871dc4c/grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f", size = 3984727 }, + { url = "https://files.pythonhosted.org/packages/41/80/84087dc56437ced7cdd4b13d7875e7439a52a261e3ab4e06488ba6173b0a/grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8", size = 4702799 }, + { url = "https://files.pythonhosted.org/packages/b4/46/39adac80de49d678e6e073b70204091e76631e03e94928b9ea4ecf0f6e0e/grpcio-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62", size = 5808417 }, + { url = "https://files.pythonhosted.org/packages/9c/f5/a4531f7fb8b4e2a60b94e39d5d924469b7a6988176b3422487be61fe2998/grpcio-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd", size = 11828219 }, + { url = "https://files.pythonhosted.org/packages/4b/1c/de55d868ed7a8bd6acc6b1d6ddc4aa36d07a9f31d33c912c804adb1b971b/grpcio-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc", size = 6367826 }, + { url = "https://files.pythonhosted.org/packages/59/64/99e44c02b5adb0ad13ab3adc89cb33cb54bfa90c74770f2607eea629b86f/grpcio-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a", size = 7049550 }, + { url = "https://files.pythonhosted.org/packages/43/28/40a5be3f9a86949b83e7d6a2ad6011d993cbe9b6bd27bea881f61c7788b6/grpcio-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba", size = 6575564 }, + { url = "https://files.pythonhosted.org/packages/4b/a9/1be18e6055b64467440208a8559afac243c66a8b904213af6f392dc2212f/grpcio-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09", size = 7176236 }, + { url = "https://files.pythonhosted.org/packages/0f/55/dba05d3fcc151ce6e81327541d2cc8394f442f6b350fead67401661bf041/grpcio-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc", size = 8125795 }, + { url = "https://files.pythonhosted.org/packages/4a/45/122df922d05655f63930cf42c9e3f72ba20aadb26c100ee105cad4ce4257/grpcio-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc", size = 7592214 }, + { url = "https://files.pythonhosted.org/packages/4a/6e/0b899b7f6b66e5af39e377055fb4a6675c9ee28431df5708139df2e93233/grpcio-1.76.0-cp314-cp314-win32.whl", hash = "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e", size = 4062961 }, + { url = "https://files.pythonhosted.org/packages/19/41/0b430b01a2eb38ee887f88c1f07644a1df8e289353b78e82b37ef988fb64/grpcio-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e", size = 4834462 }, +] + +[[package]] +name = "grpcio-reflection" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "grpcio" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/10/767f9c2719c435616141efb3371f6e158f95cdde36a34876ae1d08ba7440/grpcio_reflection-1.76.0.tar.gz", hash = "sha256:e0e7e49921c2ee951e5ddff0bdbacbd1ac1a70888beb61d567f3d01b799decb1", size = 18845 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/af/6168cf4ff389deed1388b1196281c67cb36dbbf44aaee40e2bfb72ac0202/grpcio_reflection-1.76.0-py3-none-any.whl", hash = "sha256:d7c43f2047a2a9c9320a5905aa7133c677977436b5f63e6a868e507864a11c73", size = 22702 }, +] + +[[package]] +name = "grpcio-tools" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "grpcio" }, + { name = "protobuf" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a0/77/17d60d636ccd86a0db0eccc24d02967bbc3eea86b9db7324b04507ebaa40/grpcio_tools-1.76.0.tar.gz", hash = "sha256:ce80169b5e6adf3e8302f3ebb6cb0c3a9f08089133abca4b76ad67f751f5ad88", size = 5390807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/ca/a931c1439cabfe305c9afd07e233150cd0565aa062c20d1ee412ed188852/grpcio_tools-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:4ad555b8647de1ebaffb25170249f89057721ffb74f7da96834a07b4855bb46a", size = 2546852 }, + { url = "https://files.pythonhosted.org/packages/4c/07/935cfbb7dccd602723482a86d43fbd992f91e9867bca0056a1e9f348473e/grpcio_tools-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:243af7c8fc7ff22a40a42eb8e0f6f66963c1920b75aae2a2ec503a9c3c8b31c1", size = 5841777 }, + { url = "https://files.pythonhosted.org/packages/e4/92/8fcb5acebdccb647e0fa3f002576480459f6cf81e79692d7b3c4d6e29605/grpcio_tools-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8207b890f423142cc0025d041fb058f7286318df6a049565c27869d73534228b", size = 2594004 }, + { url = "https://files.pythonhosted.org/packages/9d/ea/64838e8113b7bfd4842b15c815a7354cb63242fdce9d6648d894b5d50897/grpcio_tools-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3dafa34c2626a6691d103877e8a145f54c34cf6530975f695b396ed2fc5c98f8", size = 2905563 }, + { url = "https://files.pythonhosted.org/packages/a6/d6/53798827d821098219e58518b6db52161ce4985620850aa74ce3795da8a7/grpcio_tools-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:30f1d2dda6ece285b3d9084e94f66fa721ebdba14ae76b2bc4c581c8a166535c", size = 2656936 }, + { url = "https://files.pythonhosted.org/packages/89/a3/d9c1cefc46a790eec520fe4e70e87279abb01a58b1a3b74cf93f62b824a2/grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a889af059dc6dbb82d7b417aa581601316e364fe12eb54c1b8d95311ea50916d", size = 3109811 }, + { url = "https://files.pythonhosted.org/packages/50/75/5997752644b73b5d59377d333a51c8a916606df077f5a487853e37dca289/grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c3f2c3c44c56eb5d479ab178f0174595d0a974c37dade442f05bb73dfec02f31", size = 3658786 }, + { url = "https://files.pythonhosted.org/packages/84/47/dcf8380df4bd7931ffba32fc6adc2de635b6569ca27fdec7121733797062/grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:479ce02dff684046f909a487d452a83a96b4231f7c70a3b218a075d54e951f56", size = 3325144 }, + { url = "https://files.pythonhosted.org/packages/04/88/ea3e5fdb874d8c2d04488e4b9d05056537fba70915593f0c283ac77df188/grpcio_tools-1.76.0-cp312-cp312-win32.whl", hash = "sha256:9ba4bb539936642a44418b38ee6c3e8823c037699e2cb282bd8a44d76a4be833", size = 993523 }, + { url = "https://files.pythonhosted.org/packages/de/b1/ce7d59d147675ec191a55816be46bc47a343b5ff07279eef5817c09cc53e/grpcio_tools-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:0cd489016766b05f9ed8a6b6596004b62c57d323f49593eac84add032a6d43f7", size = 1158493 }, + { url = "https://files.pythonhosted.org/packages/13/01/b16fe73f129df49811d886dc99d3813a33cf4d1c6e101252b81c895e929f/grpcio_tools-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:ff48969f81858397ef33a36b326f2dbe2053a48b254593785707845db73c8f44", size = 2546312 }, + { url = "https://files.pythonhosted.org/packages/25/17/2594c5feb76bb0b25bfbf91ec1075b276e1b2325e4bc7ea649a7b5dbf353/grpcio_tools-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:aa2f030fd0ef17926026ee8e2b700e388d3439155d145c568fa6b32693277613", size = 5839627 }, + { url = "https://files.pythonhosted.org/packages/c7/c6/097b1aa26fbf72fb3cdb30138a2788529e4f10d8759de730a83f5c06726e/grpcio_tools-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bacbf3c54f88c38de8e28f8d9b97c90b76b105fb9ddef05d2c50df01b32b92af", size = 2592817 }, + { url = "https://files.pythonhosted.org/packages/03/78/d1d985b48592a674509a85438c1a3d4c36304ddfc99d1b05d27233b51062/grpcio_tools-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0d4e4afe9a0e3c24fad2f1af45f98cf8700b2bfc4d790795756ba035d2ea7bdc", size = 2905186 }, + { url = "https://files.pythonhosted.org/packages/b9/0e/770afbb47f0b5f594b93a7b46a95b892abda5eebe60efb511e96cee52170/grpcio_tools-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fbbd4e1fc5af98001ceef5e780e8c10921d94941c3809238081e73818ef707f1", size = 2656188 }, + { url = "https://files.pythonhosted.org/packages/3d/2b/017c2fcf4c5d3cf00cf7d5ce21eb88521de0d89bdcf26538ad2862ec6d07/grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b05efe5a59883ab8292d596657273a60e0c3e4f5a9723c32feb9fc3a06f2f3ef", size = 3109141 }, + { url = "https://files.pythonhosted.org/packages/e9/5f/2495f88e3d50c6f2c2da2752bad4fa3a30c52ece6c9d8b0c636cd8b1430b/grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:be483b90e62b7892eb71fa1fc49750bee5b2ee35b5ec99dd2b32bed4bedb5d71", size = 3657892 }, + { url = "https://files.pythonhosted.org/packages/5e/1d/c4f39d31b19d9baf35d900bf3f969ce1c842f63a8560c8003ed2e5474760/grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:630cd7fd3e8a63e20703a7ad816979073c2253e591b5422583c27cae2570de73", size = 3324778 }, + { url = "https://files.pythonhosted.org/packages/b4/b6/35ee3a6e4af85a93da28428f81f4b29bcb36f6986b486ad71910fcc02e25/grpcio_tools-1.76.0-cp313-cp313-win32.whl", hash = "sha256:eb2567280f9f6da5444043f0e84d8408c7a10df9ba3201026b30e40ef3814736", size = 993084 }, + { url = "https://files.pythonhosted.org/packages/f3/7a/5bd72344d86ee860e5920c9a7553cfe3bc7b1fce79f18c00ac2497f5799f/grpcio_tools-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:0071b1c0bd0f5f9d292dca4efab32c92725d418e57f9c60acdc33c0172af8b53", size = 1158151 }, + { url = "https://files.pythonhosted.org/packages/f0/c0/aa20eebe8f3553b7851643e9c88d237c3a6ca30ade646897e25dbb27be99/grpcio_tools-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:c53c5719ef2a435997755abde3826ba4087174bd432aa721d8fac781fcea79e4", size = 2546297 }, + { url = "https://files.pythonhosted.org/packages/d9/98/6af702804934443c1d0d4d27d21b990d92d22ddd1b6bec6b056558cbbffa/grpcio_tools-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:e3db1300d7282264639eeee7243f5de7e6a7c0283f8bf05d66c0315b7b0f0b36", size = 5839804 }, + { url = "https://files.pythonhosted.org/packages/ea/8d/7725fa7b134ef8405ffe0a37c96eeb626e5af15d70e1bdac4f8f1abf842e/grpcio_tools-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b018a4b7455a7e8c16d0fdb3655a6ba6c9536da6de6c5d4f11b6bb73378165b", size = 2593922 }, + { url = "https://files.pythonhosted.org/packages/de/ff/5b6b5012c79fa72f9107dc13f7226d9ce7e059ea639fd8c779e0dd284386/grpcio_tools-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ec6e4de3866e47cfde56607b1fae83ecc5aa546e06dec53de11f88063f4b5275", size = 2905327 }, + { url = "https://files.pythonhosted.org/packages/24/01/2691d369ea462cd6b6c92544122885ca01f7fa5ac75dee023e975e675858/grpcio_tools-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b8da4d828883913f1852bdd67383713ae5c11842f6c70f93f31893eab530aead", size = 2656214 }, + { url = "https://files.pythonhosted.org/packages/6a/e7/3f8856e6ec3dd492336a91572993344966f237b0e3819fbe96437b19d313/grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5c120c2cf4443121800e7f9bcfe2e94519fa25f3bb0b9882359dd3b252c78a7b", size = 3109889 }, + { url = "https://files.pythonhosted.org/packages/f3/e4/ce5248072e47db276dc7e069e93978dcde490c959788ce7cce8081d0bfdc/grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:8b7df5591d699cd9076065f1f15049e9c3597e0771bea51c8c97790caf5e4197", size = 3657939 }, + { url = "https://files.pythonhosted.org/packages/f6/df/81ff88af93c52135e425cd5ec9fe8b186169c7d5f9e0409bdf2bbedc3919/grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a25048c5f984d33e3f5b6ad7618e98736542461213ade1bd6f2fcfe8ce804e3d", size = 3324752 }, + { url = "https://files.pythonhosted.org/packages/35/3d/f6b83044afbf6522254a3b509515a00fed16a819c87731a478dbdd1d35c1/grpcio_tools-1.76.0-cp314-cp314-win32.whl", hash = "sha256:4b77ce6b6c17869858cfe14681ad09ed3a8a80e960e96035de1fd87f78158740", size = 1015578 }, + { url = "https://files.pythonhosted.org/packages/95/4d/31236cddb7ffb09ba4a49f4f56d2608fec3bbb21c7a0a975d93bca7cd22e/grpcio_tools-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:2ccd2c8d041351cc29d0fc4a84529b11ee35494a700b535c1f820b642f2a72fc", size = 1190242 }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615 }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020 }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332 }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947 }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962 }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760 }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529 }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015 }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540 }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105 }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906 }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622 }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029 }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374 }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980 }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990 }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784 }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588 }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041 }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543 }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113 }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911 }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658 }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066 }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639 }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569 }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284 }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801 }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769 }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642 }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612 }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200 }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973 }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619 }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029 }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408 }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005 }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048 }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821 }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606 }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043 }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747 }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341 }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073 }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661 }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069 }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670 }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598 }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261 }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835 }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733 }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672 }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819 }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426 }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146 }, +] + +[[package]] +name = "prometheus-client" +version = "0.23.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/53/3edb5d68ecf6b38fcbcc1ad28391117d2a322d9a1a3eff04bfdb184d8c3b/prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce", size = 80481 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/db/14bafcb4af2139e046d03fd00dea7873e48eafe18b7d2797e73d6681f210/prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99", size = 61145 }, +] + +[[package]] +name = "protobuf" +version = "6.33.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/44/e49ecff446afeec9d1a66d6bbf9adc21e3c7cea7803a920ca3773379d4f6/protobuf-6.33.2.tar.gz", hash = "sha256:56dc370c91fbb8ac85bc13582c9e373569668a290aa2e66a590c2a0d35ddb9e4", size = 444296 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/91/1e3a34881a88697a7354ffd177e8746e97a722e5e8db101544b47e84afb1/protobuf-6.33.2-cp310-abi3-win32.whl", hash = "sha256:87eb388bd2d0f78febd8f4c8779c79247b26a5befad525008e49a6955787ff3d", size = 425603 }, + { url = "https://files.pythonhosted.org/packages/64/20/4d50191997e917ae13ad0a235c8b42d8c1ab9c3e6fd455ca16d416944355/protobuf-6.33.2-cp310-abi3-win_amd64.whl", hash = "sha256:fc2a0e8b05b180e5fc0dd1559fe8ebdae21a27e81ac77728fb6c42b12c7419b4", size = 436930 }, + { url = "https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d9b19771ca75935b3a4422957bc518b0cecb978b31d1dd12037b088f6bcc0e43", size = 427621 }, + { url = "https://files.pythonhosted.org/packages/7d/4f/f743761e41d3b2b2566748eb76bbff2b43e14d5fcab694f494a16458b05f/protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:b5d3b5625192214066d99b2b605f5783483575656784de223f00a8d00754fc0e", size = 324460 }, + { url = "https://files.pythonhosted.org/packages/b1/fa/26468d00a92824020f6f2090d827078c09c9c587e34cbfd2d0c7911221f8/protobuf-6.33.2-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8cd7640aee0b7828b6d03ae518b5b4806fdfc1afe8de82f79c3454f8aef29872", size = 339168 }, + { url = "https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:1f8017c48c07ec5859106533b682260ba3d7c5567b1ca1f24297ce03384d1b4f", size = 323270 }, + { url = "https://files.pythonhosted.org/packages/0e/15/4f02896cc3df04fc465010a4c6a0cd89810f54617a32a70ef531ed75d61c/protobuf-6.33.2-py3-none-any.whl", hash = "sha256:7636aad9bb01768870266de5dc009de2d1b936771b38a793f73cbbf279c91c5c", size = 170501 }, +] + +[[package]] +name = "pyarrow" +version = "22.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/53/04a7fdc63e6056116c9ddc8b43bc28c12cdd181b85cbeadb79278475f3ae/pyarrow-22.0.0.tar.gz", hash = "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", size = 1151151 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/63/ba23862d69652f85b615ca14ad14f3bcfc5bf1b99ef3f0cd04ff93fdad5a/pyarrow-22.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", size = 34211578 }, + { url = "https://files.pythonhosted.org/packages/b1/d0/f9ad86fe809efd2bcc8be32032fa72e8b0d112b01ae56a053006376c5930/pyarrow-22.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", size = 35989906 }, + { url = "https://files.pythonhosted.org/packages/b4/a8/f910afcb14630e64d673f15904ec27dd31f1e009b77033c365c84e8c1e1d/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", size = 45021677 }, + { url = "https://files.pythonhosted.org/packages/13/95/aec81f781c75cd10554dc17a25849c720d54feafb6f7847690478dcf5ef8/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", size = 47726315 }, + { url = "https://files.pythonhosted.org/packages/bb/d4/74ac9f7a54cfde12ee42734ea25d5a3c9a45db78f9def949307a92720d37/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", size = 47990906 }, + { url = "https://files.pythonhosted.org/packages/2e/71/fedf2499bf7a95062eafc989ace56572f3343432570e1c54e6599d5b88da/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", size = 50306783 }, + { url = "https://files.pythonhosted.org/packages/68/ed/b202abd5a5b78f519722f3d29063dda03c114711093c1995a33b8e2e0f4b/pyarrow-22.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", size = 27972883 }, + { url = "https://files.pythonhosted.org/packages/a6/d6/d0fac16a2963002fc22c8fa75180a838737203d558f0ed3b564c4a54eef5/pyarrow-22.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", size = 34204629 }, + { url = "https://files.pythonhosted.org/packages/c6/9c/1d6357347fbae062ad3f17082f9ebc29cc733321e892c0d2085f42a2212b/pyarrow-22.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", size = 35985783 }, + { url = "https://files.pythonhosted.org/packages/ff/c0/782344c2ce58afbea010150df07e3a2f5fdad299cd631697ae7bd3bac6e3/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", size = 45020999 }, + { url = "https://files.pythonhosted.org/packages/1b/8b/5362443737a5307a7b67c1017c42cd104213189b4970bf607e05faf9c525/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a", size = 47724601 }, + { url = "https://files.pythonhosted.org/packages/69/4d/76e567a4fc2e190ee6072967cb4672b7d9249ac59ae65af2d7e3047afa3b/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6", size = 48001050 }, + { url = "https://files.pythonhosted.org/packages/01/5e/5653f0535d2a1aef8223cee9d92944cb6bccfee5cf1cd3f462d7cb022790/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941", size = 50307877 }, + { url = "https://files.pythonhosted.org/packages/2d/f8/1d0bd75bf9328a3b826e24a16e5517cd7f9fbf8d34a3184a4566ef5a7f29/pyarrow-22.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145", size = 27977099 }, + { url = "https://files.pythonhosted.org/packages/90/81/db56870c997805bf2b0f6eeeb2d68458bf4654652dccdcf1bf7a42d80903/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1", size = 34336685 }, + { url = "https://files.pythonhosted.org/packages/1c/98/0727947f199aba8a120f47dfc229eeb05df15bcd7a6f1b669e9f882afc58/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f", size = 36032158 }, + { url = "https://files.pythonhosted.org/packages/96/b4/9babdef9c01720a0785945c7cf550e4acd0ebcd7bdd2e6f0aa7981fa85e2/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d", size = 44892060 }, + { url = "https://files.pythonhosted.org/packages/f8/ca/2f8804edd6279f78a37062d813de3f16f29183874447ef6d1aadbb4efa0f/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f", size = 47504395 }, + { url = "https://files.pythonhosted.org/packages/b9/f0/77aa5198fd3943682b2e4faaf179a674f0edea0d55d326d83cb2277d9363/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746", size = 48066216 }, + { url = "https://files.pythonhosted.org/packages/79/87/a1937b6e78b2aff18b706d738c9e46ade5bfcf11b294e39c87706a0089ac/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95", size = 50288552 }, + { url = "https://files.pythonhosted.org/packages/60/ae/b5a5811e11f25788ccfdaa8f26b6791c9807119dffcf80514505527c384c/pyarrow-22.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc", size = 28262504 }, + { url = "https://files.pythonhosted.org/packages/bd/b0/0fa4d28a8edb42b0a7144edd20befd04173ac79819547216f8a9f36f9e50/pyarrow-22.0.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d", size = 34224062 }, + { url = "https://files.pythonhosted.org/packages/0f/a8/7a719076b3c1be0acef56a07220c586f25cd24de0e3f3102b438d18ae5df/pyarrow-22.0.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9", size = 35990057 }, + { url = "https://files.pythonhosted.org/packages/89/3c/359ed54c93b47fb6fe30ed16cdf50e3f0e8b9ccfb11b86218c3619ae50a8/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7", size = 45068002 }, + { url = "https://files.pythonhosted.org/packages/55/fc/4945896cc8638536ee787a3bd6ce7cec8ec9acf452d78ec39ab328efa0a1/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde", size = 47737765 }, + { url = "https://files.pythonhosted.org/packages/cd/5e/7cb7edeb2abfaa1f79b5d5eb89432356155c8426f75d3753cbcb9592c0fd/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc", size = 48048139 }, + { url = "https://files.pythonhosted.org/packages/88/c6/546baa7c48185f5e9d6e59277c4b19f30f48c94d9dd938c2a80d4d6b067c/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0", size = 50314244 }, + { url = "https://files.pythonhosted.org/packages/3c/79/755ff2d145aafec8d347bf18f95e4e81c00127f06d080135dfc86aea417c/pyarrow-22.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730", size = 28757501 }, + { url = "https://files.pythonhosted.org/packages/0e/d2/237d75ac28ced3147912954e3c1a174df43a95f4f88e467809118a8165e0/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2", size = 34355506 }, + { url = "https://files.pythonhosted.org/packages/1e/2c/733dfffe6d3069740f98e57ff81007809067d68626c5faef293434d11bd6/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70", size = 36047312 }, + { url = "https://files.pythonhosted.org/packages/7c/2b/29d6e3782dc1f299727462c1543af357a0f2c1d3c160ce199950d9ca51eb/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754", size = 45081609 }, + { url = "https://files.pythonhosted.org/packages/8d/42/aa9355ecc05997915af1b7b947a7f66c02dcaa927f3203b87871c114ba10/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91", size = 47703663 }, + { url = "https://files.pythonhosted.org/packages/ee/62/45abedde480168e83a1de005b7b7043fd553321c1e8c5a9a114425f64842/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c", size = 48066543 }, + { url = "https://files.pythonhosted.org/packages/84/e9/7878940a5b072e4f3bf998770acafeae13b267f9893af5f6d4ab3904b67e/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80", size = 50288838 }, + { url = "https://files.pythonhosted.org/packages/7b/03/f335d6c52b4a4761bcc83499789a1e2e16d9d201a58c327a9b5cc9a41bd9/pyarrow-22.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae", size = 29185594 }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486 }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614 }, +] + +[[package]] +name = "udf-server" +version = "0.1.0" +source = { virtual = "tests/udf" } +dependencies = [ + { name = "databend-udf" }, + { name = "pyarrow" }, +] + +[package.metadata] +requires-dist = [ + { name = "databend-udf", specifier = ">=0.2.7" }, + { name = "pyarrow" }, +] From a65e12b3dcfd6e350879c33e030270f664a6eb2b Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:24:39 +0800 Subject: [PATCH 5/8] ci: note cache size in result --- benchmark/index.jinja | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/benchmark/index.jinja b/benchmark/index.jinja index 3a382b3c05fa1..a5b5297bfc70d 100644 --- a/benchmark/index.jinja +++ b/benchmark/index.jinja @@ -431,6 +431,10 @@ } return entry.cache_size.toString(); }; + const formatMachineWithCache = entry => { + const machine = entry.machine || 'n/a'; + return `${machine}, cache ${getCacheLabel(entry)}`; + }; function toggle(e, elem, selectors_map) { selectors_map[elem] = !selectors_map[elem]; @@ -629,13 +633,15 @@ let td_name = document.createElement('td'); td_name.className = 'summary-name'; + const machineLabel = formatMachineWithCache(elem); + if (!elem.fake) { let link = document.createElement('a'); - link.appendChild(document.createTextNode(`${elem.system} (${elem.machine})`)); + link.appendChild(document.createTextNode(`${elem.system} (${machineLabel})`)); link.href = "https://github.com/ClickHouse/ClickBench/blob/main/" + elem.source; td_name.appendChild(link); } else { - td_name.appendChild(document.createTextNode(elem.system)); + td_name.appendChild(document.createTextNode(`${elem.system} (${machineLabel})`)); } if (elem.comment) { td_name.appendChild(addNote(elem.comment)); } @@ -772,7 +778,8 @@ sorted_indices.map(idx => { const elem = filtered_data[idx]; let th = document.createElement('th'); - th.appendChild(document.createTextNode(`${elem.system}\n(${elem.machine})`)); + const machineLabel = formatMachineWithCache(elem); + th.appendChild(document.createTextNode(`${elem.system}\n(${machineLabel})`)); th.className = 'th-entry'; th.dataset.system = elem.system; details_head.appendChild(th); From b15744eb0432fb3230e005f0d3457344ce907ea4 Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:37:54 +0800 Subject: [PATCH 6/8] ci: show total time for benchmark --- benchmark/index.jinja | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/benchmark/index.jinja b/benchmark/index.jinja index a5b5297bfc70d..d983b7fe53fcb 100644 --- a/benchmark/index.jinja +++ b/benchmark/index.jinja @@ -577,6 +577,8 @@ let summary = {}; + const total_query_times = new Array(filtered_data.length).fill(null); + const num_queries = filtered_data[0].result.length; const baseline_data = [...filtered_data[0].result.keys()].map(query_num => @@ -594,11 +596,12 @@ summaries = filtered_data.map(elem => elem.data_size / min_data_size); document.getElementById('time-or-size').innerText = 'size'; } else { - summaries = filtered_data.map(elem => { + summaries = filtered_data.map((elem, idx) => { const fallback_timing = missing_result_penalty * Math.max(missing_result_time, ...elem.result.map(timings => selectRun(timings))); let accumulator = 0; let used_queries = 0; + let total_duration = 0; const no_queries_selected = selectors.queries.filter(x => x).length == 0; @@ -609,9 +612,11 @@ const ratio = (constant_time_add + curr_timing) / (constant_time_add + baseline_timing); accumulator += Math.log(ratio); ++used_queries; + total_duration += curr_timing; } } + total_query_times[idx] = total_duration; return Math.exp(accumulator / used_queries); }); document.getElementById('time-or-size').innerText = 'time'; @@ -655,7 +660,7 @@ const text = selectors.metric == 'load' ? (elem.load_time ? `${Math.round(elem.load_time)}s (×${ratio.toFixed(2)})` : 'stateless') : selectors.metric == 'size' ? `${(elem.data_size / 1024 / 1024 / 1024).toFixed(2)} GiB (×${ratio.toFixed(2)})` - : `×${ratio.toFixed(2)}`; + : `${total_query_times[idx].toFixed(2)}s (×${ratio.toFixed(2)})`; td_number.appendChild(document.createTextNode(text)); @@ -675,7 +680,7 @@ table.appendChild(tr); }); - return [sorted_indices, baseline_data]; + return [sorted_indices, baseline_data, total_query_times]; } function colorize(elem, ratio) { @@ -752,7 +757,7 @@ filtered_data = [...filtered_data, ...additional_data_size_points]; } - let [sorted_indices, baseline_data] = renderSummary(filtered_data); + let [sorted_indices, baseline_data, total_query_times] = renderSummary(filtered_data); sorted_indices = sorted_indices.filter(idx => !filtered_data[idx].fake); /// Generate details @@ -785,6 +790,32 @@ details_head.appendChild(th); }); + /// Total query times + if (selectors.metric == 'hot' || selectors.metric == 'cold') { + let tr = document.createElement('tr'); + tr.className = 'shadow'; + + let td_title = document.createElement('td'); + td_title.colSpan = 2; + td_title.appendChild(document.createTextNode('Total query time: ')); + tr.appendChild(td_title); + + const min_total_time = Math.min(...sorted_indices.map(idx => total_query_times[idx]).filter(x => x !== null)); + + sorted_indices.map(idx => { + const total_time = total_query_times[idx]; + const ratio = total_time / min_total_time; + + let td = document.createElement('td'); + td.appendChild(document.createTextNode(`${total_time.toFixed(2)}s (×${ratio.toFixed(2)})`)); + + colorize(td, ratio); + tr.appendChild(td); + }); + + details_body.appendChild(tr); + } + /// Load times { let tr = document.createElement('tr'); From 7a4af84f3acbf71c98f97625b220de4dfce70575 Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:48:06 +0800 Subject: [PATCH 7/8] z --- .github/workflows/reuse.benchmark.yml | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/.github/workflows/reuse.benchmark.yml b/.github/workflows/reuse.benchmark.yml index 36ec6d92cd103..4960100bd2cd1 100644 --- a/.github/workflows/reuse.benchmark.yml +++ b/.github/workflows/reuse.benchmark.yml @@ -189,10 +189,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install Dependencies - run: | - sudo apt-get update -yq - sudo apt-get install -yq python3-jinja2 + - uses: astral-sh/setup-uv@v5 - uses: actions/download-artifact@v4 with: path: benchmark/results @@ -224,12 +221,13 @@ jobs: run: | echo -e "## ClickBench Report\n" > /tmp/body shopt -s nullglob + uv sync for p in results/*; do [ -d "$p" ] || continue dataset=$(basename $p) aws s3 sync results/$dataset/ ${REPORT_S3_PREFIX}/ --include "*.json" --no-progress --checksum-algorithm=CRC32 aws s3 sync "s3://benchmark/clickbench/release/${dataset}/latest/" ./results/${dataset}/ --exclude "*" --include "*.json" || true - ./update_results.py --dataset $dataset --pr ${{ inputs.source_id }} + uv run update_results.py --dataset $dataset --pr ${{ inputs.source_id }} aws s3 cp ./results/${dataset}.html ${REPORT_S3_PREFIX}/${dataset}.html --no-progress --checksum-algorithm=CRC32 echo "* **${dataset}**: https://benchmark.databend.com/clickbench/pr/${{ inputs.source_id }}/${{ inputs.run_id }}/${dataset}.html" >> /tmp/body done @@ -254,10 +252,7 @@ jobs: # - "internal" steps: - uses: actions/checkout@v4 - - name: Install Dependencies - run: | - sudo apt-get update -yq - sudo apt-get install -yq python3-jinja2 + - uses: astral-sh/setup-uv@v5 - uses: actions/download-artifact@v4 with: path: benchmark/results @@ -267,6 +262,7 @@ jobs: working-directory: benchmark run: | shopt -s nullglob + uv sync for result in results/*.json; do dataset=$(echo $result | sed -E 's/.*result-(\w+)-.*\.json/\1/') mkdir -p results/${dataset}/ @@ -288,7 +284,7 @@ jobs: run: | aws s3 sync s3://benchmark/clickbench/release/${{ matrix.dataset }}/$(date --date='-1 month' -u +%Y)/$(date --date='-1 month' -u +%m)/ ./results/${{ matrix.dataset }}/ aws s3 sync s3://benchmark/clickbench/release/${{ matrix.dataset }}/$(date -u +%Y)/$(date -u +%m)/ ./results/${{ matrix.dataset }}/ - ./update_results.py --dataset ${{ matrix.dataset }} --release ${{ inputs.source_id }} + uv run update_results.py --dataset ${{ matrix.dataset }} --release ${{ inputs.source_id }} RESULT_PREFIX="s3://benchmark/clickbench/release/${{ matrix.dataset }}/$(date -u +%Y)/$(date -u +%m)/$(date -u +%Y-%m-%d)/${{ inputs.source_id }}" LATEST_PREFIX="s3://benchmark/clickbench/release/${{ matrix.dataset }}/latest/latest" From e3a6d20482b7fc84347619201c164554086dfbe9 Mon Sep 17 00:00:00 2001 From: everpcpc Date: Wed, 10 Dec 2025 10:48:56 +0800 Subject: [PATCH 8/8] z --- .github/actions/benchmark_cloud/action.yml | 6 ------ .github/actions/benchmark_local/action.yml | 6 ------ 2 files changed, 12 deletions(-) diff --git a/.github/actions/benchmark_cloud/action.yml b/.github/actions/benchmark_cloud/action.yml index 60c5334e4dd18..81624b63c84e4 100644 --- a/.github/actions/benchmark_cloud/action.yml +++ b/.github/actions/benchmark_cloud/action.yml @@ -46,12 +46,6 @@ inputs: runs: using: "composite" steps: - - name: Install script dependencies - shell: bash - run: | - sudo apt-get update -yq - sudo apt-get install -yq python3 - - name: Prepare working-directory: benchmark shell: bash diff --git a/.github/actions/benchmark_local/action.yml b/.github/actions/benchmark_local/action.yml index cdba436da57f0..01e91256988f1 100644 --- a/.github/actions/benchmark_local/action.yml +++ b/.github/actions/benchmark_local/action.yml @@ -20,12 +20,6 @@ inputs: runs: using: "composite" steps: - - name: Install script dependencies - shell: bash - run: | - sudo apt-get update -yq - sudo apt-get install -yq python3 - - name: Run Benchmark working-directory: benchmark env: