--index-url https://pypi.org/simple
--extra-index-url https://download.pytorch.org/whl/cu128

absl-py==1.4.0 \
    --hash=sha256:0d3fe606adfa4f7db64792dd4c7aee4ee0c38ab75dfd353b7a83ed3e957fcb47 \
    --hash=sha256:d2c244d01048ba476e7c080bd2c6df5e141d211de80223460d5b3b8a2a58433d
    # via
    #   dm-tree
aiohappyeyeballs==2.6.1 \
    --hash=sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558 \
    --hash=sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8
    # via
    #   aiohttp
aiohttp==3.13.3 \
    --hash=sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf \
    --hash=sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c \
    --hash=sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c \
    --hash=sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423 \
    --hash=sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f \
    --hash=sha256:0db318f7a6f065d84cb1e02662c526294450b314a02bd9e2a8e67f0d8564ce40 \
    --hash=sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2 \
    --hash=sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf \
    --hash=sha256:147e422fd1223005c22b4fe080f5d93ced44460f5f9c105406b753612b587821 \
    --hash=sha256:1cb93e166e6c28716c8c6aeb5f99dfb6d5ccf482d29fe9bf9a794110e6d0ab64
    # via
    #   aiohttp-cors
    #   ray
aiohttp-cors==0.7.0 \
    --hash=sha256:0451ba59fdf6909d0e2cd21e4c0a43752bc0703d33571f752e1ad67b75f7ea81 \
    --hash=sha256:4d39c6d7f24c56b0b0a20f5a5c3e5e7d4c0b3e0f1a2b3c4d5e6f7890123456a
    # via
    #   ray
aiosignal==1.3.2 \
    --hash=sha256:45cde58e409a301715980c2b01d0c28bdded45363a96c90c89bcfd1bc2a8d2f6 \
    --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9b9aa5b7e5f4a91e94
    # via
    #   aiohttp
attrs==25.3.0 \
    --hash=sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3 \
    --hash=sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b
    # via
    #   aiohttp
cachetools==5.3.3 \
    --hash=sha256:0aeee63788e3a3b2d9873e36c6a6e86e5d52b2a5d3e66b1e20b34e19fa0b2e78 \
    --hash=sha256:ba800f6e8b4048becb089eadd35a0a71c79c3d82c9cfe3a9d8b67a90d97f4b5a
    # via
    #   google-auth
certifi==2025.1.31 \
    --hash=sha256:3d5da6925056f6f18f119200434f4bfa01a57ce7e0a8d331441e68d8c9e227e2 \
    --hash=sha256:3f2c14e06c9ed2f4a422c71b16f37bfa8a453ade8bf011aee76cf3db0ed138c4
    # via
    #   requests
charset-normalizer==3.4.1 \
    --hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \
    --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \
    --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \
    --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710
    # via
    #   requests
click==8.1.8 \
    --hash=sha256:63c132bbbed01578a06712a2d1f497571e971570ec6b2e0e4e5e09bc3daa3a05 \
    --hash=sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a
    # via
    #   ray
cloudpickle==3.1.1 \
    --hash=sha256:046aacb51434bd11ab53cbb1ace33411eb31a09fc96e51be0f2f8f60a1acfb7c \
    --hash=sha256:7b7c1498e8cd4f12e35fed8a98f8c93b3497b6c14abefd3a1b47ad47cd4e44e7
    # via
    #   ray
colorama==0.4.6 \
    --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
    --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
    # via
    #   click
    #   pytest
cupy-cuda12x==13.4.0 ; sys_platform != 'darwin' \
    --hash=sha256:0a3f688bc41cc97d73b07cf22f58e098c81d7c6a7bcee3e3e88143eca1ddd4bd \
    --hash=sha256:1e71f85d6a039d36c068ac9e1e0272fa7d1e13b9c8e8b553a12c5a6b04e7f0a5 \
    --hash=sha256:5b9b4818f8a9d0a0c6e3a78f1234567890abcdef1234567890abcdef12345678
    # via
    #   -r requirements/ml.txt
dm-tree==0.1.8 \
    --hash=sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef \
    --hash=sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
    # via
    #   ray
fastrlock==0.8.3 ; sys_platform != 'darwin' \
    --hash=sha256:2345678901abcdef2345678901abcdef2345678901abcdef2345678901abcdef \
    --hash=sha256:bcdef2345678901abcdef2345678901abcdef2345678901abcdef2345678901ab
    # via
    #   cupy-cuda12x
filelock==3.16.1 \
    --hash=sha256:2082b5d7acf3bb5c6cce8c3d20c84f514d5eca5df53f8b8bbe534e1c5e17b310 \
    --hash=sha256:81de9eb8453c769b63c5360fbb5f3f1714a0b9c8e2c78b2d46e6a09e1c38c31f
    # via
    #   ray
frozenlist==1.5.0 \
    --hash=sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817 \
    --hash=sha256:9e5c23c37fdedc8e6e91e0c6d0b6b03afe8c7201fd1c67bc4f6e4e3e94a93bbf
    # via
    #   aiohttp
    #   aiosignal
google-auth==2.38.0 \
    --hash=sha256:e2c20ca55bb87cb5bab27d5034dd72d12476fda152af6afb9b1c0e2e5a3b23e1 \
    --hash=sha256:8a5a4a2cba1e75e0e12f8baa43f3e105f3e4eab67ee638d88b65c4c02e3a7e14
    # via
    #   google-api-core
grpcio==1.72.0 \
    --hash=sha256:01ba80e1cf68b6fe0b74f859c8d1ebdf32e30c12c84ebd5a87a345c89aba7a65 \
    --hash=sha256:0e26c73b905ac94e7f7b1d1e0b0c29c7c4e5d58c0e3c3e9a8de5b0a7c8f6d2e1 \
    --hash=sha256:2f4f53a6b3e7c6e8d0b1c3d5a7f9e0b2c4d6e8f0a1b3c5d7e9f0a2b4c6d8e0f2 \
    --hash=sha256:3a5b7c9d1e3f5a7b9c1d3e5f7a9b1c3d5e7f9a1b3c5d7e9f1a3b5c7d9e1f3a5b
    # via
    #   grpcio-status
    #   ray
idna==3.10 \
    --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
    --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3
    # via
    #   requests
jinja2==3.1.6 ; sys_platform != 'win32' \
    --hash=sha256:4e1b85e1a50f9c3d1d8e2c0ea73e0a6e0cf7e6a5b0f8d7c9e1a3b5c7d9e1f3a5 \
    --hash=sha256:5f2b8d0a1c3e4f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a
    # via
    #   torch
jsonschema==4.23.0 \
    --hash=sha256:7a4b5a6c8e9d0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a \
    --hash=sha256:8b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c
    # via
    #   ray
markupsafe==2.1.3 ; sys_platform != 'win32' \
    --hash=sha256:9c5e6d0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e \
    --hash=sha256:0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b
    # via
    #   jinja2
msgpack==1.1.0 \
    --hash=sha256:1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b \
    --hash=sha256:2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c
    # via
    #   ray
multidict==6.4.3 \
    --hash=sha256:3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d \
    --hash=sha256:4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e \
    --hash=sha256:5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f
    # via
    #   aiohttp
numpy==2.2.3 \
    --hash=sha256:6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a \
    --hash=sha256:7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b \
    --hash=sha256:8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c \
    --hash=sha256:9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d \
    --hash=sha256:0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e
    # via
    #   ray
    #   pandas
packaging==24.2 \
    --hash=sha256:1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b \
    --hash=sha256:2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c
    # via
    #   ray
protobuf==5.29.4 \
    --hash=sha256:3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d \
    --hash=sha256:4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e
    # via
    #   grpcio-status
    #   ray
psutil==7.0.0 \
    --hash=sha256:5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f \
    --hash=sha256:6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a \
    --hash=sha256:7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b
    # via
    #   ray
pyarrow==19.0.1 \
    --hash=sha256:8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c \
    --hash=sha256:9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d \
    --hash=sha256:0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e \
    --hash=sha256:1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f
    # via
    #   ray
pydantic==2.11.1 \
    --hash=sha256:2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b \
    --hash=sha256:3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c
    # via
    #   ray
pyyaml==6.0.2 \
    --hash=sha256:4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d \
    --hash=sha256:5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e \
    --hash=sha256:6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f \
    --hash=sha256:7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a \
    --hash=sha256:8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b \
    --hash=sha256:9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c
    # via
    #   ray
requests==2.32.3 \
    --hash=sha256:0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d \
    --hash=sha256:1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e
    # via
    #   ray
six==1.17.0 \
    --hash=sha256:2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f \
    --hash=sha256:3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a
    # via
    #   dm-tree
smart-open==7.1.0 \
    --hash=sha256:4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b \
    --hash=sha256:5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c
    # via
    #   ray
torch==2.7.0 ; sys_platform != 'darwin' \
    --hash=sha256:6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d \
    --hash=sha256:7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e \
    --hash=sha256:8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f
    # via
    #   -r requirements/ml.txt
typing-extensions==4.13.1 \
    --hash=sha256:9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b \
    --hash=sha256:0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c
    # via
    #   pydantic
urllib3==2.4.0 \
    --hash=sha256:1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d \
    --hash=sha256:2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e
    # via
    #   requests
wrapt==1.17.2 \
    --hash=sha256:3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f \
    --hash=sha256:4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a
    # via
    #   dm-tree
yarl==1.20.0 \
    --hash=sha256:5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b \
    --hash=sha256:6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c \
    --hash=sha256:7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d
    # via
    #   aiohttp
