diff --git a/.github/workflows/.lint.yml b/.github/workflows/.lint.yml index 342b766889..6646a5328a 100644 --- a/.github/workflows/.lint.yml +++ b/.github/workflows/.lint.yml @@ -246,7 +246,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python @@ -329,7 +329,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python @@ -649,7 +649,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python @@ -696,7 +696,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python @@ -1208,7 +1208,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python @@ -1286,7 +1286,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python @@ -1336,7 +1336,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python diff --git a/.github/workflows/.static-type-check.yml b/.github/workflows/.static-type-check.yml index 16a15a57a5..97bd491b97 100644 --- a/.github/workflows/.static-type-check.yml +++ b/.github/workflows/.static-type-check.yml @@ -147,6 +147,7 @@ jobs: uv run poe static-type-check-python --package=hm-locust uv run poe static-type-check-python --package=hm-xxhash uv run poe static-type-check-python --package=machine-learning.convolutional-neural-network + uv run poe static-type-check-python --package=machine-learning.dali uv run poe static-type-check-python --package=machine-learning.feature-store uv run poe static-type-check-python --package=machine-learning.graph-neural-network uv run poe static-type-check-python --package=machine-learning.hm-gradio.applications.classify-image diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d062b67b7..871c2b3efd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,6 +29,7 @@ jobs: api-python: ${{ steps.filter.outputs.api-python }} api-rust: ${{ steps.filter.outputs.api-rust }} call-matlab-function-in-python: ${{ steps.filter.outputs.call-matlab-function-in-python }} + dali: ${{ steps.filter.outputs.dali }} decode-can-data: ${{ steps.filter.outputs.decode-can-data }} development-aws-glue-spark-scripts: ${{ steps.filter.outputs.development-aws-glue-spark-scripts }} production-aws-glue-spark-scripts: ${{ steps.filter.outputs.production-aws-glue-spark-scripts }} @@ -139,6 +140,9 @@ jobs: call-matlab-function-in-python: - '.github/workflows/test.yml' - 'matlab/call-matlab-function-in-python/**' + dali: + - '.github/workflows/test.yml' + - 'machine-learning/dali/**' decode-can-data: - '.github/workflows/test.yml' - 'embedded/decode-can-data/**' @@ -776,7 +780,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: api-python/uv.lock - name: Set up Python @@ -833,7 +837,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-orchestration/hm-airflow/uv.lock - name: Set up Python @@ -866,7 +870,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-platform/aws/amazon-sagemaker/pytorch-mnist/uv.lock - name: Set up Python @@ -899,7 +903,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/triton/amazon-sagamaker-triton-resnet-50/deploy/uv.lock - name: Set up Python @@ -932,7 +936,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/triton/amazon-sagamaker-triton-resnet-50/infer/uv.lock - name: Set up Python @@ -965,7 +969,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-infrastructure/terraform/environments/production/aws/general/files/aws-glue/spark-scripts/uv.lock - name: Set up Python @@ -998,7 +1002,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-platform/aws/aws-parallelcluster/pcluster/uv.lock - name: Set up Python @@ -1036,7 +1040,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: matlab/call-matlab-function-in-python/uv.lock - name: Set up Python @@ -1069,7 +1073,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: embedded/decode-can-data/uv.lock - name: Set up Python @@ -1102,7 +1106,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: embedded/format-can-data/uv.lock - name: Set up Python @@ -1135,7 +1139,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-distribution-service/uv.lock - name: Set up Python @@ -1168,7 +1172,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-transformation/dbt/projects/dbt_hm_postgres/uv.lock - name: Set up Python @@ -1201,7 +1205,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-storage/delta-lake/read-delta-lake-by-amazon-athena/uv.lock - name: Set up Python @@ -1234,7 +1238,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-storage/delta-lake/read-delta-lake-by-trino/uv.lock - name: Set up Python @@ -1267,7 +1271,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-storage/delta-lake/write-to-delta-lake/uv.lock - name: Set up Python @@ -1300,7 +1304,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-storage/hm-duckdb/uv.lock - name: Set up Python @@ -1333,7 +1337,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-autogluon/uv.lock - name: Set up Python @@ -1353,6 +1357,40 @@ jobs: with: directory: machine-learning/hm-autogluon + dali-test: + name: DALI | Test + needs: detect-changes + if: ${{ false }} + # if: ${{ needs.detect-changes.outputs.dali == 'true' }} + runs-on: ubuntu-24.04 + environment: test + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@v4.2.2 + - name: Install uv + uses: astral-sh/setup-uv@v4.2.0 + with: + version: 0.5.9 + enable-cache: true + cache-dependency-glob: machine-learning/dali/uv.lock + - name: Set up Python + uses: actions/setup-python@v5.3.0 + with: + python-version-file: machine-learning/dali/pyproject.toml + - name: Install dependencies + working-directory: machine-learning/dali + run: | + uv sync --dev + - name: Test + working-directory: machine-learning/dali + run: | + uv run poe test-coverage + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5.1.1 + with: + directory: machine-learning/dali + feature-store-test: name: Feature Store | Test needs: detect-changes @@ -1366,7 +1404,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/feature-store/uv.lock - name: Set up Python @@ -1399,7 +1437,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-analytics/hm-geopandas/uv.lock - name: Set up Python @@ -1432,7 +1470,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hugging-face/analyze-sentiment/uv.lock - name: Set up Python @@ -1465,7 +1503,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-gradio/applications/classify-image/uv.lock - name: Set up Python @@ -1498,7 +1536,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-streamlit/applications/live-line-chart/uv.lock - name: Set up Python @@ -1531,7 +1569,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-streamlit/applications/map/uv.lock - name: Set up Python @@ -1564,7 +1602,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: high-performance-computing/hm-jax/uv.lock - name: Set up Python @@ -1597,7 +1635,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-flax/uv.lock - name: Set up Python @@ -1630,7 +1668,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-kubeflow/pipelines/calculate/uv.lock - name: Set up Python @@ -1663,7 +1701,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-kubeflow/pipelines/classify-mnist/uv.lock - name: Set up Python @@ -1696,7 +1734,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-langchain/applications/chat-pdf/uv.lock - name: Set up Python @@ -1729,7 +1767,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-mlflow/experiments/classify-mnist/uv.lock - name: Set up Python @@ -1762,7 +1800,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-mlflow/experiments/predict-diabetes/uv.lock - name: Set up Python @@ -1795,7 +1833,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/neural-forecasting/forecast-air-passenger-number/uv.lock - name: Set up Python @@ -1828,7 +1866,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: hardware-in-the-loop/national-instruments/hm-pyvisa/uv.lock - name: Set up Python @@ -1861,7 +1899,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: hardware-in-the-loop/national-instruments/hm-tdms/uv.lock - name: Set up Python @@ -1894,7 +1932,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: hardware-in-the-loop/national-instruments/veristand/hm-veristand/uv.lock - name: Set up Python @@ -1927,7 +1965,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: computer-vision/hm-open3d/uv.lock - name: Set up Python @@ -1960,7 +1998,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: aerospace/hm-aerosandbox/uv.lock - name: Set up Python @@ -1993,7 +2031,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: aerospace/hm-openaerostruct/uv.lock - name: Set up Python @@ -2026,7 +2064,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-orchestration/hm-prefect/workflows/calculate/uv.lock - name: Set up Python @@ -2059,7 +2097,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-orchestration/hm-prefect/workflows/greet/uv.lock - name: Set up Python @@ -2092,7 +2130,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-orchestration/hm-prefect/workflows/print-platform/uv.lock - name: Set up Python @@ -2125,7 +2163,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-security/hm-prowler/uv.lock - name: Set up Python @@ -2158,7 +2196,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-infrastructure/hm-pulumi/uv.lock - name: Set up Python @@ -2191,7 +2229,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: computer-vision/hm-pyvista/mount-saint-helens/uv.lock - name: Set up Python @@ -2224,7 +2262,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-computing/hm-ray/applications/calculate/uv.lock - name: Set up Python @@ -2257,7 +2295,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-computing/hm-ray/applications/process-flight-data/uv.lock - name: Set up Python @@ -2290,7 +2328,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/reinforcement-learning/cart-pole/uv.lock - name: Set up Python @@ -2323,7 +2361,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: embedded/hm-serial/uv.lock - name: Set up Python @@ -2356,7 +2394,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: embedded/pack-unpack-data/uv.lock - name: Set up Python @@ -2389,7 +2427,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: cloud-computing/hm-skypilot/uv.lock - name: Set up Python @@ -2422,7 +2460,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: quantum-computing/uv.lock - name: Set up Python @@ -2455,7 +2493,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/hm-supervision/detect-objects/uv.lock - name: Set up Python @@ -2488,7 +2526,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: hm-xxhash/uv.lock - name: Set up Python @@ -2521,7 +2559,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-processing/hm-spark/applications/analyze-coffee-customers/uv.lock - name: Set up Python @@ -2554,7 +2592,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-processing/hm-spark/applications/find-retired-people-python/uv.lock - name: Set up Python @@ -2610,7 +2648,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-processing/hm-spark/applications/find-taxi-top-routes/uv.lock - name: Set up Python @@ -2643,7 +2681,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-processing/hm-spark/applications/find-taxi-top-routes-sql/uv.lock - name: Set up Python @@ -2699,7 +2737,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-processing/hm-spark/applications/recommend-movies/uv.lock - name: Set up Python @@ -3025,7 +3063,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-visualization/grafana/hm-dashboard/uv.lock - name: Set up Python @@ -3087,7 +3125,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: data-visualization/iads/iads-data-manager/iads-config-reader/uv.lock - name: Set up Python @@ -3225,7 +3263,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/graph-neural-network/uv.lock - name: Set up Python @@ -3260,7 +3298,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/graph-neural-network/uv.lock - name: Set up Python @@ -3291,7 +3329,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/convolutional-neural-network/uv.lock - name: Set up Python @@ -3326,7 +3364,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/convolutional-neural-network/uv.lock - name: Set up Python @@ -3394,7 +3432,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4.2.0 with: - version: 0.5.6 + version: 0.5.9 enable-cache: true cache-dependency-glob: machine-learning/convolutional-neural-network/uv.lock - name: Set up Python diff --git a/.mergify.yml b/.mergify.yml index 2a3fa352b5..b19a72507b 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -254,6 +254,9 @@ pull_request_rules: - or: - check-success=AutoGluon | Test - check-skipped=AutoGluon | Test + # - or: + # - check-success=DALI | Test + # - check-skipped=DALI | Test - or: - check-success=Feature Store | Test - check-skipped=Feature Store | Test diff --git a/Makefile b/Makefile index 5afea0d476..763b42b546 100644 --- a/Makefile +++ b/Makefile @@ -350,6 +350,7 @@ static-type-check-python: uv run poe static-type-check-python --package=hm-locust uv run poe static-type-check-python --package=hm-xxhash uv run poe static-type-check-python --package=machine-learning.convolutional-neural-network + uv run poe static-type-check-python --package=machine-learning.dali uv run poe static-type-check-python --package=machine-learning.feature-store uv run poe static-type-check-python --package=machine-learning.graph-neural-network uv run poe static-type-check-python --package=machine-learning.hm-gradio.applications.classify-image diff --git a/README.md b/README.md index ba6b8cf8e1..d3fb7d3b0a 100644 --- a/README.md +++ b/README.md @@ -415,7 +415,8 @@ The diagram illustrates the repository's architecture, which is considered overl - **Kubeflow** - Machine learning platform - **MLflow** - Machine learning experiment tracking - **Weights & Biases** - Machine learning experiment tracking -- **Triton Inference Server** - Inference server +- **NVIDIA Data Loading Library (DALI)** - GPU-accelerated data loading and preprocessing pipeline +- **NVIDIA Triton Inference Server** - Inference server #### Large language model (LLM) diff --git a/api-python/pyproject.toml b/api-python/pyproject.toml index ab10d09bd7..d3cc1bb61e 100644 --- a/api-python/pyproject.toml +++ b/api-python/pyproject.toml @@ -25,5 +25,5 @@ package = false [tool.poe.tasks] dev = { cmd = "uvicorn main:app --port=35903 --reload", env = { ENV = "development" } } serve = { cmd = "uvicorn main:app --port=35903", env = { ENV = "production" } } -test = { cmd = "pytest", env = { ENV = "test" } } +test = { cmd = "pytest --verbose --verbose", env = { ENV = "test" } } test-coverage = "pytest --cov=. --cov-report=xml" diff --git a/machine-learning/dali/Makefile b/machine-learning/dali/Makefile new file mode 100644 index 0000000000..76cf50293e --- /dev/null +++ b/machine-learning/dali/Makefile @@ -0,0 +1,15 @@ +uv-install-python:: + uv python install +uv-update-lock-file: + uv lock +uv-install-dependencies: + uv sync --dev + +uv-run-dev: + uv run poe dev +uv-run-serve: + uv run poe serve +uv-run-test: + uv run poe test +uv-run-test-coverage: + uv run poe test-coverage diff --git a/machine-learning/dali/pyproject.toml b/machine-learning/dali/pyproject.toml new file mode 100644 index 0000000000..9d96386087 --- /dev/null +++ b/machine-learning/dali/pyproject.toml @@ -0,0 +1,24 @@ +[project] +name = "dali" +version = "1.0.0" +requires-python = "~=3.13.0" +dependencies = [ + "numpy==2.2.0", + "nvidia-dali-cuda120==1.44.0", + "torch==2.5.1", +] + +[dependency-groups] +dev = [ + "poethepoet==0.31.1", + "pytest==8.3.4", + "pytest-cov==6.0.0", +] + +[tool.uv] +package = false + +[tool.poe.tasks] +dev = "python src/main.py" +test = "pytest --verbose --verbose" +test-coverage = "pytest --cov=. --cov-report=xml" diff --git a/machine-learning/dali/src/dummy_test.py b/machine-learning/dali/src/dummy_test.py new file mode 100644 index 0000000000..82960647c8 --- /dev/null +++ b/machine-learning/dali/src/dummy_test.py @@ -0,0 +1,3 @@ +class TestDummy: + def test_dummy(self): + assert 1 + 1 == 2 diff --git a/machine-learning/dali/src/main.py b/machine-learning/dali/src/main.py new file mode 100644 index 0000000000..7a593f020e --- /dev/null +++ b/machine-learning/dali/src/main.py @@ -0,0 +1,101 @@ +import logging +import urllib.request +from pathlib import Path + +import nvidia.dali.fn as fn +import nvidia.dali.types as types +import torch +from nvidia.dali import pipeline_def +from nvidia.dali.plugin.pytorch import DALIGenericIterator + + +def download_sample_images(data_path: Path) -> None: + # Create main directory if it doesn not exist + data_path.mkdir(parents=True, exist_ok=True) + + # Create a class subdirectory (e.g., "class0") + class_dir = data_path / "class0" + class_dir.mkdir(parents=True, exist_ok=True) + + # Sample image URLs + image_urls: list[str] = [ + "https://raw.githubusercontent.com/pytorch/hub/master/images/dog.jpg" + ] + + # Download images into the class subdirectory + for i, url in enumerate(image_urls): + try: + filename = f"image_{i}.jpg" + filepath = class_dir / filename + if not filepath.exists(): + logging.info(f"Downloading {url} to {filepath}") + urllib.request.urlretrieve(url, str(filepath)) + except Exception as e: + logging.error(f"Error downloading {url}: {e}") + + +@pipeline_def(batch_size=2, num_threads=2, device_id=None) +def image_pipeline(data_path: Path): + jpegs, labels = fn.readers.file( + file_root=data_path, random_shuffle=True, initial_fill=2 + ) + + images = fn.decoders.image(jpegs, device="cpu") + images = fn.resize(images, resize_x=224, resize_y=224) + images = fn.crop_mirror_normalize( + images, + mean=[0.485 * 255, 0.456 * 255, 0.406 * 255], + std=[0.229 * 255, 0.224 * 255, 0.225 * 255], + dtype=types.FLOAT, + ) + images = fn.transpose(images, perm=[2, 0, 1]) + + return images, labels + + +def get_num_samples(data_path: Path) -> int: + image_files = list(data_path.rglob("*.jpg")) + return len(image_files) + + +def main() -> None: + BATCH_SIZE: int = 2 + NUM_THREADS: int = 2 + + # Create data directory and download sample images + data_path = Path("data") + download_sample_images(data_path) + + # Get total number of samples + num_samples = get_num_samples(data_path) + if num_samples == 0: + logging.error("No images available in the directory.") + return + + pipe = image_pipeline( + data_path=data_path, batch_size=BATCH_SIZE, num_threads=NUM_THREADS + ) + pipe.build() + + dali_iter = DALIGenericIterator( + pipelines=[pipe], + output_map=["data", "label"], + reader_name="Reader", + auto_reset=True, + ) + + logging.info("Pipeline created successfully!") + logging.info(f"Ready to process images from {data_path}") + + try: + for i, data in enumerate(dali_iter): + images: torch.Tensor = data[0]["data"] + labels: torch.Tensor = data[0]["label"] + logging.info(f"Batch {i}: Image shape: {images.shape}, Labels: {labels}") + except StopIteration: + logging.info("Finished processing all images.") + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + main() diff --git a/machine-learning/dali/uv.lock b/machine-learning/dali/uv.lock new file mode 100644 index 0000000000..48fe9ac146 --- /dev/null +++ b/machine-learning/dali/uv.lock @@ -0,0 +1,517 @@ +version = 1 +requires-python = ">=3.13.0, <3.14" + +[[package]] +name = "astunparse" +version = "1.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, + { name = "wheel" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/af/4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029/astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872", size = 18290 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/03/13dde6512ad7b4557eb792fbcf0c653af6076b81e5941d36ec61f7ce6028/astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8", size = 12732 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "coverage" +version = "7.6.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/d2/c25011f4d036cf7e8acbbee07a8e09e9018390aee25ba085596c4b83d510/coverage-7.6.9.tar.gz", hash = "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", size = 801710 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/26/9abab6539d2191dbda2ce8c97b67d74cbfc966cc5b25abb880ffc7c459bc/coverage-7.6.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664", size = 207356 }, + { url = "https://files.pythonhosted.org/packages/44/da/d49f19402240c93453f606e660a6676a2a1fbbaa6870cc23207790aa9697/coverage-7.6.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c", size = 207614 }, + { url = "https://files.pythonhosted.org/packages/da/e6/93bb9bf85497816082ec8da6124c25efa2052bd4c887dd3b317b91990c9e/coverage-7.6.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014", size = 240129 }, + { url = "https://files.pythonhosted.org/packages/df/65/6a824b9406fe066835c1274a9949e06f084d3e605eb1a602727a27ec2fe3/coverage-7.6.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00", size = 237276 }, + { url = "https://files.pythonhosted.org/packages/9f/79/6c7a800913a9dd23ac8c8da133ebb556771a5a3d4df36b46767b1baffd35/coverage-7.6.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d", size = 239267 }, + { url = "https://files.pythonhosted.org/packages/57/e7/834d530293fdc8a63ba8ff70033d5182022e569eceb9aec7fc716b678a39/coverage-7.6.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a", size = 238887 }, + { url = "https://files.pythonhosted.org/packages/15/05/ec9d6080852984f7163c96984444e7cd98b338fd045b191064f943ee1c08/coverage-7.6.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077", size = 236970 }, + { url = "https://files.pythonhosted.org/packages/0a/d8/775937670b93156aec29f694ce37f56214ed7597e1a75b4083ee4c32121c/coverage-7.6.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb", size = 238831 }, + { url = "https://files.pythonhosted.org/packages/f4/58/88551cb7fdd5ec98cb6044e8814e38583436b14040a5ece15349c44c8f7c/coverage-7.6.9-cp313-cp313-win32.whl", hash = "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba", size = 210000 }, + { url = "https://files.pythonhosted.org/packages/b7/12/cfbf49b95120872785ff8d56ab1c7fe3970a65e35010c311d7dd35c5fd00/coverage-7.6.9-cp313-cp313-win_amd64.whl", hash = "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1", size = 210753 }, + { url = "https://files.pythonhosted.org/packages/7c/68/c1cb31445599b04bde21cbbaa6d21b47c5823cdfef99eae470dfce49c35a/coverage-7.6.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419", size = 208091 }, + { url = "https://files.pythonhosted.org/packages/11/73/84b02c6b19c4a11eb2d5b5eabe926fb26c21c080e0852f5e5a4f01165f9e/coverage-7.6.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a", size = 208369 }, + { url = "https://files.pythonhosted.org/packages/de/e0/ae5d878b72ff26df2e994a5c5b1c1f6a7507d976b23beecb1ed4c85411ef/coverage-7.6.9-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4", size = 251089 }, + { url = "https://files.pythonhosted.org/packages/ab/9c/0aaac011aef95a93ef3cb2fba3fde30bc7e68a6635199ed469b1f5ea355a/coverage-7.6.9-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae", size = 246806 }, + { url = "https://files.pythonhosted.org/packages/f8/19/4d5d3ae66938a7dcb2f58cef3fa5386f838f469575b0bb568c8cc9e3a33d/coverage-7.6.9-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030", size = 249164 }, + { url = "https://files.pythonhosted.org/packages/b3/0b/4ee8a7821f682af9ad440ae3c1e379da89a998883271f088102d7ca2473d/coverage-7.6.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be", size = 248642 }, + { url = "https://files.pythonhosted.org/packages/8a/12/36ff1d52be18a16b4700f561852e7afd8df56363a5edcfb04cf26a0e19e0/coverage-7.6.9-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e", size = 246516 }, + { url = "https://files.pythonhosted.org/packages/43/d0/8e258f6c3a527c1655602f4f576215e055ac704de2d101710a71a2affac2/coverage-7.6.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", size = 247783 }, + { url = "https://files.pythonhosted.org/packages/a9/0d/1e4a48d289429d38aae3babdfcadbf35ca36bdcf3efc8f09b550a845bdb5/coverage-7.6.9-cp313-cp313t-win32.whl", hash = "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", size = 210646 }, + { url = "https://files.pythonhosted.org/packages/26/74/b0729f196f328ac55e42b1e22ec2f16d8bcafe4b8158a26ec9f1cdd1d93e/coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", size = 211815 }, +] + +[[package]] +name = "dali" +version = "1.0.0" +source = { virtual = "." } +dependencies = [ + { name = "numpy" }, + { name = "nvidia-dali-cuda120" }, + { name = "torch" }, +] + +[package.dev-dependencies] +dev = [ + { name = "poethepoet" }, + { name = "pytest" }, + { name = "pytest-cov" }, +] + +[package.metadata] +requires-dist = [ + { name = "numpy", specifier = "==2.2.0" }, + { name = "nvidia-dali-cuda120", specifier = "==1.44.0" }, + { name = "torch", specifier = "==2.5.1" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "poethepoet", specifier = "==0.31.1" }, + { name = "pytest", specifier = "==8.3.4" }, + { name = "pytest-cov", specifier = "==6.0.0" }, +] + +[[package]] +name = "dm-tree" +version = "0.1.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/6d/f1997aac42e0f550c1e952a0b920eaa0bfc4d27d0421499881b934b969fc/dm-tree-0.1.8.tar.gz", hash = "sha256:0fcaabbb14e7980377439e7140bd05552739ca5e515ecb3119f234acee4b9430", size = 35384 } + +[[package]] +name = "filelock" +version = "3.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/db/3ef5bb276dae18d6ec2124224403d1d67bccdbefc17af4cc8f553e341ab1/filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435", size = 18037 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/f8/feced7779d755758a52d1f6635d990b8d98dc0a29fa568bbe0625f18fdf3/filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0", size = 16163 }, +] + +[[package]] +name = "fsspec" +version = "2024.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/52/f16a068ebadae42526484c31f4398e62962504e5724a8ba5dc3409483df2/fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493", size = 286853 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871", size = 179641 }, +] + +[[package]] +name = "gast" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/14/c566f5ca00c115db7725263408ff952b8ae6d6a4e792ef9c84e77d9af7a1/gast-0.6.0.tar.gz", hash = "sha256:88fc5300d32c7ac6ca7b515310862f71e6fdf2c029bbec7c66c0f5dd47b6b1fb", size = 27708 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/61/8001b38461d751cd1a0c3a6ae84346796a5758123f3ed97a1b121dfbf4f3/gast-0.6.0-py3-none-any.whl", hash = "sha256:52b182313f7330389f72b069ba00f174cfe2a06411099547288839c6cbafbd54", size = 21173 }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198 }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263 }, +] + +[[package]] +name = "numpy" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1d565e0f6e156e1522ab564176b8b29d71e13d8caf003a08768df3d5cec5/numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0", size = 20225497 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/4c/0d1eef206545c994289e7a9de21b642880a11e0ed47a2b0c407c688c4f69/numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367", size = 20895707 }, + { url = "https://files.pythonhosted.org/packages/16/cb/88f6c1e6df83002c421d5f854ccf134aa088aa997af786a5dac3f32ec99b/numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae", size = 14110592 }, + { url = "https://files.pythonhosted.org/packages/b4/54/817e6894168a43f33dca74199ba0dd0f1acd99aa6323ed6d323d63d640a2/numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69", size = 5110858 }, + { url = "https://files.pythonhosted.org/packages/c7/99/00d8a1a8eb70425bba7880257ed73fed08d3e8d05da4202fb6b9a81d5ee4/numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13", size = 6645143 }, + { url = "https://files.pythonhosted.org/packages/34/86/5b9c2b7c56e7a9d9297a0a4be0b8433f498eba52a8f5892d9132b0f64627/numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671", size = 14042812 }, + { url = "https://files.pythonhosted.org/packages/df/54/13535f74391dbe5f479ceed96f1403267be302c840040700d4fd66688089/numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571", size = 16093419 }, + { url = "https://files.pythonhosted.org/packages/dd/37/dfb2056842ac61315f225aa56f455da369f5223e4c5a38b91d20da1b628b/numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d", size = 15238969 }, + { url = "https://files.pythonhosted.org/packages/5a/3d/d20d24ee313992f0b7e7b9d9eef642d9b545d39d5b91c4a2cc8c98776328/numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742", size = 17855705 }, + { url = "https://files.pythonhosted.org/packages/5b/40/944c9ee264f875a2db6f79380944fd2b5bb9d712bb4a134d11f45ad5b693/numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e", size = 6270078 }, + { url = "https://files.pythonhosted.org/packages/30/04/e1ee6f8b22034302d4c5c24e15782bdedf76d90b90f3874ed0b48525def0/numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2", size = 12605791 }, + { url = "https://files.pythonhosted.org/packages/ef/fb/51d458625cd6134d60ac15180ae50995d7d21b0f2f92a6286ae7b0792d19/numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95", size = 20920160 }, + { url = "https://files.pythonhosted.org/packages/b4/34/162ae0c5d2536ea4be98c813b5161c980f0443cd5765fde16ddfe3450140/numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c", size = 14119064 }, + { url = "https://files.pythonhosted.org/packages/17/6c/4195dd0e1c41c55f466d516e17e9e28510f32af76d23061ea3da67438e3c/numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca", size = 5152778 }, + { url = "https://files.pythonhosted.org/packages/2f/47/ea804ae525832c8d05ed85b560dfd242d34e4bb0962bc269ccaa720fb934/numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d", size = 6667605 }, + { url = "https://files.pythonhosted.org/packages/76/99/34d20e50b3d894bb16b5374bfbee399ab8ff3a33bf1e1f0b8acfe7bbd70d/numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529", size = 14013275 }, + { url = "https://files.pythonhosted.org/packages/69/8f/a1df7bd02d434ab82539517d1b98028985700cfc4300bc5496fb140ca648/numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3", size = 16074900 }, + { url = "https://files.pythonhosted.org/packages/04/94/b419e7a76bf21a00fcb03c613583f10e389fdc8dfe420412ff5710c8ad3d/numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab", size = 15219122 }, + { url = "https://files.pythonhosted.org/packages/65/d9/dddf398b2b6c5d750892a207a469c2854a8db0f033edaf72103af8cf05aa/numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72", size = 17851668 }, + { url = "https://files.pythonhosted.org/packages/d4/dc/09a4e5819a9782a213c0eb4eecacdc1cd75ad8dac99279b04cfccb7eeb0a/numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066", size = 6325288 }, + { url = "https://files.pythonhosted.org/packages/ce/e1/e0d06ec34036c92b43aef206efe99a5f5f04e12c776eab82a36e00c40afc/numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881", size = 12692303 }, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.4.5.8" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/7f/7fbae15a3982dc9595e49ce0f19332423b260045d0a6afe93cdbe2f1f624/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0f8aa1706812e00b9f19dfe0cdb3999b092ccb8ca168c0db5b8ea712456fd9b3", size = 363333771 }, + { url = "https://files.pythonhosted.org/packages/ae/71/1c91302526c45ab494c23f61c7a84aa568b8c1f9d196efa5993957faf906/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:2fc8da60df463fdefa81e323eef2e36489e1c94335b5358bcb38360adf75ac9b", size = 363438805 }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.4.127" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/b5/9fb3d00386d3361b03874246190dfec7b206fd74e6e287b26a8fcb359d95/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:79279b35cf6f91da114182a5ce1864997fd52294a87a16179ce275773799458a", size = 12354556 }, + { url = "https://files.pythonhosted.org/packages/67/42/f4f60238e8194a3106d06a058d494b18e006c10bb2b915655bd9f6ea4cb1/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:9dec60f5ac126f7bb551c055072b69d85392b13311fcc1bcda2202d172df30fb", size = 13813957 }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.4.127" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/aa/083b01c427e963ad0b314040565ea396f914349914c298556484f799e61b/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0eedf14185e04b76aa05b1fea04133e59f465b6f960c0cbf4e37c3cb6b0ea198", size = 24133372 }, + { url = "https://files.pythonhosted.org/packages/2c/14/91ae57cd4db3f9ef7aa99f4019cfa8d54cb4caa7e00975df6467e9725a9f/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a178759ebb095827bd30ef56598ec182b85547f1508941a3d560eb7ea1fbf338", size = 24640306 }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.4.127" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/aa/b656d755f474e2084971e9a297def515938d56b466ab39624012070cb773/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:961fe0e2e716a2a1d967aab7caee97512f71767f852f67432d572e36cb3a11f3", size = 894177 }, + { url = "https://files.pythonhosted.org/packages/ea/27/1795d86fe88ef397885f2e580ac37628ed058a92ed2c39dc8eac3adf0619/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:64403288fa2136ee8e467cdc9c9427e0434110899d07c779f25b5c068934faa5", size = 883737 }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.1.0.70" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/fd/713452cd72343f682b1c7b9321e23829f00b842ceaedcda96e742ea0b0b3/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f", size = 664752741 }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.2.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/8a/0e728f749baca3fbeffad762738276e5df60851958be7783af121a7221e7/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5dad8008fc7f92f5ddfa2101430917ce2ffacd86824914c82e28990ad7f00399", size = 211422548 }, + { url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117 }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.5.147" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/9c/a79180e4d70995fdf030c6946991d0171555c6edf95c265c6b2bf7011112/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1f173f09e3e3c76ab084aba0de819c49e56614feae5c12f69883f4ae9bb5fad9", size = 56314811 }, + { url = "https://files.pythonhosted.org/packages/8a/6d/44ad094874c6f1b9c654f8ed939590bdc408349f137f9b98a3a23ccec411/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a88f583d4e0bb643c49743469964103aa59f7f708d862c3ddb0fc07f851e3b8b", size = 56305206 }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.6.1.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, + { name = "nvidia-cusparse-cu12" }, + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/6b/a5c33cf16af09166845345275c34ad2190944bcc6026797a39f8e0a282e0/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d338f155f174f90724bbde3758b7ac375a70ce8e706d70b018dd3375545fc84e", size = 127634111 }, + { url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057 }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.3.1.170" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/a9/c0d2f83a53d40a4a41be14cea6a0bf9e668ffcf8b004bd65633f433050c0/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9d32f62896231ebe0480efd8a7f702e143c98cfaa0e8a76df3386c1ba2b54df3", size = 207381987 }, + { url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763 }, +] + +[[package]] +name = "nvidia-dali-cuda120" +version = "1.44.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "astunparse" }, + { name = "dm-tree" }, + { name = "gast" }, + { name = "nvidia-nvimgcodec-cu12" }, + { name = "packaging" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/78/ca108d2fb411ccca41dc3b11800333b15fcbed6885d35820e4a380e1b151/nvidia_dali_cuda120-1.44.0.tar.gz", hash = "sha256:ff1a7157cc7d8b31c86531c8fb87f328e06e3e4eb27933db3ebd7505cf4591ed", size = 1581 } + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.21.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/99/12cd266d6233f47d00daf3a72739872bdc10267d0383508b0b9c84a18bb6/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8579076d30a8c24988834445f8d633c697d42397e92ffc3f63fa26766d25e0a0", size = 188654414 }, +] + +[[package]] +name = "nvidia-nvimgcodec-cu12" +version = "0.3.0.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/e0/71abde334ac4fb0506d2ad6064b08b077f42bece682bda8ae55d45f1386f/nvidia_nvimgcodec_cu12-0.3.0.5-py3-none-manylinux2014_aarch64.whl", hash = "sha256:f8a4524913828ac07d80f9572c8e8b74d088698451ba5240ea1afb06bd29fe73", size = 9840874 }, + { url = "https://files.pythonhosted.org/packages/67/6d/749eb173622a0f269c967abc0f946970899e90970427b1b8446e8b7ba8d1/nvidia_nvimgcodec_cu12-0.3.0.5-py3-none-manylinux2014_x86_64.whl", hash = "sha256:b038b17223bb09b70c846244e7a54ad4147da29f169ea5a95a3b9108e9e33b89", size = 10875872 }, + { url = "https://files.pythonhosted.org/packages/a3/0d/83588446b778ac87bbb9801df06863fd22d4aa33b36d9c6101de6dc9028f/nvidia_nvimgcodec_cu12-0.3.0.5-py3-none-win_amd64.whl", hash = "sha256:84aa3825f42c1a1ddd26e136cdd7f653115f84fe7cb943b8d7c8a096c7bd9251", size = 12863301 }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.4.127" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/45/239d52c05074898a80a900f49b1615d81c07fceadd5ad6c4f86a987c0bc4/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4abe7fef64914ccfa909bc2ba39739670ecc9e820c83ccc7a6ed414122599b83", size = 20552510 }, + { url = "https://files.pythonhosted.org/packages/ff/ff/847841bacfbefc97a00036e0fce5a0f086b640756dc38caea5e1bb002655/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57", size = 21066810 }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.4.127" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/39/471f581edbb7804b39e8063d92fc8305bdc7a80ae5c07dbe6ea5c50d14a5/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7959ad635db13edf4fc65c06a6e9f9e55fc2f92596db928d169c0bb031e88ef3", size = 100417 }, + { url = "https://files.pythonhosted.org/packages/87/20/199b8713428322a2f22b722c62b8cc278cc53dffa9705d744484b5035ee9/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:781e950d9b9f60d8241ccea575b32f5105a5baf4c2351cab5256a24869f12a1a", size = 99144 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pastel" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "poethepoet" +version = "0.31.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pastel" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/96/15bce512c8027696b20586b18ac4b239afe8d312dbaa2a0099e8fb8f8424/poethepoet-0.31.1.tar.gz", hash = "sha256:d6b66074edf85daf115bb916eae0afd6387d19e1562e1c9ef7d61d5c585696aa", size = 61520 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/e1/04f56c9d848d6135ca3328c5a2ca84d3303c358ad7828db290385e36a8cc/poethepoet-0.31.1-py3-none-any.whl", hash = "sha256:7fdfa0ac6074be9936723e7231b5bfaad2923e96c674a9857e81d326cf8ccdc2", size = 80238 }, +] + +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, +] + +[[package]] +name = "pytest-cov" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/45/9b538de8cef30e17c7b45ef42f538a94889ed6a16f2387a6c89e73220651/pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0", size = 66945 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "setuptools" +version = "75.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/54/292f26c208734e9a7f067aea4a7e282c080750c4546559b58e2e45413ca0/setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6", size = 1337429 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/21/47d163f615df1d30c094f6c8bbb353619274edccf0327b185cc2493c2c33/setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d", size = 1224032 }, +] + +[[package]] +name = "six" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, +] + +[[package]] +name = "sympy" +version = "1.13.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/99/5a5b6f19ff9f083671ddf7b9632028436167cd3d33e11015754e41b249a4/sympy-1.13.1.tar.gz", hash = "sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f", size = 7533040 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8", size = 6189177 }, +] + +[[package]] +name = "torch" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/72/20cb30f3b39a9face296491a86adb6ff8f1a47a897e4d14667e6cf89d5c3/torch-2.5.1-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:9b61edf3b4f6e3b0e0adda8b3960266b9009d02b37555971f4d1c8f7a05afed7", size = 906393265 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, +]