

init
@313814ba72ba0ae69bd8695a4e9644d4c33e90f4
+++ .dockerignore
... | ... | @@ -0,0 +1,12 @@ |
1 | +__pycache__ | |
2 | +tests/data | |
3 | +.pytest_cache | |
4 | +.git | |
5 | +flake.nix | |
6 | +flake.lock | |
7 | +.envrc | |
8 | +.gitignore | |
9 | +.direnv | |
10 | +.task | |
11 | +Taskfile.yaml | |
12 | +README.md |
+++ .envrc
... | ... | @@ -0,0 +1,1 @@ |
1 | +use flake |
+++ .gitignore
... | ... | @@ -0,0 +1,5 @@ |
1 | +__pycache__ | |
2 | +.pytest_cache | |
3 | +tests/data | |
4 | +.direnv | |
5 | +.task |
+++ .pre-commit-config.yaml
... | ... | @@ -0,0 +1,25 @@ |
1 | +# See https://pre-commit.com for more information | |
2 | +# See https://pre-commit.com/hooks.html for more hooks | |
3 | +repos: | |
4 | + - repo: https://github.com/pre-commit/pre-commit-hooks | |
5 | + rev: v3.2.0 | |
6 | + hooks: | |
7 | + - id: trailing-whitespace | |
8 | + - id: end-of-file-fixer | |
9 | + - id: check-yaml | |
10 | + - id: check-added-large-files | |
11 | + | |
12 | + - repo: https://github.com/pre-commit/mirrors-mypy | |
13 | + rev: v1.10.0 | |
14 | + hooks: | |
15 | + - id: mypy | |
16 | + | |
17 | + # - repo: https://github.com/PyCQA/isort | |
18 | + # rev: 5.13.2 | |
19 | + # hooks: | |
20 | + # - id: isort | |
21 | + # | |
22 | + # - repo: https://github.com/psf/black | |
23 | + # rev: 24.4.2 | |
24 | + # hooks: | |
25 | + # - id: black |
+++ Dockerfile.cpu
... | ... | @@ -0,0 +1,14 @@ |
1 | +FROM ubuntu:22.04 | |
2 | +RUN apt-get update && \ | |
3 | + apt-get install -y curl software-properties-common && \ | |
4 | + add-apt-repository ppa:deadsnakes/ppa && \ | |
5 | + apt-get update && \ | |
6 | + DEBIAN_FRONTEND=noninteractive apt-get -y install python3.11 python3.11-distutils && \ | |
7 | + curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 | |
8 | +RUN pip install --no-cache-dir poetry==1.8.2 | |
9 | +WORKDIR /root/speaches | |
10 | +COPY pyproject.toml poetry.lock ./ | |
11 | +RUN poetry install | |
12 | +COPY ./speaches ./speaches | |
13 | +ENTRYPOINT ["poetry", "run"] | |
14 | +CMD ["uvicorn", "speaches.main:app"] |
+++ Dockerfile.cuda
... | ... | @@ -0,0 +1,14 @@ |
1 | +FROM nvidia/cuda:12.2.2-cudnn8-runtime-ubuntu22.04 | |
2 | +RUN apt-get update && \ | |
3 | + apt-get install -y curl software-properties-common && \ | |
4 | + add-apt-repository ppa:deadsnakes/ppa && \ | |
5 | + apt-get update && \ | |
6 | + DEBIAN_FRONTEND=noninteractive apt-get -y install python3.11 python3.11-distutils && \ | |
7 | + curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 | |
8 | +RUN pip install --no-cache-dir poetry==1.8.2 | |
9 | +WORKDIR /root/speaches | |
10 | +COPY pyproject.toml poetry.lock ./ | |
11 | +RUN poetry install | |
12 | +COPY ./speaches ./speaches | |
13 | +ENTRYPOINT ["poetry", "run"] | |
14 | +CMD ["uvicorn", "speaches.main:app"] |
+++ LICENSE
... | ... | @@ -0,0 +1,21 @@ |
1 | +MIT License | |
2 | + | |
3 | +Copyright (c) 2024 Fedir Zadniprovskyi | |
4 | + | |
5 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
6 | +of this software and associated documentation files (the "Software"), to deal | |
7 | +in the Software without restriction, including without limitation the rights | |
8 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
9 | +copies of the Software, and to permit persons to whom the Software is | |
10 | +furnished to do so, subject to the following conditions: | |
11 | + | |
12 | +The above copyright notice and this permission notice shall be included in all | |
13 | +copies or substantial portions of the Software. | |
14 | + | |
15 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
16 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
17 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
18 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
19 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
20 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
21 | +SOFTWARE. |
+++ README.md
... | ... | @@ -0,0 +1,24 @@ |
1 | +# Intro | |
2 | +`speaches` is a webserver that supports real-time transcription using WebSockets. | |
3 | +- [faster-whisper](https://github.com/SYSTRAN/faster-whisper) is used as the backend. Both GPU and CPU inference is supported. | |
4 | +- LocalAgreement2([paper](https://aclanthology.org/2023.ijcnlp-demo.3.pdf)|[original implementation](https://github.com/ufal/whisper_streaming)) algorithm is used for real-time transcription. | |
5 | +- Can be deployed using Docker (Compose configuration can be found in (compose.yaml[./compose.yaml])). | |
6 | +- All configuration is done through environment variables. See [config.py](./speaches/config.py). | |
7 | +- NOTE: only transcription of single channel, 16000 sample rate, raw, 16-bit little-endian audio is supported. | |
8 | +- NOTE: this isn't really meant to be used as a standalone tool but rather to add transcription features to other applications | |
9 | +Please create an issue if you find a bug, have a question, or a feature suggestion. | |
10 | +# Quick Start | |
11 | +NOTE: You'll need to install [websocat](https://github.com/vi/websocat?tab=readme-ov-file#installation) or an alternative. | |
12 | +Spinning up a `speaches` web-server | |
13 | +```bash | |
14 | +docker run --detach --gpus=all --publish 8000:8000 --mount ~/.cache/huggingface:/root/.cache/huggingface --name speaches fedirz/speaches:cuda | |
15 | +# or | |
16 | +docker run --detach --publish 8000:8000 --mount ~/.cache/huggingface:/root/.cache/huggingface --name speaches fedirz/speaches:cpu | |
17 | +``` | |
18 | +Sending audio data via websocket | |
19 | +```bash | |
20 | +arecord -f S16_LE -c1 -r 16000 -t raw -D default | websocat --binary ws://localhost:8000/v1/audio/transcriptions | |
21 | +# or | |
22 | +ffmpeg -f alsa -ac 1 -ar 16000 -sample_fmt s16le -i default | websocat --binary ws://localhost:8000/v1/audio/transcriptions | |
23 | +``` | |
24 | +# Example |
+++ Taskfile.yaml
... | ... | @@ -0,0 +1,15 @@ |
1 | +version: "3" | |
2 | +tasks: | |
3 | + speaches: poetry run uvicorn speaches.main:app {{.CLI_ARGS}} | |
4 | + test: | |
5 | + cmds: | |
6 | + - poetry run pytest -o log_cli=true -o log_cli_level=DEBUG {{.CLI_ARGS}} | |
7 | + sources: | |
8 | + - "**/*.py" | |
9 | + build-and-push: | |
10 | + cmds: | |
11 | + - docker compose build --push speaches | |
12 | + sources: | |
13 | + - Dockerfile | |
14 | + - speaches/*.py | |
15 | + sync: lsyncd -nodaemon -delay 0 -rsyncssh . gpu-box speaches |
+++ compose.yaml
... | ... | @@ -0,0 +1,34 @@ |
1 | +services: | |
2 | + speaches-cuda: | |
3 | + image: fedirz/speaches:cuda | |
4 | + build: | |
5 | + dockerfile: Dockerfile.cuda | |
6 | + context: . | |
7 | + tags: | |
8 | + - fedirz/speaches:cuda | |
9 | + volumes: | |
10 | + - ~/.cache/huggingface:/root/.cache/huggingface | |
11 | + restart: unless-stopped | |
12 | + ports: | |
13 | + - 8000:8000 | |
14 | + environment: | |
15 | + - INFERENCE_DEVICE=cuda | |
16 | + deploy: | |
17 | + resources: | |
18 | + reservations: | |
19 | + devices: | |
20 | + - capabilities: ["gpu"] | |
21 | + speaches-cpu: | |
22 | + image: fedirz/speaches:cpu | |
23 | + build: | |
24 | + dockerfile: Dockerfile.cpu | |
25 | + context: . | |
26 | + tags: | |
27 | + - fedirz/speaches:cpu | |
28 | + volumes: | |
29 | + - ~/.cache/huggingface:/root/.cache/huggingface | |
30 | + restart: unless-stopped | |
31 | + ports: | |
32 | + - 8000:8000 | |
33 | + environment: | |
34 | + - INFERENCE_DEVICE=cpu |
+++ flake.lock
... | ... | @@ -0,0 +1,61 @@ |
1 | +{ | |
2 | + "nodes": { | |
3 | + "flake-utils": { | |
4 | + "inputs": { | |
5 | + "systems": "systems" | |
6 | + }, | |
7 | + "locked": { | |
8 | + "lastModified": 1710146030, | |
9 | + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", | |
10 | + "owner": "numtide", | |
11 | + "repo": "flake-utils", | |
12 | + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", | |
13 | + "type": "github" | |
14 | + }, | |
15 | + "original": { | |
16 | + "owner": "numtide", | |
17 | + "repo": "flake-utils", | |
18 | + "type": "github" | |
19 | + } | |
20 | + }, | |
21 | + "nixpkgs": { | |
22 | + "locked": { | |
23 | + "lastModified": 1716073433, | |
24 | + "narHash": "sha256-9G0BS7I/5z0n35Vx1d+TLxaIKQ93rEf5VLXNLWu7/44=", | |
25 | + "owner": "NixOS", | |
26 | + "repo": "nixpkgs", | |
27 | + "rev": "b7d845292c304e026d86097e6d07409070e80dcc", | |
28 | + "type": "github" | |
29 | + }, | |
30 | + "original": { | |
31 | + "owner": "NixOS", | |
32 | + "ref": "master", | |
33 | + "repo": "nixpkgs", | |
34 | + "type": "github" | |
35 | + } | |
36 | + }, | |
37 | + "root": { | |
38 | + "inputs": { | |
39 | + "flake-utils": "flake-utils", | |
40 | + "nixpkgs": "nixpkgs" | |
41 | + } | |
42 | + }, | |
43 | + "systems": { | |
44 | + "locked": { | |
45 | + "lastModified": 1681028828, | |
46 | + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | |
47 | + "owner": "nix-systems", | |
48 | + "repo": "default", | |
49 | + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | |
50 | + "type": "github" | |
51 | + }, | |
52 | + "original": { | |
53 | + "owner": "nix-systems", | |
54 | + "repo": "default", | |
55 | + "type": "github" | |
56 | + } | |
57 | + } | |
58 | + }, | |
59 | + "root": "root", | |
60 | + "version": 7 | |
61 | +} |
+++ flake.nix
... | ... | @@ -0,0 +1,40 @@ |
1 | +{ | |
2 | + inputs = { | |
3 | + nixpkgs.url = "github:NixOS/nixpkgs/master"; | |
4 | + flake-utils.url = "github:numtide/flake-utils"; | |
5 | + }; | |
6 | + outputs = | |
7 | + { nixpkgs, flake-utils, ... }: | |
8 | + flake-utils.lib.eachDefaultSystem ( | |
9 | + system: | |
10 | + let | |
11 | + pkgs = import nixpkgs { | |
12 | + inherit system; | |
13 | + config.allowUnfree = true; | |
14 | + }; | |
15 | + in | |
16 | + { | |
17 | + devShells = { | |
18 | + default = pkgs.mkShell { | |
19 | + nativeBuildInputs = with pkgs; [ | |
20 | + (with python311Packages; huggingface-hub) | |
21 | + ffmpeg-full | |
22 | + go-task | |
23 | + lsyncd | |
24 | + poetry | |
25 | + pre-commit | |
26 | + pyright | |
27 | + python311 | |
28 | + websocat | |
29 | + ]; | |
30 | + shellHook = '' | |
31 | + source $(poetry env info --path)/bin/activate | |
32 | + export LD_LIBRARY_PATH=${pkgs.stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH | |
33 | + export LD_LIBRARY_PATH=${pkgs.zlib}/lib:$LD_LIBRARY_PATH | |
34 | + ''; | |
35 | + }; | |
36 | + }; | |
37 | + formatter = pkgs.nixfmt; | |
38 | + } | |
39 | + ); | |
40 | +} |
+++ poetry.lock
... | ... | @@ -0,0 +1,2004 @@ |
1 | +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. | |
2 | + | |
3 | +[[package]] | |
4 | +name = "annotated-types" | |
5 | +version = "0.6.0" | |
6 | +description = "Reusable constraint types to use with typing.Annotated" | |
7 | +optional = false | |
8 | +python-versions = ">=3.8" | |
9 | +files = [ | |
10 | + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, | |
11 | + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, | |
12 | +] | |
13 | + | |
14 | +[[package]] | |
15 | +name = "anyio" | |
16 | +version = "4.3.0" | |
17 | +description = "High level compatibility layer for multiple asynchronous event loop implementations" | |
18 | +optional = false | |
19 | +python-versions = ">=3.8" | |
20 | +files = [ | |
21 | + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, | |
22 | + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, | |
23 | +] | |
24 | + | |
25 | +[package.dependencies] | |
26 | +idna = ">=2.8" | |
27 | +sniffio = ">=1.1" | |
28 | + | |
29 | +[package.extras] | |
30 | +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] | |
31 | +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] | |
32 | +trio = ["trio (>=0.23)"] | |
33 | + | |
34 | +[[package]] | |
35 | +name = "av" | |
36 | +version = "12.0.0" | |
37 | +description = "Pythonic bindings for FFmpeg's libraries." | |
38 | +optional = false | |
39 | +python-versions = ">=3.8" | |
40 | +files = [ | |
41 | + {file = "av-12.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b9d0890553951f76c479a9f2bb952aebae902b1c7d52feea614d37e1cd728a44"}, | |
42 | + {file = "av-12.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5d7f229a253c2e3fea9682c09c5ae179bd6d5d2da38d89eb7f29ef7bed10cb2f"}, | |
43 | + {file = "av-12.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b3555d143aacf02e0446f6030319403538eba4dc713c18dfa653a2a23e7f9c"}, | |
44 | + {file = "av-12.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:607e13b2c2b26159a37525d7b6f647a32ce78711fccff23d146d3e255ffa115f"}, | |
45 | + {file = "av-12.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f0b4cfb89f4f06b339c766f92648e798a96747d4163f2fa78660d1ab1f1b5e"}, | |
46 | + {file = "av-12.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:41dcb8c269fa58a56edf3a3c814c32a0c69586827f132b4e395a951b0ce14fad"}, | |
47 | + {file = "av-12.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fa78fbe0e4469226512380180063116105048c66cb12e18ab4b518466c57e6c"}, | |
48 | + {file = "av-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:60a869be1d6af916e65ea461cb93922f5db0698655ed7a7eae7c3ecd4af4debb"}, | |
49 | + {file = "av-12.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df61811cc551c186f0a0e530d97b8b139453534d0f92c1790a923f666522ceda"}, | |
50 | + {file = "av-12.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99cd2fc53091ebfb9a2fa9dd3580267f5bd1c040d0efd99fbc1a162576b271cb"}, | |
51 | + {file = "av-12.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a6d4f1e261df48932128e6495772faa4cc23f5dd1512eec73daab82ad9f3240"}, | |
52 | + {file = "av-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:6aec88e41a498b1e01e2dce5371557e20f9a51aae0c16decc5924ec0be2e22b6"}, | |
53 | + {file = "av-12.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90eb8f2d548e96cbc6f78e89c911cdb15a3d80fd944f31111660ce45939cd037"}, | |
54 | + {file = "av-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7f3a02910e77d750dbd516256a16db15030e5371530ff5a5ae902dc03d9005d"}, | |
55 | + {file = "av-12.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2477cc51526aa50575313d66e5e8ad7ab944588469be5e557b360ed572ae536"}, | |
56 | + {file = "av-12.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a2f47149d3ca6deb79f3e515b8bef50e27ebdb160813e6d67dba77278d2a7883"}, | |
57 | + {file = "av-12.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3306e4a3ce8b5bfcc3075793d4ed3a2df69179d8fba22cb944a6164dc235dfb6"}, | |
58 | + {file = "av-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:dc1b742e7f6df1b499fb960bd6697d1dd8e7ada7484a041a8c20e70a87225f53"}, | |
59 | + {file = "av-12.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0183be6889e835e1b074b4037bfce4fd44671c606cf1c4ab92ea2f271b544aec"}, | |
60 | + {file = "av-12.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:57337f20b208292ec8d3b11e4d289d8688a43d728174850a81b865d3253fff2c"}, | |
61 | + {file = "av-12.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ec915e8f6521545a38566eefc281042ee504ea3cee0618d8558e4920588b3b2"}, | |
62 | + {file = "av-12.0.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33ad5c0a23c45b72bd6bd47f3b2c1adcd2935ee3d0b6178ed66bba62b964ff31"}, | |
63 | + {file = "av-12.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc3a652b12c93120514d56cf025da47442c5ba51530cdf7ba3660257dbb0de1"}, | |
64 | + {file = "av-12.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:037f793dd1ef4a1f57f090191a7f803ad10ec82da0d04ea26bbe0b8a145fe927"}, | |
65 | + {file = "av-12.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc532376aa264722fae55063abd1871d17a563dc895978e142c8ecfcdeb3a2e8"}, | |
66 | + {file = "av-12.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:abf0c4bc40a0af8a30f4cd96f3be6f19fbce0f21222d7fcec148e085127153f7"}, | |
67 | + {file = "av-12.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81cedd1c072fbebf606724c406b1a1b00adc711f1dfd2bc04c633ce39d8439d8"}, | |
68 | + {file = "av-12.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02d60f48be9f15dcda37d50f3ce8d7249d9a455643d4322dd3449986bacfc628"}, | |
69 | + {file = "av-12.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d2619e4c26d661eecfc404f7d739d8b35f0dcef353fabe61512e030254b7031"}, | |
70 | + {file = "av-12.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:1892cc91c888d101777d5432d54e0554c11d1c3a2c65d02a2cae0a2256a8fbb9"}, | |
71 | + {file = "av-12.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4819e3ef6c3a44ef6f75907229133a1ee7f688245b2cf49b6b8e969a81ca72c9"}, | |
72 | + {file = "av-12.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb16bb314cf1503b0250fc46b2c455ee196584231101be0123f4f78638227b62"}, | |
73 | + {file = "av-12.0.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3e6a62bda9a1e144feeb59bbee046d7a2d98399634a30f57e4990197313c158"}, | |
74 | + {file = "av-12.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08175ffbafa3a70c7b2f81083e160e34122a208cdf70f150b8f5d02c2de6965"}, | |
75 | + {file = "av-12.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e1d255be317b7c1ebdc4dae98935b9f3869161112dc829c625e54f90d8bdd7ab"}, | |
76 | + {file = "av-12.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:17964b36e08435910aabd5b3f7dca12f99536902529767d276026bc08f94ced7"}, | |
77 | + {file = "av-12.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2d5f78de29edee06ddcdd4c2b759914575492d6a0cd4de2ce31ee63a4953eff"}, | |
78 | + {file = "av-12.0.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:309b32bc97158d0f0c19e273b8e17a855a86806b7194aebc23bd497326cff11f"}, | |
79 | + {file = "av-12.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c409c71bd9c7c2f8d018c822f36b1447cfa96eca158381a96f3319bb0ff6e79e"}, | |
80 | + {file = "av-12.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:08fc5eaef60a257d622998626e233bf3ff90d2f817f6695d6a27e0ffcfe9dcff"}, | |
81 | + {file = "av-12.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:746ab0eff8a7a21a6c6d16e6b6e61709527eba2ad1a524d92a01bb60d02a3df7"}, | |
82 | + {file = "av-12.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:013b3ac3de3aa1c137af0cedafd364fd1c7524ab3e1cd53e04564fd1632ac04d"}, | |
83 | + {file = "av-12.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fa55923527648f51ac005e44fe2797ebc67f53ad4850e0194d3753761ee33a2"}, | |
84 | + {file = "av-12.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:35d514f4dee0cf67e9e6b2a65fb4a28f98da88e71e8c7f7960bd04625d9fe965"}, | |
85 | + {file = "av-12.0.0.tar.gz", hash = "sha256:bcf21ebb722d4538b4099e5a78f730d78814dd70003511c185941dba5651b14d"}, | |
86 | +] | |
87 | + | |
88 | +[[package]] | |
89 | +name = "certifi" | |
90 | +version = "2024.2.2" | |
91 | +description = "Python package for providing Mozilla's CA Bundle." | |
92 | +optional = false | |
93 | +python-versions = ">=3.6" | |
94 | +files = [ | |
95 | + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, | |
96 | + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, | |
97 | +] | |
98 | + | |
99 | +[[package]] | |
100 | +name = "cffi" | |
101 | +version = "1.16.0" | |
102 | +description = "Foreign Function Interface for Python calling C code." | |
103 | +optional = false | |
104 | +python-versions = ">=3.8" | |
105 | +files = [ | |
106 | + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, | |
107 | + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, | |
108 | + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, | |
109 | + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, | |
110 | + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, | |
111 | + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, | |
112 | + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, | |
113 | + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, | |
114 | + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, | |
115 | + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, | |
116 | + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, | |
117 | + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, | |
118 | + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, | |
119 | + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, | |
120 | + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, | |
121 | + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, | |
122 | + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, | |
123 | + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, | |
124 | + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, | |
125 | + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, | |
126 | + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, | |
127 | + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, | |
128 | + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, | |
129 | + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, | |
130 | + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, | |
131 | + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, | |
132 | + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, | |
133 | + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, | |
134 | + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, | |
135 | + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, | |
136 | + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, | |
137 | + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, | |
138 | + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, | |
139 | + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, | |
140 | + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, | |
141 | + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, | |
142 | + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, | |
143 | + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, | |
144 | + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, | |
145 | + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, | |
146 | + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, | |
147 | + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, | |
148 | + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, | |
149 | + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, | |
150 | + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, | |
151 | + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, | |
152 | + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, | |
153 | + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, | |
154 | + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, | |
155 | + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, | |
156 | + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, | |
157 | + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, | |
158 | +] | |
159 | + | |
160 | +[package.dependencies] | |
161 | +pycparser = "*" | |
162 | + | |
163 | +[[package]] | |
164 | +name = "charset-normalizer" | |
165 | +version = "3.3.2" | |
166 | +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." | |
167 | +optional = false | |
168 | +python-versions = ">=3.7.0" | |
169 | +files = [ | |
170 | + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, | |
171 | + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, | |
172 | + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, | |
173 | + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, | |
174 | + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, | |
175 | + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, | |
176 | + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, | |
177 | + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, | |
178 | + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, | |
179 | + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, | |
180 | + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, | |
181 | + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, | |
182 | + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, | |
183 | + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, | |
184 | + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, | |
185 | + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, | |
186 | + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, | |
187 | + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, | |
188 | + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, | |
189 | + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, | |
190 | + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, | |
191 | + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, | |
192 | + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, | |
193 | + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, | |
194 | + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, | |
195 | + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, | |
196 | + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, | |
197 | + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, | |
198 | + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, | |
199 | + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, | |
200 | + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, | |
201 | + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, | |
202 | + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, | |
203 | + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, | |
204 | + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, | |
205 | + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, | |
206 | + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, | |
207 | + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, | |
208 | + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, | |
209 | + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, | |
210 | + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, | |
211 | + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, | |
212 | + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, | |
213 | + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, | |
214 | + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, | |
215 | + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, | |
216 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, | |
217 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, | |
218 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, | |
219 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, | |
220 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, | |
221 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, | |
222 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, | |
223 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, | |
224 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, | |
225 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, | |
226 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, | |
227 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, | |
228 | + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, | |
229 | + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, | |
230 | + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, | |
231 | + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, | |
232 | + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, | |
233 | + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, | |
234 | + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, | |
235 | + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, | |
236 | + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, | |
237 | + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, | |
238 | + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, | |
239 | + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, | |
240 | + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, | |
241 | + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, | |
242 | + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, | |
243 | + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, | |
244 | + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, | |
245 | + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, | |
246 | + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, | |
247 | + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, | |
248 | + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, | |
249 | + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, | |
250 | + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, | |
251 | + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, | |
252 | + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, | |
253 | + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, | |
254 | + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, | |
255 | + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, | |
256 | + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, | |
257 | + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, | |
258 | + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, | |
259 | + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, | |
260 | +] | |
261 | + | |
262 | +[[package]] | |
263 | +name = "click" | |
264 | +version = "8.1.7" | |
265 | +description = "Composable command line interface toolkit" | |
266 | +optional = false | |
267 | +python-versions = ">=3.7" | |
268 | +files = [ | |
269 | + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, | |
270 | + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, | |
271 | +] | |
272 | + | |
273 | +[package.dependencies] | |
274 | +colorama = {version = "*", markers = "platform_system == \"Windows\""} | |
275 | + | |
276 | +[[package]] | |
277 | +name = "colorama" | |
278 | +version = "0.4.6" | |
279 | +description = "Cross-platform colored terminal text." | |
280 | +optional = false | |
281 | +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" | |
282 | +files = [ | |
283 | + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, | |
284 | + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, | |
285 | +] | |
286 | + | |
287 | +[[package]] | |
288 | +name = "coloredlogs" | |
289 | +version = "15.0.1" | |
290 | +description = "Colored terminal output for Python's logging module" | |
291 | +optional = false | |
292 | +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | |
293 | +files = [ | |
294 | + {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"}, | |
295 | + {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"}, | |
296 | +] | |
297 | + | |
298 | +[package.dependencies] | |
299 | +humanfriendly = ">=9.1" | |
300 | + | |
301 | +[package.extras] | |
302 | +cron = ["capturer (>=2.4)"] | |
303 | + | |
304 | +[[package]] | |
305 | +name = "ctranslate2" | |
306 | +version = "4.2.1" | |
307 | +description = "Fast inference engine for Transformer models" | |
308 | +optional = false | |
309 | +python-versions = ">=3.8" | |
310 | +files = [ | |
311 | + {file = "ctranslate2-4.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a98623342da8448043a32e3b20b7b6007d4893e7026a6f7ce6e5bed3ef07f5"}, | |
312 | + {file = "ctranslate2-4.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:550b8014f51b0290a67a37017fcce743c59e2be5a3b7a209db4b1c9e4fb5236b"}, | |
313 | + {file = "ctranslate2-4.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48dd15c8f1d55d58fed9c3d8f7d4e995b17e7dbdfc3c9b8cc9e79eee40be0ab8"}, | |
314 | + {file = "ctranslate2-4.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1332436c4d5ebef57a5b6bec481bf89aa062aabc4a721e4b30a10016e044a28a"}, | |
315 | + {file = "ctranslate2-4.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:f40e0552f096d2243d0286623ffed34f9fa7275cf0298ee44e1190078e2c8d7d"}, | |
316 | + {file = "ctranslate2-4.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79112191709c802b9b66fdd1c4c4dc63d994e2facf9d1ab2561b9e291f0845ff"}, | |
317 | + {file = "ctranslate2-4.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:463391dcf8c1327c196af813d953399ca60274ef3cf38d9776b8f8b0d2138d23"}, | |
318 | + {file = "ctranslate2-4.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:549e4be62612271fcfe2cec9204b048777954dabb77af041ca0dc9cb6acfdbd8"}, | |
319 | + {file = "ctranslate2-4.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a364ac0ddbe1abb35136261632e4e8cc6a820afbfdde3d2f4a40e5e7ee1e3ebc"}, | |
320 | + {file = "ctranslate2-4.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:a2332da680c1f6904d7c67ff539ed5e2d80532b8e531e24ca68ef4fdf5ba729e"}, | |
321 | + {file = "ctranslate2-4.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:75207688fc862457b578b5cf917e606283ab720822a3ba6d4ba405ddd53f33c3"}, | |
322 | + {file = "ctranslate2-4.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41b5f401b7765c7d19d2b35e4d282b15f572d57cebdca5bd30a4deda076a05d2"}, | |
323 | + {file = "ctranslate2-4.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174be98d48869053ac31d9c91c910f3860afff2a84139b6352bd9a11a7e99a5f"}, | |
324 | + {file = "ctranslate2-4.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1681fb06fa5714e3d440b4a9fce8f1fb71cfadfcc912e0346eaea4385269b347"}, | |
325 | + {file = "ctranslate2-4.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c5b604b64138c4cf49a9fac1ebc7023e3ea2fe95fe7b42a9c7076f789fd5ce65"}, | |
326 | + {file = "ctranslate2-4.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bb9069476266a82ffaacff681fd8a2dd249bac18064f766910b55cfd025efab8"}, | |
327 | + {file = "ctranslate2-4.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6aff28115b00ec839c4f106feb2fb8de5cd75314a277fa72e1953efa3e251b2"}, | |
328 | + {file = "ctranslate2-4.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:998b1fc6da60863b4e9c48502cae5956520eeebeacef3838a443c538e846089c"}, | |
329 | + {file = "ctranslate2-4.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47635ca9b58cb0946eefb187ad2963fea3f3c44093f8059ec37cf4d9ab5a9810"}, | |
330 | + {file = "ctranslate2-4.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:ece6c255bad7f76ad92e6a2345685c85f8c0547a06861ec71672a6a82c519944"}, | |
331 | + {file = "ctranslate2-4.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f4edde5d86466d85b6d6626f90cc0e40f1304c9ad7471e8363e06cf2c96ec2e"}, | |
332 | + {file = "ctranslate2-4.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d478b00a9b2fc78aae815512dfea76d6e15c71f41c31e95b3d5129a1387cf1f5"}, | |
333 | + {file = "ctranslate2-4.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f65820714a81df2ad707e38ebbffdaa4c2b76bef80063684921ab4378fdf659"}, | |
334 | + {file = "ctranslate2-4.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1d6726c7ed4e528a18c48487a5f5f3dcc8d66d551069f319c044de0ae8c8015"}, | |
335 | + {file = "ctranslate2-4.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:f889e37cb89e663be300a23e1fca4e8c8d3191615ec036c89e49b504b621ba90"}, | |
336 | +] | |
337 | + | |
338 | +[package.dependencies] | |
339 | +numpy = "*" | |
340 | +pyyaml = ">=5.3,<7" | |
341 | +setuptools = "*" | |
342 | + | |
343 | +[[package]] | |
344 | +name = "dnspython" | |
345 | +version = "2.6.1" | |
346 | +description = "DNS toolkit" | |
347 | +optional = false | |
348 | +python-versions = ">=3.8" | |
349 | +files = [ | |
350 | + {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, | |
351 | + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, | |
352 | +] | |
353 | + | |
354 | +[package.extras] | |
355 | +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] | |
356 | +dnssec = ["cryptography (>=41)"] | |
357 | +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] | |
358 | +doq = ["aioquic (>=0.9.25)"] | |
359 | +idna = ["idna (>=3.6)"] | |
360 | +trio = ["trio (>=0.23)"] | |
361 | +wmi = ["wmi (>=1.5.1)"] | |
362 | + | |
363 | +[[package]] | |
364 | +name = "email-validator" | |
365 | +version = "2.1.1" | |
366 | +description = "A robust email address syntax and deliverability validation library." | |
367 | +optional = false | |
368 | +python-versions = ">=3.8" | |
369 | +files = [ | |
370 | + {file = "email_validator-2.1.1-py3-none-any.whl", hash = "sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05"}, | |
371 | + {file = "email_validator-2.1.1.tar.gz", hash = "sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84"}, | |
372 | +] | |
373 | + | |
374 | +[package.dependencies] | |
375 | +dnspython = ">=2.0.0" | |
376 | +idna = ">=2.0.0" | |
377 | + | |
378 | +[[package]] | |
379 | +name = "execnet" | |
380 | +version = "2.1.1" | |
381 | +description = "execnet: rapid multi-Python deployment" | |
382 | +optional = false | |
383 | +python-versions = ">=3.8" | |
384 | +files = [ | |
385 | + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, | |
386 | + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, | |
387 | +] | |
388 | + | |
389 | +[package.extras] | |
390 | +testing = ["hatch", "pre-commit", "pytest", "tox"] | |
391 | + | |
392 | +[[package]] | |
393 | +name = "fastapi" | |
394 | +version = "0.111.0" | |
395 | +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" | |
396 | +optional = false | |
397 | +python-versions = ">=3.8" | |
398 | +files = [ | |
399 | + {file = "fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0"}, | |
400 | + {file = "fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7"}, | |
401 | +] | |
402 | + | |
403 | +[package.dependencies] | |
404 | +email_validator = ">=2.0.0" | |
405 | +fastapi-cli = ">=0.0.2" | |
406 | +httpx = ">=0.23.0" | |
407 | +jinja2 = ">=2.11.2" | |
408 | +orjson = ">=3.2.1" | |
409 | +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" | |
410 | +python-multipart = ">=0.0.7" | |
411 | +starlette = ">=0.37.2,<0.38.0" | |
412 | +typing-extensions = ">=4.8.0" | |
413 | +ujson = ">=4.0.1,<4.0.2 || >4.0.2,<4.1.0 || >4.1.0,<4.2.0 || >4.2.0,<4.3.0 || >4.3.0,<5.0.0 || >5.0.0,<5.1.0 || >5.1.0" | |
414 | +uvicorn = {version = ">=0.12.0", extras = ["standard"]} | |
415 | + | |
416 | +[package.extras] | |
417 | +all = ["email_validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] | |
418 | + | |
419 | +[[package]] | |
420 | +name = "fastapi-cli" | |
421 | +version = "0.0.3" | |
422 | +description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" | |
423 | +optional = false | |
424 | +python-versions = ">=3.8" | |
425 | +files = [ | |
426 | + {file = "fastapi_cli-0.0.3-py3-none-any.whl", hash = "sha256:ae233115f729945479044917d949095e829d2d84f56f55ce1ca17627872825a5"}, | |
427 | + {file = "fastapi_cli-0.0.3.tar.gz", hash = "sha256:3b6e4d2c4daee940fb8db59ebbfd60a72c4b962bcf593e263e4cc69da4ea3d7f"}, | |
428 | +] | |
429 | + | |
430 | +[package.dependencies] | |
431 | +fastapi = "*" | |
432 | +typer = ">=0.12.3" | |
433 | +uvicorn = {version = ">=0.15.0", extras = ["standard"]} | |
434 | + | |
435 | +[[package]] | |
436 | +name = "faster-whisper" | |
437 | +version = "1.0.2" | |
438 | +description = "Faster Whisper transcription with CTranslate2" | |
439 | +optional = false | |
440 | +python-versions = ">=3.8" | |
441 | +files = [ | |
442 | + {file = "faster-whisper-1.0.2.tar.gz", hash = "sha256:54d9fc698f7c665e00a0d5ed65d6e975b72a8862b8214f20a22e79b115c41511"}, | |
443 | + {file = "faster_whisper-1.0.2-py3-none-any.whl", hash = "sha256:d968c289222e766a49ed97eecec24e934bdef405183f57d6d434a364bb3569c1"}, | |
444 | +] | |
445 | + | |
446 | +[package.dependencies] | |
447 | +av = ">=11.0,<13" | |
448 | +ctranslate2 = ">=4.0,<5" | |
449 | +huggingface-hub = ">=0.13" | |
450 | +onnxruntime = ">=1.14,<2" | |
451 | +tokenizers = ">=0.13,<1" | |
452 | + | |
453 | +[package.extras] | |
454 | +conversion = ["transformers[torch] (>=4.23)"] | |
455 | +dev = ["black (==23.*)", "flake8 (==6.*)", "isort (==5.*)", "pytest (==7.*)"] | |
456 | + | |
457 | +[[package]] | |
458 | +name = "filelock" | |
459 | +version = "3.14.0" | |
460 | +description = "A platform independent file lock." | |
461 | +optional = false | |
462 | +python-versions = ">=3.8" | |
463 | +files = [ | |
464 | + {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, | |
465 | + {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, | |
466 | +] | |
467 | + | |
468 | +[package.extras] | |
469 | +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] | |
470 | +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] | |
471 | +typing = ["typing-extensions (>=4.8)"] | |
472 | + | |
473 | +[[package]] | |
474 | +name = "flatbuffers" | |
475 | +version = "24.3.25" | |
476 | +description = "The FlatBuffers serialization format for Python" | |
477 | +optional = false | |
478 | +python-versions = "*" | |
479 | +files = [ | |
480 | + {file = "flatbuffers-24.3.25-py2.py3-none-any.whl", hash = "sha256:8dbdec58f935f3765e4f7f3cf635ac3a77f83568138d6a2311f524ec96364812"}, | |
481 | + {file = "flatbuffers-24.3.25.tar.gz", hash = "sha256:de2ec5b203f21441716617f38443e0a8ebf3d25bf0d9c0bb0ce68fa00ad546a4"}, | |
482 | +] | |
483 | + | |
484 | +[[package]] | |
485 | +name = "fsspec" | |
486 | +version = "2024.5.0" | |
487 | +description = "File-system specification" | |
488 | +optional = false | |
489 | +python-versions = ">=3.8" | |
490 | +files = [ | |
491 | + {file = "fsspec-2024.5.0-py3-none-any.whl", hash = "sha256:e0fdbc446d67e182f49a70b82cf7889028a63588fde6b222521f10937b2b670c"}, | |
492 | + {file = "fsspec-2024.5.0.tar.gz", hash = "sha256:1d021b0b0f933e3b3029ed808eb400c08ba101ca2de4b3483fbc9ca23fcee94a"}, | |
493 | +] | |
494 | + | |
495 | +[package.extras] | |
496 | +abfs = ["adlfs"] | |
497 | +adl = ["adlfs"] | |
498 | +arrow = ["pyarrow (>=1)"] | |
499 | +dask = ["dask", "distributed"] | |
500 | +dev = ["pre-commit", "ruff"] | |
501 | +dropbox = ["dropbox", "dropboxdrivefs", "requests"] | |
502 | +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] | |
503 | +fuse = ["fusepy"] | |
504 | +gcs = ["gcsfs"] | |
505 | +git = ["pygit2"] | |
506 | +github = ["requests"] | |
507 | +gs = ["gcsfs"] | |
508 | +gui = ["panel"] | |
509 | +hdfs = ["pyarrow (>=1)"] | |
510 | +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] | |
511 | +libarchive = ["libarchive-c"] | |
512 | +oci = ["ocifs"] | |
513 | +s3 = ["s3fs"] | |
514 | +sftp = ["paramiko"] | |
515 | +smb = ["smbprotocol"] | |
516 | +ssh = ["paramiko"] | |
517 | +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] | |
518 | +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] | |
519 | +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] | |
520 | +tqdm = ["tqdm"] | |
521 | + | |
522 | +[[package]] | |
523 | +name = "h11" | |
524 | +version = "0.14.0" | |
525 | +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" | |
526 | +optional = false | |
527 | +python-versions = ">=3.7" | |
528 | +files = [ | |
529 | + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, | |
530 | + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, | |
531 | +] | |
532 | + | |
533 | +[[package]] | |
534 | +name = "httpcore" | |
535 | +version = "1.0.5" | |
536 | +description = "A minimal low-level HTTP client." | |
537 | +optional = false | |
538 | +python-versions = ">=3.8" | |
539 | +files = [ | |
540 | + {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, | |
541 | + {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, | |
542 | +] | |
543 | + | |
544 | +[package.dependencies] | |
545 | +certifi = "*" | |
546 | +h11 = ">=0.13,<0.15" | |
547 | + | |
548 | +[package.extras] | |
549 | +asyncio = ["anyio (>=4.0,<5.0)"] | |
550 | +http2 = ["h2 (>=3,<5)"] | |
551 | +socks = ["socksio (==1.*)"] | |
552 | +trio = ["trio (>=0.22.0,<0.26.0)"] | |
553 | + | |
554 | +[[package]] | |
555 | +name = "httptools" | |
556 | +version = "0.6.1" | |
557 | +description = "A collection of framework independent HTTP protocol utils." | |
558 | +optional = false | |
559 | +python-versions = ">=3.8.0" | |
560 | +files = [ | |
561 | + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"}, | |
562 | + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"}, | |
563 | + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"}, | |
564 | + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"}, | |
565 | + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"}, | |
566 | + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"}, | |
567 | + {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"}, | |
568 | + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"}, | |
569 | + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"}, | |
570 | + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"}, | |
571 | + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"}, | |
572 | + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"}, | |
573 | + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"}, | |
574 | + {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"}, | |
575 | + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, | |
576 | + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, | |
577 | + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, | |
578 | + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, | |
579 | + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, | |
580 | + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, | |
581 | + {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, | |
582 | + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"}, | |
583 | + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"}, | |
584 | + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"}, | |
585 | + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"}, | |
586 | + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"}, | |
587 | + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"}, | |
588 | + {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"}, | |
589 | + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"}, | |
590 | + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"}, | |
591 | + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"}, | |
592 | + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"}, | |
593 | + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"}, | |
594 | + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"}, | |
595 | + {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"}, | |
596 | + {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, | |
597 | +] | |
598 | + | |
599 | +[package.extras] | |
600 | +test = ["Cython (>=0.29.24,<0.30.0)"] | |
601 | + | |
602 | +[[package]] | |
603 | +name = "httpx" | |
604 | +version = "0.27.0" | |
605 | +description = "The next generation HTTP client." | |
606 | +optional = false | |
607 | +python-versions = ">=3.8" | |
608 | +files = [ | |
609 | + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, | |
610 | + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, | |
611 | +] | |
612 | + | |
613 | +[package.dependencies] | |
614 | +anyio = "*" | |
615 | +certifi = "*" | |
616 | +httpcore = "==1.*" | |
617 | +idna = "*" | |
618 | +sniffio = "*" | |
619 | + | |
620 | +[package.extras] | |
621 | +brotli = ["brotli", "brotlicffi"] | |
622 | +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] | |
623 | +http2 = ["h2 (>=3,<5)"] | |
624 | +socks = ["socksio (==1.*)"] | |
625 | + | |
626 | +[[package]] | |
627 | +name = "httpx-ws" | |
628 | +version = "0.6.0" | |
629 | +description = "WebSockets support for HTTPX" | |
630 | +optional = false | |
631 | +python-versions = ">=3.8" | |
632 | +files = [ | |
633 | + {file = "httpx_ws-0.6.0-py3-none-any.whl", hash = "sha256:437cfca94519a4e6ae06eb5573192df6c0da85c22b1a19cc1ea0b02b05a51d25"}, | |
634 | + {file = "httpx_ws-0.6.0.tar.gz", hash = "sha256:60218f531fb474a2143af38568f4b7d94ba356780973443365c8e2c87882bb8c"}, | |
635 | +] | |
636 | + | |
637 | +[package.dependencies] | |
638 | +anyio = ">=4" | |
639 | +httpcore = ">=1.0.4" | |
640 | +httpx = ">=0.23.1" | |
641 | +wsproto = "*" | |
642 | + | |
643 | +[[package]] | |
644 | +name = "huggingface-hub" | |
645 | +version = "0.23.0" | |
646 | +description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" | |
647 | +optional = false | |
648 | +python-versions = ">=3.8.0" | |
649 | +files = [ | |
650 | + {file = "huggingface_hub-0.23.0-py3-none-any.whl", hash = "sha256:075c30d48ee7db2bba779190dc526d2c11d422aed6f9044c5e2fdc2c432fdb91"}, | |
651 | + {file = "huggingface_hub-0.23.0.tar.gz", hash = "sha256:7126dedd10a4c6fac796ced4d87a8cf004efc722a5125c2c09299017fa366fa9"}, | |
652 | +] | |
653 | + | |
654 | +[package.dependencies] | |
655 | +filelock = "*" | |
656 | +fsspec = ">=2023.5.0" | |
657 | +packaging = ">=20.9" | |
658 | +pyyaml = ">=5.1" | |
659 | +requests = "*" | |
660 | +tqdm = ">=4.42.1" | |
661 | +typing-extensions = ">=3.7.4.3" | |
662 | + | |
663 | +[package.extras] | |
664 | +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.3.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] | |
665 | +cli = ["InquirerPy (==0.3.4)"] | |
666 | +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.3.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] | |
667 | +fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] | |
668 | +hf-transfer = ["hf-transfer (>=0.1.4)"] | |
669 | +inference = ["aiohttp", "minijinja (>=1.0)"] | |
670 | +quality = ["mypy (==1.5.1)", "ruff (>=0.3.0)"] | |
671 | +tensorflow = ["graphviz", "pydot", "tensorflow"] | |
672 | +tensorflow-testing = ["keras (<3.0)", "tensorflow"] | |
673 | +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] | |
674 | +torch = ["safetensors", "torch"] | |
675 | +typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] | |
676 | + | |
677 | +[[package]] | |
678 | +name = "humanfriendly" | |
679 | +version = "10.0" | |
680 | +description = "Human friendly output for text interfaces using Python" | |
681 | +optional = false | |
682 | +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | |
683 | +files = [ | |
684 | + {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"}, | |
685 | + {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"}, | |
686 | +] | |
687 | + | |
688 | +[package.dependencies] | |
689 | +pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_version >= \"3.8\""} | |
690 | + | |
691 | +[[package]] | |
692 | +name = "idna" | |
693 | +version = "3.7" | |
694 | +description = "Internationalized Domain Names in Applications (IDNA)" | |
695 | +optional = false | |
696 | +python-versions = ">=3.5" | |
697 | +files = [ | |
698 | + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, | |
699 | + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, | |
700 | +] | |
701 | + | |
702 | +[[package]] | |
703 | +name = "iniconfig" | |
704 | +version = "2.0.0" | |
705 | +description = "brain-dead simple config-ini parsing" | |
706 | +optional = false | |
707 | +python-versions = ">=3.7" | |
708 | +files = [ | |
709 | + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, | |
710 | + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, | |
711 | +] | |
712 | + | |
713 | +[[package]] | |
714 | +name = "jinja2" | |
715 | +version = "3.1.4" | |
716 | +description = "A very fast and expressive template engine." | |
717 | +optional = false | |
718 | +python-versions = ">=3.7" | |
719 | +files = [ | |
720 | + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, | |
721 | + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, | |
722 | +] | |
723 | + | |
724 | +[package.dependencies] | |
725 | +MarkupSafe = ">=2.0" | |
726 | + | |
727 | +[package.extras] | |
728 | +i18n = ["Babel (>=2.7)"] | |
729 | + | |
730 | +[[package]] | |
731 | +name = "markdown-it-py" | |
732 | +version = "3.0.0" | |
733 | +description = "Python port of markdown-it. Markdown parsing, done right!" | |
734 | +optional = false | |
735 | +python-versions = ">=3.8" | |
736 | +files = [ | |
737 | + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, | |
738 | + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, | |
739 | +] | |
740 | + | |
741 | +[package.dependencies] | |
742 | +mdurl = ">=0.1,<1.0" | |
743 | + | |
744 | +[package.extras] | |
745 | +benchmarking = ["psutil", "pytest", "pytest-benchmark"] | |
746 | +code-style = ["pre-commit (>=3.0,<4.0)"] | |
747 | +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] | |
748 | +linkify = ["linkify-it-py (>=1,<3)"] | |
749 | +plugins = ["mdit-py-plugins"] | |
750 | +profiling = ["gprof2dot"] | |
751 | +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] | |
752 | +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] | |
753 | + | |
754 | +[[package]] | |
755 | +name = "markupsafe" | |
756 | +version = "2.1.5" | |
757 | +description = "Safely add untrusted strings to HTML/XML markup." | |
758 | +optional = false | |
759 | +python-versions = ">=3.7" | |
760 | +files = [ | |
761 | + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, | |
762 | + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, | |
763 | + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, | |
764 | + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, | |
765 | + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, | |
766 | + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, | |
767 | + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, | |
768 | + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, | |
769 | + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, | |
770 | + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, | |
771 | + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, | |
772 | + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, | |
773 | + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, | |
774 | + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, | |
775 | + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, | |
776 | + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, | |
777 | + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, | |
778 | + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, | |
779 | + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, | |
780 | + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, | |
781 | + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, | |
782 | + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, | |
783 | + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, | |
784 | + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, | |
785 | + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, | |
786 | + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, | |
787 | + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, | |
788 | + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, | |
789 | + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, | |
790 | + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, | |
791 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, | |
792 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, | |
793 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, | |
794 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, | |
795 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, | |
796 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, | |
797 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, | |
798 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, | |
799 | + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, | |
800 | + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, | |
801 | + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, | |
802 | + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, | |
803 | + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, | |
804 | + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, | |
805 | + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, | |
806 | + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, | |
807 | + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, | |
808 | + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, | |
809 | + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, | |
810 | + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, | |
811 | + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, | |
812 | + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, | |
813 | + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, | |
814 | + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, | |
815 | + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, | |
816 | + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, | |
817 | + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, | |
818 | + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, | |
819 | + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, | |
820 | + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, | |
821 | +] | |
822 | + | |
823 | +[[package]] | |
824 | +name = "mdurl" | |
825 | +version = "0.1.2" | |
826 | +description = "Markdown URL utilities" | |
827 | +optional = false | |
828 | +python-versions = ">=3.7" | |
829 | +files = [ | |
830 | + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, | |
831 | + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, | |
832 | +] | |
833 | + | |
834 | +[[package]] | |
835 | +name = "mpmath" | |
836 | +version = "1.3.0" | |
837 | +description = "Python library for arbitrary-precision floating-point arithmetic" | |
838 | +optional = false | |
839 | +python-versions = "*" | |
840 | +files = [ | |
841 | + {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, | |
842 | + {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, | |
843 | +] | |
844 | + | |
845 | +[package.extras] | |
846 | +develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] | |
847 | +docs = ["sphinx"] | |
848 | +gmpy = ["gmpy2 (>=2.1.0a4)"] | |
849 | +tests = ["pytest (>=4.6)"] | |
850 | + | |
851 | +[[package]] | |
852 | +name = "numpy" | |
853 | +version = "1.26.4" | |
854 | +description = "Fundamental package for array computing in Python" | |
855 | +optional = false | |
856 | +python-versions = ">=3.9" | |
857 | +files = [ | |
858 | + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, | |
859 | + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, | |
860 | + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, | |
861 | + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, | |
862 | + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, | |
863 | + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, | |
864 | + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, | |
865 | + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, | |
866 | + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, | |
867 | + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, | |
868 | + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, | |
869 | + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, | |
870 | + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, | |
871 | + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, | |
872 | + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, | |
873 | + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, | |
874 | + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, | |
875 | + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, | |
876 | + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, | |
877 | + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, | |
878 | + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, | |
879 | + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, | |
880 | + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, | |
881 | + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, | |
882 | + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, | |
883 | + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, | |
884 | + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, | |
885 | + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, | |
886 | + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, | |
887 | + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, | |
888 | + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, | |
889 | + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, | |
890 | + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, | |
891 | + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, | |
892 | + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, | |
893 | + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, | |
894 | +] | |
895 | + | |
896 | +[[package]] | |
897 | +name = "onnxruntime" | |
898 | +version = "1.17.3" | |
899 | +description = "ONNX Runtime is a runtime accelerator for Machine Learning models" | |
900 | +optional = false | |
901 | +python-versions = "*" | |
902 | +files = [ | |
903 | + {file = "onnxruntime-1.17.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d86dde9c0bb435d709e51bd25991c9fe5b9a5b168df45ce119769edc4d198b15"}, | |
904 | + {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9d87b68bf931ac527b2d3c094ead66bb4381bac4298b65f46c54fe4d1e255865"}, | |
905 | + {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26e950cf0333cf114a155f9142e71da344d2b08dfe202763a403ae81cc02ebd1"}, | |
906 | + {file = "onnxruntime-1.17.3-cp310-cp310-win32.whl", hash = "sha256:0962a4d0f5acebf62e1f0bf69b6e0adf16649115d8de854c1460e79972324d68"}, | |
907 | + {file = "onnxruntime-1.17.3-cp310-cp310-win_amd64.whl", hash = "sha256:468ccb8a0faa25c681a41787b1594bf4448b0252d3efc8b62fd8b2411754340f"}, | |
908 | + {file = "onnxruntime-1.17.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e8cd90c1c17d13d47b89ab076471e07fb85467c01dcd87a8b8b5cdfbcb40aa51"}, | |
909 | + {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a058b39801baefe454eeb8acf3ada298c55a06a4896fafc224c02d79e9037f60"}, | |
910 | + {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f823d5eb4807007f3da7b27ca972263df6a1836e6f327384eb266274c53d05d"}, | |
911 | + {file = "onnxruntime-1.17.3-cp311-cp311-win32.whl", hash = "sha256:b66b23f9109e78ff2791628627a26f65cd335dcc5fbd67ff60162733a2f7aded"}, | |
912 | + {file = "onnxruntime-1.17.3-cp311-cp311-win_amd64.whl", hash = "sha256:570760ca53a74cdd751ee49f13de70d1384dcf73d9888b8deac0917023ccda6d"}, | |
913 | + {file = "onnxruntime-1.17.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:77c318178d9c16e9beadd9a4070d8aaa9f57382c3f509b01709f0f010e583b99"}, | |
914 | + {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23da8469049b9759082e22c41a444f44a520a9c874b084711b6343672879f50b"}, | |
915 | + {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2949730215af3f9289008b2e31e9bbef952012a77035b911c4977edea06f3f9e"}, | |
916 | + {file = "onnxruntime-1.17.3-cp312-cp312-win32.whl", hash = "sha256:6c7555a49008f403fb3b19204671efb94187c5085976ae526cb625f6ede317bc"}, | |
917 | + {file = "onnxruntime-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:58672cf20293a1b8a277a5c6c55383359fcdf6119b2f14df6ce3b140f5001c39"}, | |
918 | + {file = "onnxruntime-1.17.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:4395ba86e3c1e93c794a00619ef1aec597ab78f5a5039f3c6d2e9d0695c0a734"}, | |
919 | + {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdf354c04344ec38564fc22394e1fe08aa6d70d790df00159205a0055c4a4d3f"}, | |
920 | + {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a94b600b7af50e922d44b95a57981e3e35103c6e3693241a03d3ca204740bbda"}, | |
921 | + {file = "onnxruntime-1.17.3-cp38-cp38-win32.whl", hash = "sha256:5a335c76f9c002a8586c7f38bc20fe4b3725ced21f8ead835c3e4e507e42b2ab"}, | |
922 | + {file = "onnxruntime-1.17.3-cp38-cp38-win_amd64.whl", hash = "sha256:8f56a86fbd0ddc8f22696ddeda0677b041381f4168a2ca06f712ef6ec6050d6d"}, | |
923 | + {file = "onnxruntime-1.17.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:e0ae39f5452278cd349520c296e7de3e90d62dc5b0157c6868e2748d7f28b871"}, | |
924 | + {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ff2dc012bd930578aff5232afd2905bf16620815f36783a941aafabf94b3702"}, | |
925 | + {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf6c37483782e4785019b56e26224a25e9b9a35b849d0169ce69189867a22bb1"}, | |
926 | + {file = "onnxruntime-1.17.3-cp39-cp39-win32.whl", hash = "sha256:351bf5a1140dcc43bfb8d3d1a230928ee61fcd54b0ea664c8e9a889a8e3aa515"}, | |
927 | + {file = "onnxruntime-1.17.3-cp39-cp39-win_amd64.whl", hash = "sha256:57a3de15778da8d6cc43fbf6cf038e1e746146300b5f0b1fbf01f6f795dc6440"}, | |
928 | +] | |
929 | + | |
930 | +[package.dependencies] | |
931 | +coloredlogs = "*" | |
932 | +flatbuffers = "*" | |
933 | +numpy = ">=1.21.6" | |
934 | +packaging = "*" | |
935 | +protobuf = "*" | |
936 | +sympy = "*" | |
937 | + | |
938 | +[[package]] | |
939 | +name = "orjson" | |
940 | +version = "3.10.3" | |
941 | +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" | |
942 | +optional = false | |
943 | +python-versions = ">=3.8" | |
944 | +files = [ | |
945 | + {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, | |
946 | + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, | |
947 | + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, | |
948 | + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, | |
949 | + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, | |
950 | + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, | |
951 | + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, | |
952 | + {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, | |
953 | + {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, | |
954 | + {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, | |
955 | + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, | |
956 | + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, | |
957 | + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, | |
958 | + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, | |
959 | + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, | |
960 | + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, | |
961 | + {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, | |
962 | + {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, | |
963 | + {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, | |
964 | + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, | |
965 | + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, | |
966 | + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, | |
967 | + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, | |
968 | + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, | |
969 | + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, | |
970 | + {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, | |
971 | + {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, | |
972 | + {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, | |
973 | + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, | |
974 | + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, | |
975 | + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, | |
976 | + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, | |
977 | + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, | |
978 | + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, | |
979 | + {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, | |
980 | + {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, | |
981 | + {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, | |
982 | + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, | |
983 | + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, | |
984 | + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, | |
985 | + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, | |
986 | + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, | |
987 | + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, | |
988 | + {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, | |
989 | + {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, | |
990 | + {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, | |
991 | +] | |
992 | + | |
993 | +[[package]] | |
994 | +name = "packaging" | |
995 | +version = "24.0" | |
996 | +description = "Core utilities for Python packages" | |
997 | +optional = false | |
998 | +python-versions = ">=3.7" | |
999 | +files = [ | |
1000 | + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, | |
1001 | + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, | |
1002 | +] | |
1003 | + | |
1004 | +[[package]] | |
1005 | +name = "pluggy" | |
1006 | +version = "1.5.0" | |
1007 | +description = "plugin and hook calling mechanisms for python" | |
1008 | +optional = false | |
1009 | +python-versions = ">=3.8" | |
1010 | +files = [ | |
1011 | + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, | |
1012 | + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, | |
1013 | +] | |
1014 | + | |
1015 | +[package.extras] | |
1016 | +dev = ["pre-commit", "tox"] | |
1017 | +testing = ["pytest", "pytest-benchmark"] | |
1018 | + | |
1019 | +[[package]] | |
1020 | +name = "protobuf" | |
1021 | +version = "5.26.1" | |
1022 | +description = "" | |
1023 | +optional = false | |
1024 | +python-versions = ">=3.8" | |
1025 | +files = [ | |
1026 | + {file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"}, | |
1027 | + {file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"}, | |
1028 | + {file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"}, | |
1029 | + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"}, | |
1030 | + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"}, | |
1031 | + {file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"}, | |
1032 | + {file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"}, | |
1033 | + {file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"}, | |
1034 | + {file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"}, | |
1035 | + {file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"}, | |
1036 | + {file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"}, | |
1037 | +] | |
1038 | + | |
1039 | +[[package]] | |
1040 | +name = "pycparser" | |
1041 | +version = "2.22" | |
1042 | +description = "C parser in Python" | |
1043 | +optional = false | |
1044 | +python-versions = ">=3.8" | |
1045 | +files = [ | |
1046 | + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, | |
1047 | + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, | |
1048 | +] | |
1049 | + | |
1050 | +[[package]] | |
1051 | +name = "pydantic" | |
1052 | +version = "2.7.1" | |
1053 | +description = "Data validation using Python type hints" | |
1054 | +optional = false | |
1055 | +python-versions = ">=3.8" | |
1056 | +files = [ | |
1057 | + {file = "pydantic-2.7.1-py3-none-any.whl", hash = "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5"}, | |
1058 | + {file = "pydantic-2.7.1.tar.gz", hash = "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"}, | |
1059 | +] | |
1060 | + | |
1061 | +[package.dependencies] | |
1062 | +annotated-types = ">=0.4.0" | |
1063 | +pydantic-core = "2.18.2" | |
1064 | +typing-extensions = ">=4.6.1" | |
1065 | + | |
1066 | +[package.extras] | |
1067 | +email = ["email-validator (>=2.0.0)"] | |
1068 | + | |
1069 | +[[package]] | |
1070 | +name = "pydantic-core" | |
1071 | +version = "2.18.2" | |
1072 | +description = "Core functionality for Pydantic validation and serialization" | |
1073 | +optional = false | |
1074 | +python-versions = ">=3.8" | |
1075 | +files = [ | |
1076 | + {file = "pydantic_core-2.18.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81"}, | |
1077 | + {file = "pydantic_core-2.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2"}, | |
1078 | + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d"}, | |
1079 | + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250"}, | |
1080 | + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038"}, | |
1081 | + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74"}, | |
1082 | + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af"}, | |
1083 | + {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857"}, | |
1084 | + {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563"}, | |
1085 | + {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38"}, | |
1086 | + {file = "pydantic_core-2.18.2-cp310-none-win32.whl", hash = "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027"}, | |
1087 | + {file = "pydantic_core-2.18.2-cp310-none-win_amd64.whl", hash = "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543"}, | |
1088 | + {file = "pydantic_core-2.18.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3"}, | |
1089 | + {file = "pydantic_core-2.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4"}, | |
1090 | + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90"}, | |
1091 | + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd"}, | |
1092 | + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150"}, | |
1093 | + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413"}, | |
1094 | + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6"}, | |
1095 | + {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c"}, | |
1096 | + {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0"}, | |
1097 | + {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664"}, | |
1098 | + {file = "pydantic_core-2.18.2-cp311-none-win32.whl", hash = "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e"}, | |
1099 | + {file = "pydantic_core-2.18.2-cp311-none-win_amd64.whl", hash = "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3"}, | |
1100 | + {file = "pydantic_core-2.18.2-cp311-none-win_arm64.whl", hash = "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d"}, | |
1101 | + {file = "pydantic_core-2.18.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242"}, | |
1102 | + {file = "pydantic_core-2.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043"}, | |
1103 | + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182"}, | |
1104 | + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f"}, | |
1105 | + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3"}, | |
1106 | + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f"}, | |
1107 | + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72"}, | |
1108 | + {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c"}, | |
1109 | + {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241"}, | |
1110 | + {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3"}, | |
1111 | + {file = "pydantic_core-2.18.2-cp312-none-win32.whl", hash = "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038"}, | |
1112 | + {file = "pydantic_core-2.18.2-cp312-none-win_amd64.whl", hash = "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438"}, | |
1113 | + {file = "pydantic_core-2.18.2-cp312-none-win_arm64.whl", hash = "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec"}, | |
1114 | + {file = "pydantic_core-2.18.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439"}, | |
1115 | + {file = "pydantic_core-2.18.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347"}, | |
1116 | + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91"}, | |
1117 | + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb"}, | |
1118 | + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd"}, | |
1119 | + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b"}, | |
1120 | + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70"}, | |
1121 | + {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b"}, | |
1122 | + {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761"}, | |
1123 | + {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788"}, | |
1124 | + {file = "pydantic_core-2.18.2-cp38-none-win32.whl", hash = "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350"}, | |
1125 | + {file = "pydantic_core-2.18.2-cp38-none-win_amd64.whl", hash = "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e"}, | |
1126 | + {file = "pydantic_core-2.18.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8"}, | |
1127 | + {file = "pydantic_core-2.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a"}, | |
1128 | + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804"}, | |
1129 | + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b"}, | |
1130 | + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0"}, | |
1131 | + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845"}, | |
1132 | + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0"}, | |
1133 | + {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4"}, | |
1134 | + {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399"}, | |
1135 | + {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b"}, | |
1136 | + {file = "pydantic_core-2.18.2-cp39-none-win32.whl", hash = "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e"}, | |
1137 | + {file = "pydantic_core-2.18.2-cp39-none-win_amd64.whl", hash = "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641"}, | |
1138 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75"}, | |
1139 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d"}, | |
1140 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9"}, | |
1141 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7"}, | |
1142 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb"}, | |
1143 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a"}, | |
1144 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b"}, | |
1145 | + {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3"}, | |
1146 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c"}, | |
1147 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce"}, | |
1148 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400"}, | |
1149 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349"}, | |
1150 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c"}, | |
1151 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592"}, | |
1152 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae"}, | |
1153 | + {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374"}, | |
1154 | + {file = "pydantic_core-2.18.2.tar.gz", hash = "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e"}, | |
1155 | +] | |
1156 | + | |
1157 | +[package.dependencies] | |
1158 | +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" | |
1159 | + | |
1160 | +[[package]] | |
1161 | +name = "pydantic-settings" | |
1162 | +version = "2.2.1" | |
1163 | +description = "Settings management using Pydantic" | |
1164 | +optional = false | |
1165 | +python-versions = ">=3.8" | |
1166 | +files = [ | |
1167 | + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, | |
1168 | + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, | |
1169 | +] | |
1170 | + | |
1171 | +[package.dependencies] | |
1172 | +pydantic = ">=2.3.0" | |
1173 | +python-dotenv = ">=0.21.0" | |
1174 | + | |
1175 | +[package.extras] | |
1176 | +toml = ["tomli (>=2.0.1)"] | |
1177 | +yaml = ["pyyaml (>=6.0.1)"] | |
1178 | + | |
1179 | +[[package]] | |
1180 | +name = "pygments" | |
1181 | +version = "2.18.0" | |
1182 | +description = "Pygments is a syntax highlighting package written in Python." | |
1183 | +optional = false | |
1184 | +python-versions = ">=3.8" | |
1185 | +files = [ | |
1186 | + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, | |
1187 | + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, | |
1188 | +] | |
1189 | + | |
1190 | +[package.extras] | |
1191 | +windows-terminal = ["colorama (>=0.4.6)"] | |
1192 | + | |
1193 | +[[package]] | |
1194 | +name = "pyreadline3" | |
1195 | +version = "3.4.1" | |
1196 | +description = "A python implementation of GNU readline." | |
1197 | +optional = false | |
1198 | +python-versions = "*" | |
1199 | +files = [ | |
1200 | + {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, | |
1201 | + {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, | |
1202 | +] | |
1203 | + | |
1204 | +[[package]] | |
1205 | +name = "pytest" | |
1206 | +version = "8.2.0" | |
1207 | +description = "pytest: simple powerful testing with Python" | |
1208 | +optional = false | |
1209 | +python-versions = ">=3.8" | |
1210 | +files = [ | |
1211 | + {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, | |
1212 | + {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, | |
1213 | +] | |
1214 | + | |
1215 | +[package.dependencies] | |
1216 | +colorama = {version = "*", markers = "sys_platform == \"win32\""} | |
1217 | +iniconfig = "*" | |
1218 | +packaging = "*" | |
1219 | +pluggy = ">=1.5,<2.0" | |
1220 | + | |
1221 | +[package.extras] | |
1222 | +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] | |
1223 | + | |
1224 | +[[package]] | |
1225 | +name = "pytest-asyncio" | |
1226 | +version = "0.23.6" | |
1227 | +description = "Pytest support for asyncio" | |
1228 | +optional = false | |
1229 | +python-versions = ">=3.8" | |
1230 | +files = [ | |
1231 | + {file = "pytest-asyncio-0.23.6.tar.gz", hash = "sha256:ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f"}, | |
1232 | + {file = "pytest_asyncio-0.23.6-py3-none-any.whl", hash = "sha256:68516fdd1018ac57b846c9846b954f0393b26f094764a28c955eabb0536a4e8a"}, | |
1233 | +] | |
1234 | + | |
1235 | +[package.dependencies] | |
1236 | +pytest = ">=7.0.0,<9" | |
1237 | + | |
1238 | +[package.extras] | |
1239 | +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"] | |
1240 | +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] | |
1241 | + | |
1242 | +[[package]] | |
1243 | +name = "pytest-xdist" | |
1244 | +version = "3.6.1" | |
1245 | +description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" | |
1246 | +optional = false | |
1247 | +python-versions = ">=3.8" | |
1248 | +files = [ | |
1249 | + {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, | |
1250 | + {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, | |
1251 | +] | |
1252 | + | |
1253 | +[package.dependencies] | |
1254 | +execnet = ">=2.1" | |
1255 | +pytest = ">=7.0.0" | |
1256 | + | |
1257 | +[package.extras] | |
1258 | +psutil = ["psutil (>=3.0)"] | |
1259 | +setproctitle = ["setproctitle"] | |
1260 | +testing = ["filelock"] | |
1261 | + | |
1262 | +[[package]] | |
1263 | +name = "python-dotenv" | |
1264 | +version = "1.0.1" | |
1265 | +description = "Read key-value pairs from a .env file and set them as environment variables" | |
1266 | +optional = false | |
1267 | +python-versions = ">=3.8" | |
1268 | +files = [ | |
1269 | + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, | |
1270 | + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, | |
1271 | +] | |
1272 | + | |
1273 | +[package.extras] | |
1274 | +cli = ["click (>=5.0)"] | |
1275 | + | |
1276 | +[[package]] | |
1277 | +name = "python-multipart" | |
1278 | +version = "0.0.9" | |
1279 | +description = "A streaming multipart parser for Python" | |
1280 | +optional = false | |
1281 | +python-versions = ">=3.8" | |
1282 | +files = [ | |
1283 | + {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, | |
1284 | + {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, | |
1285 | +] | |
1286 | + | |
1287 | +[package.extras] | |
1288 | +dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"] | |
1289 | + | |
1290 | +[[package]] | |
1291 | +name = "pyyaml" | |
1292 | +version = "6.0.1" | |
1293 | +description = "YAML parser and emitter for Python" | |
1294 | +optional = false | |
1295 | +python-versions = ">=3.6" | |
1296 | +files = [ | |
1297 | + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, | |
1298 | + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, | |
1299 | + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, | |
1300 | + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, | |
1301 | + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, | |
1302 | + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, | |
1303 | + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, | |
1304 | + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, | |
1305 | + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, | |
1306 | + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, | |
1307 | + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, | |
1308 | + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, | |
1309 | + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, | |
1310 | + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, | |
1311 | + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, | |
1312 | + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, | |
1313 | + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, | |
1314 | + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, | |
1315 | + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, | |
1316 | + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, | |
1317 | + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, | |
1318 | + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, | |
1319 | + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, | |
1320 | + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, | |
1321 | + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, | |
1322 | + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, | |
1323 | + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, | |
1324 | + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, | |
1325 | + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, | |
1326 | + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, | |
1327 | + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, | |
1328 | + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, | |
1329 | + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, | |
1330 | + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, | |
1331 | + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, | |
1332 | + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, | |
1333 | + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, | |
1334 | + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, | |
1335 | + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, | |
1336 | + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, | |
1337 | + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, | |
1338 | + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, | |
1339 | + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, | |
1340 | + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, | |
1341 | + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, | |
1342 | + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, | |
1343 | + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, | |
1344 | + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, | |
1345 | + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, | |
1346 | + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, | |
1347 | + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, | |
1348 | +] | |
1349 | + | |
1350 | +[[package]] | |
1351 | +name = "requests" | |
1352 | +version = "2.31.0" | |
1353 | +description = "Python HTTP for Humans." | |
1354 | +optional = false | |
1355 | +python-versions = ">=3.7" | |
1356 | +files = [ | |
1357 | + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, | |
1358 | + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, | |
1359 | +] | |
1360 | + | |
1361 | +[package.dependencies] | |
1362 | +certifi = ">=2017.4.17" | |
1363 | +charset-normalizer = ">=2,<4" | |
1364 | +idna = ">=2.5,<4" | |
1365 | +urllib3 = ">=1.21.1,<3" | |
1366 | + | |
1367 | +[package.extras] | |
1368 | +socks = ["PySocks (>=1.5.6,!=1.5.7)"] | |
1369 | +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] | |
1370 | + | |
1371 | +[[package]] | |
1372 | +name = "rich" | |
1373 | +version = "13.7.1" | |
1374 | +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" | |
1375 | +optional = false | |
1376 | +python-versions = ">=3.7.0" | |
1377 | +files = [ | |
1378 | + {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, | |
1379 | + {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, | |
1380 | +] | |
1381 | + | |
1382 | +[package.dependencies] | |
1383 | +markdown-it-py = ">=2.2.0" | |
1384 | +pygments = ">=2.13.0,<3.0.0" | |
1385 | + | |
1386 | +[package.extras] | |
1387 | +jupyter = ["ipywidgets (>=7.5.1,<9)"] | |
1388 | + | |
1389 | +[[package]] | |
1390 | +name = "setuptools" | |
1391 | +version = "69.5.1" | |
1392 | +description = "Easily download, build, install, upgrade, and uninstall Python packages" | |
1393 | +optional = false | |
1394 | +python-versions = ">=3.8" | |
1395 | +files = [ | |
1396 | + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, | |
1397 | + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, | |
1398 | +] | |
1399 | + | |
1400 | +[package.extras] | |
1401 | +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] | |
1402 | +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] | |
1403 | +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] | |
1404 | + | |
1405 | +[[package]] | |
1406 | +name = "shellingham" | |
1407 | +version = "1.5.4" | |
1408 | +description = "Tool to Detect Surrounding Shell" | |
1409 | +optional = false | |
1410 | +python-versions = ">=3.7" | |
1411 | +files = [ | |
1412 | + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, | |
1413 | + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, | |
1414 | +] | |
1415 | + | |
1416 | +[[package]] | |
1417 | +name = "sniffio" | |
1418 | +version = "1.3.1" | |
1419 | +description = "Sniff out which async library your code is running under" | |
1420 | +optional = false | |
1421 | +python-versions = ">=3.7" | |
1422 | +files = [ | |
1423 | + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, | |
1424 | + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, | |
1425 | +] | |
1426 | + | |
1427 | +[[package]] | |
1428 | +name = "soundfile" | |
1429 | +version = "0.12.1" | |
1430 | +description = "An audio library based on libsndfile, CFFI and NumPy" | |
1431 | +optional = false | |
1432 | +python-versions = "*" | |
1433 | +files = [ | |
1434 | + {file = "soundfile-0.12.1-py2.py3-none-any.whl", hash = "sha256:828a79c2e75abab5359f780c81dccd4953c45a2c4cd4f05ba3e233ddf984b882"}, | |
1435 | + {file = "soundfile-0.12.1-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:d922be1563ce17a69582a352a86f28ed8c9f6a8bc951df63476ffc310c064bfa"}, | |
1436 | + {file = "soundfile-0.12.1-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:bceaab5c4febb11ea0554566784bcf4bc2e3977b53946dda2b12804b4fe524a8"}, | |
1437 | + {file = "soundfile-0.12.1-py2.py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:2dc3685bed7187c072a46ab4ffddd38cef7de9ae5eb05c03df2ad569cf4dacbc"}, | |
1438 | + {file = "soundfile-0.12.1-py2.py3-none-manylinux_2_31_x86_64.whl", hash = "sha256:074247b771a181859d2bc1f98b5ebf6d5153d2c397b86ee9e29ba602a8dfe2a6"}, | |
1439 | + {file = "soundfile-0.12.1-py2.py3-none-win32.whl", hash = "sha256:59dfd88c79b48f441bbf6994142a19ab1de3b9bb7c12863402c2bc621e49091a"}, | |
1440 | + {file = "soundfile-0.12.1-py2.py3-none-win_amd64.whl", hash = "sha256:0d86924c00b62552b650ddd28af426e3ff2d4dc2e9047dae5b3d8452e0a49a77"}, | |
1441 | + {file = "soundfile-0.12.1.tar.gz", hash = "sha256:e8e1017b2cf1dda767aef19d2fd9ee5ebe07e050d430f77a0a7c66ba08b8cdae"}, | |
1442 | +] | |
1443 | + | |
1444 | +[package.dependencies] | |
1445 | +cffi = ">=1.0" | |
1446 | + | |
1447 | +[package.extras] | |
1448 | +numpy = ["numpy"] | |
1449 | + | |
1450 | +[[package]] | |
1451 | +name = "starlette" | |
1452 | +version = "0.37.2" | |
1453 | +description = "The little ASGI library that shines." | |
1454 | +optional = false | |
1455 | +python-versions = ">=3.8" | |
1456 | +files = [ | |
1457 | + {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, | |
1458 | + {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, | |
1459 | +] | |
1460 | + | |
1461 | +[package.dependencies] | |
1462 | +anyio = ">=3.4.0,<5" | |
1463 | + | |
1464 | +[package.extras] | |
1465 | +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] | |
1466 | + | |
1467 | +[[package]] | |
1468 | +name = "sympy" | |
1469 | +version = "1.12" | |
1470 | +description = "Computer algebra system (CAS) in Python" | |
1471 | +optional = false | |
1472 | +python-versions = ">=3.8" | |
1473 | +files = [ | |
1474 | + {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"}, | |
1475 | + {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"}, | |
1476 | +] | |
1477 | + | |
1478 | +[package.dependencies] | |
1479 | +mpmath = ">=0.19" | |
1480 | + | |
1481 | +[[package]] | |
1482 | +name = "tokenizers" | |
1483 | +version = "0.19.1" | |
1484 | +description = "" | |
1485 | +optional = false | |
1486 | +python-versions = ">=3.7" | |
1487 | +files = [ | |
1488 | + {file = "tokenizers-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:952078130b3d101e05ecfc7fc3640282d74ed26bcf691400f872563fca15ac97"}, | |
1489 | + {file = "tokenizers-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82c8b8063de6c0468f08e82c4e198763e7b97aabfe573fd4cf7b33930ca4df77"}, | |
1490 | + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f03727225feaf340ceeb7e00604825addef622d551cbd46b7b775ac834c1e1c4"}, | |
1491 | + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:453e4422efdfc9c6b6bf2eae00d5e323f263fff62b29a8c9cd526c5003f3f642"}, | |
1492 | + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:02e81bf089ebf0e7f4df34fa0207519f07e66d8491d963618252f2e0729e0b46"}, | |
1493 | + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b07c538ba956843833fee1190cf769c60dc62e1cf934ed50d77d5502194d63b1"}, | |
1494 | + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28cab1582e0eec38b1f38c1c1fb2e56bce5dc180acb1724574fc5f47da2a4fe"}, | |
1495 | + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b01afb7193d47439f091cd8f070a1ced347ad0f9144952a30a41836902fe09e"}, | |
1496 | + {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7fb297edec6c6841ab2e4e8f357209519188e4a59b557ea4fafcf4691d1b4c98"}, | |
1497 | + {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e8a3dd055e515df7054378dc9d6fa8c8c34e1f32777fb9a01fea81496b3f9d3"}, | |
1498 | + {file = "tokenizers-0.19.1-cp310-none-win32.whl", hash = "sha256:7ff898780a155ea053f5d934925f3902be2ed1f4d916461e1a93019cc7250837"}, | |
1499 | + {file = "tokenizers-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:bea6f9947e9419c2fda21ae6c32871e3d398cba549b93f4a65a2d369662d9403"}, | |
1500 | + {file = "tokenizers-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5c88d1481f1882c2e53e6bb06491e474e420d9ac7bdff172610c4f9ad3898059"}, | |
1501 | + {file = "tokenizers-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddf672ed719b4ed82b51499100f5417d7d9f6fb05a65e232249268f35de5ed14"}, | |
1502 | + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dadc509cc8a9fe460bd274c0e16ac4184d0958117cf026e0ea8b32b438171594"}, | |
1503 | + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfedf31824ca4915b511b03441784ff640378191918264268e6923da48104acc"}, | |
1504 | + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac11016d0a04aa6487b1513a3a36e7bee7eec0e5d30057c9c0408067345c48d2"}, | |
1505 | + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76951121890fea8330d3a0df9a954b3f2a37e3ec20e5b0530e9a0044ca2e11fe"}, | |
1506 | + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b342d2ce8fc8d00f376af068e3274e2e8649562e3bc6ae4a67784ded6b99428d"}, | |
1507 | + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16ff18907f4909dca9b076b9c2d899114dd6abceeb074eca0c93e2353f943aa"}, | |
1508 | + {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:706a37cc5332f85f26efbe2bdc9ef8a9b372b77e4645331a405073e4b3a8c1c6"}, | |
1509 | + {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16baac68651701364b0289979ecec728546133e8e8fe38f66fe48ad07996b88b"}, | |
1510 | + {file = "tokenizers-0.19.1-cp311-none-win32.whl", hash = "sha256:9ed240c56b4403e22b9584ee37d87b8bfa14865134e3e1c3fb4b2c42fafd3256"}, | |
1511 | + {file = "tokenizers-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:ad57d59341710b94a7d9dbea13f5c1e7d76fd8d9bcd944a7a6ab0b0da6e0cc66"}, | |
1512 | + {file = "tokenizers-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:621d670e1b1c281a1c9698ed89451395d318802ff88d1fc1accff0867a06f153"}, | |
1513 | + {file = "tokenizers-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d924204a3dbe50b75630bd16f821ebda6a5f729928df30f582fb5aade90c818a"}, | |
1514 | + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4f3fefdc0446b1a1e6d81cd4c07088ac015665d2e812f6dbba4a06267d1a2c95"}, | |
1515 | + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9620b78e0b2d52ef07b0d428323fb34e8ea1219c5eac98c2596311f20f1f9266"}, | |
1516 | + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04ce49e82d100594715ac1b2ce87d1a36e61891a91de774755f743babcd0dd52"}, | |
1517 | + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5c2ff13d157afe413bf7e25789879dd463e5a4abfb529a2d8f8473d8042e28f"}, | |
1518 | + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3174c76efd9d08f836bfccaca7cfec3f4d1c0a4cf3acbc7236ad577cc423c840"}, | |
1519 | + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c9d5b6c0e7a1e979bec10ff960fae925e947aab95619a6fdb4c1d8ff3708ce3"}, | |
1520 | + {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a179856d1caee06577220ebcfa332af046d576fb73454b8f4d4b0ba8324423ea"}, | |
1521 | + {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:952b80dac1a6492170f8c2429bd11fcaa14377e097d12a1dbe0ef2fb2241e16c"}, | |
1522 | + {file = "tokenizers-0.19.1-cp312-none-win32.whl", hash = "sha256:01d62812454c188306755c94755465505836fd616f75067abcae529c35edeb57"}, | |
1523 | + {file = "tokenizers-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:b70bfbe3a82d3e3fb2a5e9b22a39f8d1740c96c68b6ace0086b39074f08ab89a"}, | |
1524 | + {file = "tokenizers-0.19.1-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:bb9dfe7dae85bc6119d705a76dc068c062b8b575abe3595e3c6276480e67e3f1"}, | |
1525 | + {file = "tokenizers-0.19.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:1f0360cbea28ea99944ac089c00de7b2e3e1c58f479fb8613b6d8d511ce98267"}, | |
1526 | + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:71e3ec71f0e78780851fef28c2a9babe20270404c921b756d7c532d280349214"}, | |
1527 | + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b82931fa619dbad979c0ee8e54dd5278acc418209cc897e42fac041f5366d626"}, | |
1528 | + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e8ff5b90eabdcdaa19af697885f70fe0b714ce16709cf43d4952f1f85299e73a"}, | |
1529 | + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e742d76ad84acbdb1a8e4694f915fe59ff6edc381c97d6dfdd054954e3478ad4"}, | |
1530 | + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d8c5d59d7b59885eab559d5bc082b2985555a54cda04dda4c65528d90ad252ad"}, | |
1531 | + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b2da5c32ed869bebd990c9420df49813709e953674c0722ff471a116d97b22d"}, | |
1532 | + {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:638e43936cc8b2cbb9f9d8dde0fe5e7e30766a3318d2342999ae27f68fdc9bd6"}, | |
1533 | + {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:78e769eb3b2c79687d9cb0f89ef77223e8e279b75c0a968e637ca7043a84463f"}, | |
1534 | + {file = "tokenizers-0.19.1-cp37-none-win32.whl", hash = "sha256:72791f9bb1ca78e3ae525d4782e85272c63faaef9940d92142aa3eb79f3407a3"}, | |
1535 | + {file = "tokenizers-0.19.1-cp37-none-win_amd64.whl", hash = "sha256:f3bbb7a0c5fcb692950b041ae11067ac54826204318922da754f908d95619fbc"}, | |
1536 | + {file = "tokenizers-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:07f9295349bbbcedae8cefdbcfa7f686aa420be8aca5d4f7d1ae6016c128c0c5"}, | |
1537 | + {file = "tokenizers-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10a707cc6c4b6b183ec5dbfc5c34f3064e18cf62b4a938cb41699e33a99e03c1"}, | |
1538 | + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6309271f57b397aa0aff0cbbe632ca9d70430839ca3178bf0f06f825924eca22"}, | |
1539 | + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ad23d37d68cf00d54af184586d79b84075ada495e7c5c0f601f051b162112dc"}, | |
1540 | + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:427c4f0f3df9109314d4f75b8d1f65d9477033e67ffaec4bca53293d3aca286d"}, | |
1541 | + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e83a31c9cf181a0a3ef0abad2b5f6b43399faf5da7e696196ddd110d332519ee"}, | |
1542 | + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c27b99889bd58b7e301468c0838c5ed75e60c66df0d4db80c08f43462f82e0d3"}, | |
1543 | + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bac0b0eb952412b0b196ca7a40e7dce4ed6f6926489313414010f2e6b9ec2adf"}, | |
1544 | + {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8a6298bde623725ca31c9035a04bf2ef63208d266acd2bed8c2cb7d2b7d53ce6"}, | |
1545 | + {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:08a44864e42fa6d7d76d7be4bec62c9982f6f6248b4aa42f7302aa01e0abfd26"}, | |
1546 | + {file = "tokenizers-0.19.1-cp38-none-win32.whl", hash = "sha256:1de5bc8652252d9357a666e609cb1453d4f8e160eb1fb2830ee369dd658e8975"}, | |
1547 | + {file = "tokenizers-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:0bcce02bf1ad9882345b34d5bd25ed4949a480cf0e656bbd468f4d8986f7a3f1"}, | |
1548 | + {file = "tokenizers-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0b9394bd204842a2a1fd37fe29935353742be4a3460b6ccbaefa93f58a8df43d"}, | |
1549 | + {file = "tokenizers-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4692ab92f91b87769d950ca14dbb61f8a9ef36a62f94bad6c82cc84a51f76f6a"}, | |
1550 | + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6258c2ef6f06259f70a682491c78561d492e885adeaf9f64f5389f78aa49a051"}, | |
1551 | + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c85cf76561fbd01e0d9ea2d1cbe711a65400092bc52b5242b16cfd22e51f0c58"}, | |
1552 | + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:670b802d4d82bbbb832ddb0d41df7015b3e549714c0e77f9bed3e74d42400fbe"}, | |
1553 | + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85aa3ab4b03d5e99fdd31660872249df5e855334b6c333e0bc13032ff4469c4a"}, | |
1554 | + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbf001afbbed111a79ca47d75941e9e5361297a87d186cbfc11ed45e30b5daba"}, | |
1555 | + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c89aa46c269e4e70c4d4f9d6bc644fcc39bb409cb2a81227923404dd6f5227"}, | |
1556 | + {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:39c1ec76ea1027438fafe16ecb0fb84795e62e9d643444c1090179e63808c69d"}, | |
1557 | + {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c2a0d47a89b48d7daa241e004e71fb5a50533718897a4cd6235cb846d511a478"}, | |
1558 | + {file = "tokenizers-0.19.1-cp39-none-win32.whl", hash = "sha256:61b7fe8886f2e104d4caf9218b157b106207e0f2a4905c9c7ac98890688aabeb"}, | |
1559 | + {file = "tokenizers-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:f97660f6c43efd3e0bfd3f2e3e5615bf215680bad6ee3d469df6454b8c6e8256"}, | |
1560 | + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b11853f17b54c2fe47742c56d8a33bf49ce31caf531e87ac0d7d13d327c9334"}, | |
1561 | + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d26194ef6c13302f446d39972aaa36a1dda6450bc8949f5eb4c27f51191375bd"}, | |
1562 | + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e8d1ed93beda54bbd6131a2cb363a576eac746d5c26ba5b7556bc6f964425594"}, | |
1563 | + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca407133536f19bdec44b3da117ef0d12e43f6d4b56ac4c765f37eca501c7bda"}, | |
1564 | + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce05fde79d2bc2e46ac08aacbc142bead21614d937aac950be88dc79f9db9022"}, | |
1565 | + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:35583cd46d16f07c054efd18b5d46af4a2f070a2dd0a47914e66f3ff5efb2b1e"}, | |
1566 | + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:43350270bfc16b06ad3f6f07eab21f089adb835544417afda0f83256a8bf8b75"}, | |
1567 | + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b4399b59d1af5645bcee2072a463318114c39b8547437a7c2d6a186a1b5a0e2d"}, | |
1568 | + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6852c5b2a853b8b0ddc5993cd4f33bfffdca4fcc5d52f89dd4b8eada99379285"}, | |
1569 | + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd266ae85c3d39df2f7e7d0e07f6c41a55e9a3123bb11f854412952deacd828"}, | |
1570 | + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecb2651956eea2aa0a2d099434134b1b68f1c31f9a5084d6d53f08ed43d45ff2"}, | |
1571 | + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b279ab506ec4445166ac476fb4d3cc383accde1ea152998509a94d82547c8e2a"}, | |
1572 | + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:89183e55fb86e61d848ff83753f64cded119f5d6e1f553d14ffee3700d0a4a49"}, | |
1573 | + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2edbc75744235eea94d595a8b70fe279dd42f3296f76d5a86dde1d46e35f574"}, | |
1574 | + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0e64bfde9a723274e9a71630c3e9494ed7b4c0f76a1faacf7fe294cd26f7ae7c"}, | |
1575 | + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b5ca92bfa717759c052e345770792d02d1f43b06f9e790ca0a1db62838816f3"}, | |
1576 | + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f8a20266e695ec9d7a946a019c1d5ca4eddb6613d4f466888eee04f16eedb85"}, | |
1577 | + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63c38f45d8f2a2ec0f3a20073cccb335b9f99f73b3c69483cd52ebc75369d8a1"}, | |
1578 | + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dd26e3afe8a7b61422df3176e06664503d3f5973b94f45d5c45987e1cb711876"}, | |
1579 | + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:eddd5783a4a6309ce23432353cdb36220e25cbb779bfa9122320666508b44b88"}, | |
1580 | + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:56ae39d4036b753994476a1b935584071093b55c7a72e3b8288e68c313ca26e7"}, | |
1581 | + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f9939ca7e58c2758c01b40324a59c034ce0cebad18e0d4563a9b1beab3018243"}, | |
1582 | + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c330c0eb815d212893c67a032e9dc1b38a803eccb32f3e8172c19cc69fbb439"}, | |
1583 | + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec11802450a2487cdf0e634b750a04cbdc1c4d066b97d94ce7dd2cb51ebb325b"}, | |
1584 | + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b718f316b596f36e1dae097a7d5b91fc5b85e90bf08b01ff139bd8953b25af"}, | |
1585 | + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ed69af290c2b65169f0ba9034d1dc39a5db9459b32f1dd8b5f3f32a3fcf06eab"}, | |
1586 | + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f8a9c828277133af13f3859d1b6bf1c3cb6e9e1637df0e45312e6b7c2e622b1f"}, | |
1587 | + {file = "tokenizers-0.19.1.tar.gz", hash = "sha256:ee59e6680ed0fdbe6b724cf38bd70400a0c1dd623b07ac729087270caeac88e3"}, | |
1588 | +] | |
1589 | + | |
1590 | +[package.dependencies] | |
1591 | +huggingface-hub = ">=0.16.4,<1.0" | |
1592 | + | |
1593 | +[package.extras] | |
1594 | +dev = ["tokenizers[testing]"] | |
1595 | +docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"] | |
1596 | +testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests", "ruff"] | |
1597 | + | |
1598 | +[[package]] | |
1599 | +name = "tqdm" | |
1600 | +version = "4.66.4" | |
1601 | +description = "Fast, Extensible Progress Meter" | |
1602 | +optional = false | |
1603 | +python-versions = ">=3.7" | |
1604 | +files = [ | |
1605 | + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, | |
1606 | + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, | |
1607 | +] | |
1608 | + | |
1609 | +[package.dependencies] | |
1610 | +colorama = {version = "*", markers = "platform_system == \"Windows\""} | |
1611 | + | |
1612 | +[package.extras] | |
1613 | +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] | |
1614 | +notebook = ["ipywidgets (>=6)"] | |
1615 | +slack = ["slack-sdk"] | |
1616 | +telegram = ["requests"] | |
1617 | + | |
1618 | +[[package]] | |
1619 | +name = "typer" | |
1620 | +version = "0.12.3" | |
1621 | +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." | |
1622 | +optional = false | |
1623 | +python-versions = ">=3.7" | |
1624 | +files = [ | |
1625 | + {file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"}, | |
1626 | + {file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"}, | |
1627 | +] | |
1628 | + | |
1629 | +[package.dependencies] | |
1630 | +click = ">=8.0.0" | |
1631 | +rich = ">=10.11.0" | |
1632 | +shellingham = ">=1.3.0" | |
1633 | +typing-extensions = ">=3.7.4.3" | |
1634 | + | |
1635 | +[[package]] | |
1636 | +name = "typing-extensions" | |
1637 | +version = "4.11.0" | |
1638 | +description = "Backported and Experimental Type Hints for Python 3.8+" | |
1639 | +optional = false | |
1640 | +python-versions = ">=3.8" | |
1641 | +files = [ | |
1642 | + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, | |
1643 | + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, | |
1644 | +] | |
1645 | + | |
1646 | +[[package]] | |
1647 | +name = "ujson" | |
1648 | +version = "5.10.0" | |
1649 | +description = "Ultra fast JSON encoder and decoder for Python" | |
1650 | +optional = false | |
1651 | +python-versions = ">=3.8" | |
1652 | +files = [ | |
1653 | + {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, | |
1654 | + {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, | |
1655 | + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, | |
1656 | + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, | |
1657 | + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, | |
1658 | + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, | |
1659 | + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, | |
1660 | + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, | |
1661 | + {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, | |
1662 | + {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, | |
1663 | + {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, | |
1664 | + {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, | |
1665 | + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, | |
1666 | + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, | |
1667 | + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, | |
1668 | + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, | |
1669 | + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, | |
1670 | + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, | |
1671 | + {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, | |
1672 | + {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, | |
1673 | + {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, | |
1674 | + {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, | |
1675 | + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, | |
1676 | + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, | |
1677 | + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, | |
1678 | + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, | |
1679 | + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, | |
1680 | + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, | |
1681 | + {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, | |
1682 | + {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, | |
1683 | + {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, | |
1684 | + {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, | |
1685 | + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, | |
1686 | + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, | |
1687 | + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, | |
1688 | + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, | |
1689 | + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, | |
1690 | + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, | |
1691 | + {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, | |
1692 | + {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, | |
1693 | + {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, | |
1694 | + {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, | |
1695 | + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, | |
1696 | + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, | |
1697 | + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, | |
1698 | + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, | |
1699 | + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, | |
1700 | + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, | |
1701 | + {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, | |
1702 | + {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, | |
1703 | + {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, | |
1704 | + {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, | |
1705 | + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, | |
1706 | + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, | |
1707 | + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, | |
1708 | + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, | |
1709 | + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, | |
1710 | + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, | |
1711 | + {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, | |
1712 | + {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, | |
1713 | + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, | |
1714 | + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, | |
1715 | + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, | |
1716 | + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, | |
1717 | + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, | |
1718 | + {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, | |
1719 | + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, | |
1720 | + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, | |
1721 | + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, | |
1722 | + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, | |
1723 | + {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, | |
1724 | + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, | |
1725 | + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, | |
1726 | + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, | |
1727 | + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, | |
1728 | + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, | |
1729 | + {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, | |
1730 | + {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, | |
1731 | +] | |
1732 | + | |
1733 | +[[package]] | |
1734 | +name = "urllib3" | |
1735 | +version = "2.2.1" | |
1736 | +description = "HTTP library with thread-safe connection pooling, file post, and more." | |
1737 | +optional = false | |
1738 | +python-versions = ">=3.8" | |
1739 | +files = [ | |
1740 | + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, | |
1741 | + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, | |
1742 | +] | |
1743 | + | |
1744 | +[package.extras] | |
1745 | +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] | |
1746 | +h2 = ["h2 (>=4,<5)"] | |
1747 | +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] | |
1748 | +zstd = ["zstandard (>=0.18.0)"] | |
1749 | + | |
1750 | +[[package]] | |
1751 | +name = "uvicorn" | |
1752 | +version = "0.29.0" | |
1753 | +description = "The lightning-fast ASGI server." | |
1754 | +optional = false | |
1755 | +python-versions = ">=3.8" | |
1756 | +files = [ | |
1757 | + {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, | |
1758 | + {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, | |
1759 | +] | |
1760 | + | |
1761 | +[package.dependencies] | |
1762 | +click = ">=7.0" | |
1763 | +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} | |
1764 | +h11 = ">=0.8" | |
1765 | +httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} | |
1766 | +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} | |
1767 | +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} | |
1768 | +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} | |
1769 | +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} | |
1770 | +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} | |
1771 | + | |
1772 | +[package.extras] | |
1773 | +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] | |
1774 | + | |
1775 | +[[package]] | |
1776 | +name = "uvloop" | |
1777 | +version = "0.19.0" | |
1778 | +description = "Fast implementation of asyncio event loop on top of libuv" | |
1779 | +optional = false | |
1780 | +python-versions = ">=3.8.0" | |
1781 | +files = [ | |
1782 | + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"}, | |
1783 | + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"}, | |
1784 | + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"}, | |
1785 | + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"}, | |
1786 | + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"}, | |
1787 | + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"}, | |
1788 | + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"}, | |
1789 | + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"}, | |
1790 | + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"}, | |
1791 | + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"}, | |
1792 | + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"}, | |
1793 | + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"}, | |
1794 | + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, | |
1795 | + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"}, | |
1796 | + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"}, | |
1797 | + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"}, | |
1798 | + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"}, | |
1799 | + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"}, | |
1800 | + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"}, | |
1801 | + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"}, | |
1802 | + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"}, | |
1803 | + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"}, | |
1804 | + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"}, | |
1805 | + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"}, | |
1806 | + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"}, | |
1807 | + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"}, | |
1808 | + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"}, | |
1809 | + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"}, | |
1810 | + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"}, | |
1811 | + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"}, | |
1812 | + {file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"}, | |
1813 | +] | |
1814 | + | |
1815 | +[package.extras] | |
1816 | +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] | |
1817 | +test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] | |
1818 | + | |
1819 | +[[package]] | |
1820 | +name = "watchfiles" | |
1821 | +version = "0.21.0" | |
1822 | +description = "Simple, modern and high performance file watching and code reload in python." | |
1823 | +optional = false | |
1824 | +python-versions = ">=3.8" | |
1825 | +files = [ | |
1826 | + {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"}, | |
1827 | + {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"}, | |
1828 | + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"}, | |
1829 | + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"}, | |
1830 | + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"}, | |
1831 | + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"}, | |
1832 | + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"}, | |
1833 | + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"}, | |
1834 | + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"}, | |
1835 | + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"}, | |
1836 | + {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"}, | |
1837 | + {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"}, | |
1838 | + {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"}, | |
1839 | + {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"}, | |
1840 | + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"}, | |
1841 | + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"}, | |
1842 | + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"}, | |
1843 | + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"}, | |
1844 | + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"}, | |
1845 | + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"}, | |
1846 | + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"}, | |
1847 | + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"}, | |
1848 | + {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"}, | |
1849 | + {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"}, | |
1850 | + {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"}, | |
1851 | + {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"}, | |
1852 | + {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"}, | |
1853 | + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"}, | |
1854 | + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"}, | |
1855 | + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"}, | |
1856 | + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"}, | |
1857 | + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"}, | |
1858 | + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"}, | |
1859 | + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"}, | |
1860 | + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"}, | |
1861 | + {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"}, | |
1862 | + {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"}, | |
1863 | + {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"}, | |
1864 | + {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"}, | |
1865 | + {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"}, | |
1866 | + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"}, | |
1867 | + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"}, | |
1868 | + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"}, | |
1869 | + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"}, | |
1870 | + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"}, | |
1871 | + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"}, | |
1872 | + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"}, | |
1873 | + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"}, | |
1874 | + {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"}, | |
1875 | + {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"}, | |
1876 | + {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"}, | |
1877 | + {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"}, | |
1878 | + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"}, | |
1879 | + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"}, | |
1880 | + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"}, | |
1881 | + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"}, | |
1882 | + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"}, | |
1883 | + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"}, | |
1884 | + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"}, | |
1885 | + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"}, | |
1886 | + {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"}, | |
1887 | + {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"}, | |
1888 | + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"}, | |
1889 | + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"}, | |
1890 | + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"}, | |
1891 | + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"}, | |
1892 | + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"}, | |
1893 | + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"}, | |
1894 | + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"}, | |
1895 | + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"}, | |
1896 | + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"}, | |
1897 | + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"}, | |
1898 | + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"}, | |
1899 | + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"}, | |
1900 | + {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"}, | |
1901 | +] | |
1902 | + | |
1903 | +[package.dependencies] | |
1904 | +anyio = ">=3.0.0" | |
1905 | + | |
1906 | +[[package]] | |
1907 | +name = "websockets" | |
1908 | +version = "12.0" | |
1909 | +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" | |
1910 | +optional = false | |
1911 | +python-versions = ">=3.8" | |
1912 | +files = [ | |
1913 | + {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, | |
1914 | + {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, | |
1915 | + {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, | |
1916 | + {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, | |
1917 | + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, | |
1918 | + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, | |
1919 | + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, | |
1920 | + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, | |
1921 | + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, | |
1922 | + {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, | |
1923 | + {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, | |
1924 | + {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, | |
1925 | + {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, | |
1926 | + {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, | |
1927 | + {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, | |
1928 | + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, | |
1929 | + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, | |
1930 | + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, | |
1931 | + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, | |
1932 | + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, | |
1933 | + {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, | |
1934 | + {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, | |
1935 | + {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, | |
1936 | + {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, | |
1937 | + {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, | |
1938 | + {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, | |
1939 | + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, | |
1940 | + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, | |
1941 | + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, | |
1942 | + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, | |
1943 | + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, | |
1944 | + {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, | |
1945 | + {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, | |
1946 | + {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, | |
1947 | + {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, | |
1948 | + {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, | |
1949 | + {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, | |
1950 | + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, | |
1951 | + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, | |
1952 | + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, | |
1953 | + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, | |
1954 | + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, | |
1955 | + {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, | |
1956 | + {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, | |
1957 | + {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, | |
1958 | + {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, | |
1959 | + {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, | |
1960 | + {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, | |
1961 | + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, | |
1962 | + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, | |
1963 | + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, | |
1964 | + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, | |
1965 | + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, | |
1966 | + {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, | |
1967 | + {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, | |
1968 | + {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, | |
1969 | + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, | |
1970 | + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, | |
1971 | + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, | |
1972 | + {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, | |
1973 | + {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, | |
1974 | + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, | |
1975 | + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, | |
1976 | + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, | |
1977 | + {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, | |
1978 | + {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, | |
1979 | + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, | |
1980 | + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, | |
1981 | + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, | |
1982 | + {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, | |
1983 | + {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, | |
1984 | + {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, | |
1985 | +] | |
1986 | + | |
1987 | +[[package]] | |
1988 | +name = "wsproto" | |
1989 | +version = "1.2.0" | |
1990 | +description = "WebSockets state-machine based protocol implementation" | |
1991 | +optional = false | |
1992 | +python-versions = ">=3.7.0" | |
1993 | +files = [ | |
1994 | + {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"}, | |
1995 | + {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"}, | |
1996 | +] | |
1997 | + | |
1998 | +[package.dependencies] | |
1999 | +h11 = ">=0.9.0,<1" | |
2000 | + | |
2001 | +[metadata] | |
2002 | +lock-version = "2.0" | |
2003 | +python-versions = "^3.11" | |
2004 | +content-hash = "e0b51f82f9a518d33787c9f36f5ba0dca05fb34b74c340312480a477d2da6f5d" |
+++ pyproject.toml
... | ... | @@ -0,0 +1,32 @@ |
1 | +[tool.poetry] | |
2 | +package-mode = false | |
3 | + | |
4 | +[tool.poetry.dependencies] | |
5 | +python = "^3.11" | |
6 | +faster-whisper = "^1.0.2" | |
7 | +pydantic = "^2.7.1" | |
8 | +fastapi = "^0.111.0" | |
9 | +uvicorn = "^0.29.0" | |
10 | +python-multipart = "^0.0.9" | |
11 | +soundfile = "^0.12.1" | |
12 | +pydantic-settings = "^2.2.1" | |
13 | +websockets = "^12.0" | |
14 | +numpy = "^1.26.4" | |
15 | + | |
16 | + | |
17 | +[tool.poetry.group.dev.dependencies] | |
18 | +pytest = "^8.2.0" | |
19 | +pytest-asyncio = "^0.23.6" | |
20 | +httpx = "^0.27.0" | |
21 | +httpx-ws = "^0.6.0" | |
22 | +pytest-xdist = "^3.6.1" | |
23 | + | |
24 | + | |
25 | + | |
26 | +[tool.poetry.group.client.dependencies] | |
27 | +httpx = "^0.27.0" | |
28 | +httpx-ws = "^0.6.0" | |
29 | + | |
30 | +[build-system] | |
31 | +requires = ["poetry-core"] | |
32 | +build-backend = "poetry.core.masonry.api" |
+++ speaches/__init__.py
... | ... | @@ -0,0 +1,0 @@ |
+++ speaches/asr.py
... | ... | @@ -0,0 +1,80 @@ |
1 | +import asyncio | |
2 | +import time | |
3 | +from typing import Iterable | |
4 | + | |
5 | +from faster_whisper import transcribe | |
6 | +from pydantic import BaseModel | |
7 | + | |
8 | +from speaches.audio import Audio | |
9 | +from speaches.config import Language | |
10 | +from speaches.core import Transcription, Word | |
11 | +from speaches.logger import logger | |
12 | + | |
13 | + | |
14 | +class TranscribeOpts(BaseModel): | |
15 | + language: Language | None | |
16 | + vad_filter: bool | |
17 | + condition_on_previous_text: bool | |
18 | + | |
19 | + | |
20 | +class FasterWhisperASR: | |
21 | + def __init__( | |
22 | + self, | |
23 | + whisper: transcribe.WhisperModel, | |
24 | + transcribe_opts: TranscribeOpts, | |
25 | + ) -> None: | |
26 | + self.whisper = whisper | |
27 | + self.transcribe_opts = transcribe_opts | |
28 | + | |
29 | + def _transcribe( | |
30 | + self, | |
31 | + audio: Audio, | |
32 | + prompt: str | None = None, | |
33 | + ) -> tuple[Transcription, transcribe.TranscriptionInfo]: | |
34 | + start = time.perf_counter() | |
35 | + segments, transcription_info = self.whisper.transcribe( | |
36 | + audio.data, | |
37 | + initial_prompt=prompt, | |
38 | + word_timestamps=True, | |
39 | + **self.transcribe_opts.model_dump(), | |
40 | + ) | |
41 | + words = words_from_whisper_segments(segments) | |
42 | + for word in words: | |
43 | + word.offset(audio.start) | |
44 | + transcription = Transcription(words) | |
45 | + end = time.perf_counter() | |
46 | + logger.info( | |
47 | + f"Transcribed {audio} in {end - start:.2f} seconds. Prompt: {prompt}. Transcription: {transcription.text}" | |
48 | + ) | |
49 | + return (transcription, transcription_info) | |
50 | + | |
51 | + async def transcribe( | |
52 | + self, | |
53 | + audio: Audio, | |
54 | + prompt: str | None = None, | |
55 | + ) -> tuple[Transcription, transcribe.TranscriptionInfo]: | |
56 | + """Wrapper around _transcribe so it can be used in async context""" | |
57 | + # is this the optimal way to execute a blocking call in an async context? | |
58 | + # TODO: verify performance when running inference on a CPU | |
59 | + return await asyncio.get_running_loop().run_in_executor( | |
60 | + None, | |
61 | + self._transcribe, | |
62 | + audio, | |
63 | + prompt, | |
64 | + ) | |
65 | + | |
66 | + | |
67 | +def words_from_whisper_segments(segments: Iterable[transcribe.Segment]) -> list[Word]: | |
68 | + words: list[Word] = [] | |
69 | + for segment in segments: | |
70 | + assert segment.words is not None | |
71 | + words.extend( | |
72 | + Word( | |
73 | + start=word.start, | |
74 | + end=word.end, | |
75 | + text=word.word, | |
76 | + probability=word.probability, | |
77 | + ) | |
78 | + for word in segment.words | |
79 | + ) | |
80 | + return words |
+++ speaches/audio.py
... | ... | @@ -0,0 +1,96 @@ |
1 | +from __future__ import annotations | |
2 | + | |
3 | +import asyncio | |
4 | +from typing import AsyncGenerator, BinaryIO | |
5 | + | |
6 | +import numpy as np | |
7 | +import soundfile as sf | |
8 | +from numpy.typing import NDArray | |
9 | + | |
10 | +from speaches.config import SAMPLES_PER_SECOND | |
11 | +from speaches.logger import logger | |
12 | + | |
13 | + | |
14 | +def audio_samples_from_file(file: BinaryIO) -> NDArray[np.float32]: | |
15 | + audio_and_sample_rate: tuple[NDArray[np.float32], Any] = sf.read( # type: ignore | |
16 | + file, | |
17 | + format="RAW", | |
18 | + channels=1, | |
19 | + samplerate=SAMPLES_PER_SECOND, | |
20 | + subtype="PCM_16", | |
21 | + dtype="float32", | |
22 | + endian="LITTLE", | |
23 | + ) | |
24 | + audio = audio_and_sample_rate[0] | |
25 | + return audio | |
26 | + | |
27 | + | |
28 | +class Audio: | |
29 | + def __init__( | |
30 | + self, | |
31 | + data: NDArray[np.float32] = np.array([], dtype=np.float32), | |
32 | + start: float = 0.0, | |
33 | + ) -> None: | |
34 | + self.data = data | |
35 | + self.start = start | |
36 | + | |
37 | + def __repr__(self) -> str: | |
38 | + return f"Audio(start={self.start:.2f}, end={self.end:.2f})" | |
39 | + | |
40 | + @property | |
41 | + def end(self) -> float: | |
42 | + return self.start + self.duration | |
43 | + | |
44 | + @property | |
45 | + def duration(self) -> float: | |
46 | + return len(self.data) / SAMPLES_PER_SECOND | |
47 | + | |
48 | + def after(self, ts: float) -> Audio: | |
49 | + assert ts <= self.duration | |
50 | + return Audio(self.data[int(ts * SAMPLES_PER_SECOND) :], start=ts) | |
51 | + | |
52 | + def extend(self, data: NDArray[np.float32]) -> None: | |
53 | + # logger.debug(f"Extending audio by {len(data) / SAMPLES_PER_SECOND:.2f}s") | |
54 | + self.data = np.append(self.data, data) | |
55 | + # logger.debug(f"Audio duration: {self.duration:.2f}s") | |
56 | + | |
57 | + | |
58 | +# TODO: trim data longer than x | |
59 | +class AudioStream(Audio): | |
60 | + def __init__( | |
61 | + self, | |
62 | + data: NDArray[np.float32] = np.array([], dtype=np.float32), | |
63 | + start: float = 0.0, | |
64 | + ) -> None: | |
65 | + super().__init__(data, start) | |
66 | + self.closed = False | |
67 | + | |
68 | + self.modify_event = asyncio.Event() | |
69 | + | |
70 | + def extend(self, data: NDArray[np.float32]) -> None: | |
71 | + assert self.closed == False | |
72 | + super().extend(data) | |
73 | + self.modify_event.set() | |
74 | + | |
75 | + def close(self) -> None: | |
76 | + assert self.closed == False | |
77 | + self.closed = True | |
78 | + self.modify_event.set() | |
79 | + logger.info("AudioStream closed") | |
80 | + | |
81 | + async def chunks( | |
82 | + self, min_duration: float | |
83 | + ) -> AsyncGenerator[NDArray[np.float32], None]: | |
84 | + i = 0.0 # end time of last chunk | |
85 | + while True: | |
86 | + await self.modify_event.wait() | |
87 | + self.modify_event.clear() | |
88 | + if self.closed or self.duration - i >= min_duration: | |
89 | + # If `i` shouldn't be set to `duration` after the yield | |
90 | + # because by the time assignment would happen more data might have been added | |
91 | + i_ = i | |
92 | + i = self.duration | |
93 | + # NOTE: probably better to just to a slice | |
94 | + yield self.after(i_).data | |
95 | + if self.closed: | |
96 | + return |
+++ speaches/client.py
... | ... | @@ -0,0 +1,94 @@ |
1 | +# TODO: move out of `speaches` package | |
2 | +import asyncio | |
3 | +import signal | |
4 | + | |
5 | +import httpx | |
6 | +from httpx_ws import AsyncWebSocketSession, WebSocketDisconnect, aconnect_ws | |
7 | +from wsproto.connection import ConnectionState | |
8 | + | |
9 | +CHUNK = 1024 * 4 | |
10 | +AUDIO_RECORD_CMD = "arecord -D default -f S16_LE -r 16000 -c 1 -t raw" | |
11 | +COPY_TO_CLIPBOARD_CMD = "wl-copy" | |
12 | +NOTIFY_CMD = "notify-desktop" | |
13 | + | |
14 | +client = httpx.AsyncClient(base_url="ws://localhost:8000") | |
15 | + | |
16 | + | |
17 | +async def audio_sender(ws: AsyncWebSocketSession) -> None: | |
18 | + process = await asyncio.create_subprocess_shell( | |
19 | + AUDIO_RECORD_CMD, | |
20 | + stdout=asyncio.subprocess.PIPE, | |
21 | + stderr=asyncio.subprocess.DEVNULL, | |
22 | + ) | |
23 | + assert process.stdout is not None | |
24 | + try: | |
25 | + while not process.stdout.at_eof(): | |
26 | + data = await process.stdout.read(CHUNK) | |
27 | + if ws.connection.state != ConnectionState.OPEN: | |
28 | + break | |
29 | + await ws.send_bytes(data) | |
30 | + except Exception as e: | |
31 | + print(e) | |
32 | + finally: | |
33 | + process.kill() | |
34 | + | |
35 | + | |
36 | +async def transcription_receiver(ws: AsyncWebSocketSession) -> None: | |
37 | + transcription = "" | |
38 | + notification_id: int | None = None | |
39 | + try: | |
40 | + while True: | |
41 | + data = await ws.receive_text() | |
42 | + if not data: | |
43 | + break | |
44 | + transcription += data | |
45 | + await copy_to_clipboard(transcription) | |
46 | + notification_id = await notify(transcription, replaces_id=notification_id) | |
47 | + except WebSocketDisconnect: | |
48 | + pass | |
49 | + print(transcription) | |
50 | + | |
51 | + | |
52 | +async def copy_to_clipboard(text: str) -> None: | |
53 | + process = await asyncio.create_subprocess_shell( | |
54 | + COPY_TO_CLIPBOARD_CMD, stdin=asyncio.subprocess.PIPE | |
55 | + ) | |
56 | + await process.communicate(input=text.encode("utf-8")) | |
57 | + await process.wait() | |
58 | + | |
59 | + | |
60 | +async def notify(text: str, replaces_id: int | None = None) -> int: | |
61 | + cmd = ["notify-desktop", "--app-name", "Speaches"] | |
62 | + if replaces_id is not None: | |
63 | + cmd.extend(["--replaces-id", str(replaces_id)]) | |
64 | + cmd.append("'Speaches'") | |
65 | + cmd.append(f"'{text}'") | |
66 | + process = await asyncio.create_subprocess_shell( | |
67 | + " ".join(cmd), | |
68 | + stdout=asyncio.subprocess.PIPE, | |
69 | + ) | |
70 | + await process.wait() | |
71 | + assert process.stdout is not None | |
72 | + notification_id = (await process.stdout.read()).decode("utf-8") | |
73 | + return int(notification_id) | |
74 | + | |
75 | + | |
76 | +async def main() -> None: | |
77 | + async with aconnect_ws("/v1/audio/transcriptions", client) as ws: | |
78 | + async with asyncio.TaskGroup() as tg: | |
79 | + sender_task = tg.create_task(audio_sender(ws)) | |
80 | + receiver_task = tg.create_task(transcription_receiver(ws)) | |
81 | + | |
82 | + async def on_interrupt(): | |
83 | + sender_task.cancel() | |
84 | + receiver_task.cancel() | |
85 | + await asyncio.gather(sender_task, receiver_task) | |
86 | + | |
87 | + asyncio.get_running_loop().add_signal_handler( | |
88 | + signal.SIGINT, | |
89 | + lambda: asyncio.create_task(on_interrupt()), | |
90 | + ) | |
91 | + | |
92 | + | |
93 | +asyncio.run(main()) | |
94 | +# poetry --directory /home/nixos/code/speaches run python /home/nixos/code/speaches/speaches/client.py |
+++ speaches/config.py
... | ... | @@ -0,0 +1,176 @@ |
1 | +import enum | |
2 | + | |
3 | +from pydantic import BaseModel, Field | |
4 | +from pydantic_settings import BaseSettings, SettingsConfigDict | |
5 | + | |
6 | +SAMPLES_PER_SECOND = 16000 | |
7 | +BYTES_PER_SAMPLE = 2 | |
8 | +BYTES_PER_SECOND = SAMPLES_PER_SECOND * BYTES_PER_SAMPLE | |
9 | +# 2 BYTES = 16 BITS = 1 SAMPLE | |
10 | +# 1 SECOND OF AUDIO = 32000 BYTES = 16000 SAMPLES | |
11 | + | |
12 | + | |
13 | +# TODO: confirm names | |
14 | +class Model(enum.StrEnum): | |
15 | + TINY_EN = "tiny.en" | |
16 | + TINY = "tiny" | |
17 | + BASE_EN = "base.en" | |
18 | + BASE = "base" | |
19 | + SMALL_EN = "small.en" | |
20 | + SMALL = "small" | |
21 | + MEDIUM_EN = "medium.en" | |
22 | + MEDIUM = "medium" | |
23 | + LARGE = "large" | |
24 | + LARGE_V1 = "large-v1" | |
25 | + LARGE_V2 = "large-v2" | |
26 | + LARGE_V3 = "large-v3" | |
27 | + DISTIL_SMALL_EN = "distil-small.en" | |
28 | + DISTIL_MEDIUM_EN = "distil-medium.en" | |
29 | + DISTIL_LARGE_V2 = "distil-large-v2" | |
30 | + DISTIL_LARGE_V3 = "distil-large-v3" | |
31 | + | |
32 | + | |
33 | +class Device(enum.StrEnum): | |
34 | + CPU = "cpu" | |
35 | + CUDA = "cuda" | |
36 | + AUTO = "auto" | |
37 | + | |
38 | + | |
39 | +# https://github.com/OpenNMT/CTranslate2/blob/master/docs/quantization.md | |
40 | +class Quantization(enum.StrEnum): | |
41 | + INT8 = "int8" | |
42 | + INT8_FLOAT16 = "int8_float16" | |
43 | + INT8_BFLOAT16 = "int8_bfloat16" | |
44 | + INT8_FLOAT32 = "int8_float32" | |
45 | + INT16 = "int16" | |
46 | + FLOAT16 = "float16" | |
47 | + BFLOAT16 = "bfloat16" | |
48 | + FLOAT32 = "float32" | |
49 | + DEFAULT = "default" | |
50 | + | |
51 | + | |
52 | +class Language(enum.StrEnum): | |
53 | + AF = "af" | |
54 | + AM = "am" | |
55 | + AR = "ar" | |
56 | + AS = "as" | |
57 | + AZ = "az" | |
58 | + BA = "ba" | |
59 | + BE = "be" | |
60 | + BG = "bg" | |
61 | + BN = "bn" | |
62 | + BO = "bo" | |
63 | + BR = "br" | |
64 | + BS = "bs" | |
65 | + CA = "ca" | |
66 | + CS = "cs" | |
67 | + CY = "cy" | |
68 | + DA = "da" | |
69 | + DE = "de" | |
70 | + EL = "el" | |
71 | + EN = "en" | |
72 | + ES = "es" | |
73 | + ET = "et" | |
74 | + EU = "eu" | |
75 | + FA = "fa" | |
76 | + FI = "fi" | |
77 | + FO = "fo" | |
78 | + FR = "fr" | |
79 | + GL = "gl" | |
80 | + GU = "gu" | |
81 | + HA = "ha" | |
82 | + HAW = "haw" | |
83 | + HE = "he" | |
84 | + HI = "hi" | |
85 | + HR = "hr" | |
86 | + HT = "ht" | |
87 | + HU = "hu" | |
88 | + HY = "hy" | |
89 | + ID = "id" | |
90 | + IS = "is" | |
91 | + IT = "it" | |
92 | + JA = "ja" | |
93 | + JW = "jw" | |
94 | + KA = "ka" | |
95 | + KK = "kk" | |
96 | + KM = "km" | |
97 | + KN = "kn" | |
98 | + KO = "ko" | |
99 | + LA = "la" | |
100 | + LB = "lb" | |
101 | + LN = "ln" | |
102 | + LO = "lo" | |
103 | + LT = "lt" | |
104 | + LV = "lv" | |
105 | + MG = "mg" | |
106 | + MI = "mi" | |
107 | + MK = "mk" | |
108 | + ML = "ml" | |
109 | + MN = "mn" | |
110 | + MR = "mr" | |
111 | + MS = "ms" | |
112 | + MT = "mt" | |
113 | + MY = "my" | |
114 | + NE = "ne" | |
115 | + NL = "nl" | |
116 | + NN = "nn" | |
117 | + NO = "no" | |
118 | + OC = "oc" | |
119 | + PA = "pa" | |
120 | + PL = "pl" | |
121 | + PS = "ps" | |
122 | + PT = "pt" | |
123 | + RO = "ro" | |
124 | + RU = "ru" | |
125 | + SA = "sa" | |
126 | + SD = "sd" | |
127 | + SI = "si" | |
128 | + SK = "sk" | |
129 | + SL = "sl" | |
130 | + SN = "sn" | |
131 | + SO = "so" | |
132 | + SQ = "sq" | |
133 | + SR = "sr" | |
134 | + SU = "su" | |
135 | + SV = "sv" | |
136 | + SW = "sw" | |
137 | + TA = "ta" | |
138 | + TE = "te" | |
139 | + TG = "tg" | |
140 | + TH = "th" | |
141 | + TK = "tk" | |
142 | + TL = "tl" | |
143 | + TR = "tr" | |
144 | + TT = "tt" | |
145 | + UK = "uk" | |
146 | + UR = "ur" | |
147 | + UZ = "uz" | |
148 | + VI = "vi" | |
149 | + YI = "yi" | |
150 | + YO = "yo" | |
151 | + YUE = "yue" | |
152 | + ZH = "zh" | |
153 | + | |
154 | + | |
155 | +class WhisperConfig(BaseModel): | |
156 | + model: Model = Field(default=Model.DISTIL_SMALL_EN) | |
157 | + inference_device: Device = Field(default=Device.AUTO) | |
158 | + compute_type: Quantization = Field(default=Quantization.DEFAULT) | |
159 | + | |
160 | + | |
161 | +class Config(BaseSettings): | |
162 | + model_config = SettingsConfigDict(env_nested_delimiter="_") | |
163 | + | |
164 | + log_level: str = "info" | |
165 | + whisper: WhisperConfig = WhisperConfig() | |
166 | + """ | |
167 | + Max duration to for the next audio chunk before finilizing the transcription and closing the connection. | |
168 | + """ | |
169 | + max_no_data_seconds: float = 1.0 | |
170 | + min_duration: float = 1.0 | |
171 | + word_timestamp_error_margin: float = 0.2 | |
172 | + inactivity_window_seconds: float = 3.0 | |
173 | + max_inactivity_seconds: float = 1.5 | |
174 | + | |
175 | + | |
176 | +config = Config() |
+++ speaches/core.py
... | ... | @@ -0,0 +1,207 @@ |
1 | +# TODO: rename module | |
2 | +from __future__ import annotations | |
3 | + | |
4 | +import re | |
5 | +from dataclasses import dataclass | |
6 | + | |
7 | +from speaches.config import config | |
8 | + | |
9 | + | |
10 | +# TODO: use the `Segment` from `faster-whisper.transcribe` instead | |
11 | +@dataclass | |
12 | +class Segment: | |
13 | + text: str | |
14 | + start: float = 0.0 | |
15 | + end: float = 0.0 | |
16 | + | |
17 | + @property | |
18 | + def is_eos(self) -> bool: | |
19 | + if self.text.endswith("..."): | |
20 | + return False | |
21 | + for punctuation_symbol in ".?!": | |
22 | + if self.text.endswith(punctuation_symbol): | |
23 | + return True | |
24 | + return False | |
25 | + | |
26 | + def offset(self, seconds: float) -> None: | |
27 | + self.start += seconds | |
28 | + self.end += seconds | |
29 | + | |
30 | + | |
31 | +# TODO: use the `Word` from `faster-whisper.transcribe` instead | |
32 | +@dataclass | |
33 | +class Word(Segment): | |
34 | + probability: float = 0.0 | |
35 | + | |
36 | + @classmethod | |
37 | + def common_prefix(cls, a: list[Word], b: list[Word]) -> list[Word]: | |
38 | + i = 0 | |
39 | + while ( | |
40 | + i < len(a) | |
41 | + and i < len(b) | |
42 | + and canonicalize_word(a[i].text) == canonicalize_word(b[i].text) | |
43 | + ): | |
44 | + i += 1 | |
45 | + return a[:i] | |
46 | + | |
47 | + | |
48 | +class Transcription: | |
49 | + def __init__(self, words: list[Word] = []) -> None: | |
50 | + self.words: list[Word] = [] | |
51 | + self.extend(words) | |
52 | + | |
53 | + @property | |
54 | + def text(self) -> str: | |
55 | + return " ".join(word.text for word in self.words).strip() | |
56 | + | |
57 | + @property | |
58 | + def start(self) -> float: | |
59 | + return self.words[0].start if len(self.words) > 0 else 0.0 | |
60 | + | |
61 | + @property | |
62 | + def end(self) -> float: | |
63 | + return self.words[-1].end if len(self.words) > 0 else 0.0 | |
64 | + | |
65 | + @property | |
66 | + def duration(self) -> float: | |
67 | + return self.end - self.start | |
68 | + | |
69 | + def after(self, seconds: float) -> Transcription: | |
70 | + return Transcription( | |
71 | + words=[word for word in self.words if word.start > seconds] | |
72 | + ) | |
73 | + | |
74 | + def extend(self, words: list[Word]) -> None: | |
75 | + self._ensure_no_word_overlap(words) | |
76 | + self.words.extend(words) | |
77 | + | |
78 | + def _ensure_no_word_overlap(self, words: list[Word]) -> None: | |
79 | + if len(self.words) > 0 and len(words) > 0: | |
80 | + if ( | |
81 | + words[0].start + config.word_timestamp_error_margin | |
82 | + <= self.words[-1].end | |
83 | + ): | |
84 | + raise ValueError( | |
85 | + f"Words overlap: {self.words[-1]} and {words[0]}. Error margin: {config.word_timestamp_error_margin}" | |
86 | + ) | |
87 | + for i in range(1, len(words)): | |
88 | + if words[i].start + config.word_timestamp_error_margin <= words[i - 1].end: | |
89 | + raise ValueError( | |
90 | + f"Words overlap: {words[i - 1]} and {words[i]}. All words: {words}" | |
91 | + ) | |
92 | + | |
93 | + | |
94 | +def test_segment_is_eos(): | |
95 | + assert Segment("Hello").is_eos == False | |
96 | + assert Segment("Hello...").is_eos == False | |
97 | + assert Segment("Hello.").is_eos == True | |
98 | + assert Segment("Hello!").is_eos == True | |
99 | + assert Segment("Hello?").is_eos == True | |
100 | + assert Segment("Hello. Yo").is_eos == False | |
101 | + assert Segment("Hello. Yo...").is_eos == False | |
102 | + assert Segment("Hello. Yo.").is_eos == True | |
103 | + | |
104 | + | |
105 | +def to_full_sentences(words: list[Word]) -> list[Segment]: | |
106 | + sentences: list[Segment] = [Segment("")] | |
107 | + for word in words: | |
108 | + sentences[-1] = Segment( | |
109 | + start=sentences[-1].start, | |
110 | + end=word.end, | |
111 | + text=sentences[-1].text + word.text, | |
112 | + ) | |
113 | + if word.is_eos: | |
114 | + sentences.append(Segment("")) | |
115 | + if len(sentences) > 0 and not sentences[-1].is_eos: | |
116 | + sentences.pop() | |
117 | + return sentences | |
118 | + | |
119 | + | |
120 | +def tests_to_full_sentences(): | |
121 | + assert to_full_sentences([]) == [] | |
122 | + assert to_full_sentences([Word(text="Hello")]) == [] | |
123 | + assert to_full_sentences([Word(text="Hello..."), Word(" world")]) == [] | |
124 | + assert to_full_sentences([Word(text="Hello..."), Word(" world.")]) == [ | |
125 | + Segment(text="Hello... world.") | |
126 | + ] | |
127 | + assert to_full_sentences( | |
128 | + [Word(text="Hello..."), Word(" world."), Word(" How")] | |
129 | + ) == [Segment(text="Hello... world.")] | |
130 | + | |
131 | + | |
132 | +def to_text(words: list[Word]) -> str: | |
133 | + return "".join(word.text for word in words) | |
134 | + | |
135 | + | |
136 | +def to_text_w_ts(words: list[Word]) -> str: | |
137 | + return "".join(f"{word.text}({word.start:.2f}-{word.end:.2f})" for word in words) | |
138 | + | |
139 | + | |
140 | +def canonicalize_word(text: str) -> str: | |
141 | + text = text.lower() | |
142 | + # Remove non-alphabetic characters using regular expression | |
143 | + text = re.sub(r"[^a-z]", "", text) | |
144 | + return text.lower().strip().strip(".,?!") | |
145 | + | |
146 | + | |
147 | +def test_canonicalize_word(): | |
148 | + assert canonicalize_word("ABC") == "abc" | |
149 | + assert canonicalize_word("...ABC?") == "abc" | |
150 | + assert canonicalize_word("... AbC ...") == "abc" | |
151 | + | |
152 | + | |
153 | +def common_prefix(a: list[Word], b: list[Word]) -> list[Word]: | |
154 | + i = 0 | |
155 | + while ( | |
156 | + i < len(a) | |
157 | + and i < len(b) | |
158 | + and canonicalize_word(a[i].text) == canonicalize_word(b[i].text) | |
159 | + ): | |
160 | + i += 1 | |
161 | + return a[:i] | |
162 | + | |
163 | + | |
164 | +def test_common_prefix(): | |
165 | + def word(text: str) -> Word: | |
166 | + return Word(text=text, start=0.0, end=0.0, probability=0.0) | |
167 | + | |
168 | + a = [word("a"), word("b"), word("c")] | |
169 | + b = [word("a"), word("b"), word("c")] | |
170 | + assert common_prefix(a, b) == [word("a"), word("b"), word("c")] | |
171 | + | |
172 | + a = [word("a"), word("b"), word("c")] | |
173 | + b = [word("a"), word("b"), word("d")] | |
174 | + assert common_prefix(a, b) == [word("a"), word("b")] | |
175 | + | |
176 | + a = [word("a"), word("b"), word("c")] | |
177 | + b = [word("a")] | |
178 | + assert common_prefix(a, b) == [word("a")] | |
179 | + | |
180 | + a = [word("a")] | |
181 | + b = [word("a"), word("b"), word("c")] | |
182 | + assert common_prefix(a, b) == [word("a")] | |
183 | + | |
184 | + a = [word("a")] | |
185 | + b = [] | |
186 | + assert common_prefix(a, b) == [] | |
187 | + | |
188 | + a = [] | |
189 | + b = [word("a")] | |
190 | + assert common_prefix(a, b) == [] | |
191 | + | |
192 | + a = [word("a"), word("b"), word("c")] | |
193 | + b = [word("b"), word("c")] | |
194 | + assert common_prefix(a, b) == [] | |
195 | + | |
196 | + | |
197 | +def test_common_prefix_and_canonicalization(): | |
198 | + def word(text: str) -> Word: | |
199 | + return Word(text=text, start=0.0, end=0.0, probability=0.0) | |
200 | + | |
201 | + a = [word("A...")] | |
202 | + b = [word("a?"), word("b"), word("c")] | |
203 | + assert common_prefix(a, b) == [word("A...")] | |
204 | + | |
205 | + a = [word("A..."), word("B?"), word("C,")] | |
206 | + b = [word("a??"), word(" b"), word(" ,c")] | |
207 | + assert common_prefix(a, b) == [word("A..."), word("B?"), word("C,")] |
+++ speaches/logger.py
... | ... | @@ -0,0 +1,13 @@ |
1 | +import logging | |
2 | + | |
3 | +from speaches.config import config | |
4 | + | |
5 | +# Disables all but `speaches` logger | |
6 | + | |
7 | +root_logger = logging.getLogger() | |
8 | +root_logger.setLevel(logging.CRITICAL) | |
9 | +logger = logging.getLogger(__name__) | |
10 | +logger.setLevel(config.log_level.upper()) | |
11 | +logging.basicConfig( | |
12 | + format="%(asctime)s:%(levelname)s:%(name)s:%(funcName)s:%(message)s" | |
13 | +) |
+++ speaches/main.py
... | ... | @@ -0,0 +1,162 @@ |
1 | +from __future__ import annotations | |
2 | + | |
3 | +import asyncio | |
4 | +import logging | |
5 | +import time | |
6 | +from contextlib import asynccontextmanager | |
7 | +from io import BytesIO | |
8 | +from typing import Annotated | |
9 | + | |
10 | +from fastapi import ( | |
11 | + Depends, | |
12 | + FastAPI, | |
13 | + Response, | |
14 | + UploadFile, | |
15 | + WebSocket, | |
16 | + WebSocketDisconnect, | |
17 | +) | |
18 | +from fastapi.websockets import WebSocketState | |
19 | +from faster_whisper import WhisperModel | |
20 | +from faster_whisper.vad import VadOptions, get_speech_timestamps | |
21 | + | |
22 | +from speaches.asr import FasterWhisperASR, TranscribeOpts | |
23 | +from speaches.audio import AudioStream, audio_samples_from_file | |
24 | +from speaches.config import SAMPLES_PER_SECOND, Language, config | |
25 | +from speaches.core import Transcription | |
26 | +from speaches.logger import logger | |
27 | +from speaches.server_models import ( | |
28 | + ResponseFormat, | |
29 | + TranscriptionResponse, | |
30 | + TranscriptionVerboseResponse, | |
31 | +) | |
32 | +from speaches.transcriber import audio_transcriber | |
33 | + | |
34 | +whisper: WhisperModel = None # type: ignore | |
35 | + | |
36 | + | |
37 | +@asynccontextmanager | |
38 | +async def lifespan(_: FastAPI): | |
39 | + global whisper | |
40 | + logging.debug(f"Loading {config.whisper.model}") | |
41 | + start = time.perf_counter() | |
42 | + whisper = WhisperModel( | |
43 | + config.whisper.model, | |
44 | + device=config.whisper.inference_device, | |
45 | + compute_type=config.whisper.compute_type, | |
46 | + ) | |
47 | + end = time.perf_counter() | |
48 | + logger.debug(f"Loaded {config.whisper.model} loaded in {end - start:.2f} seconds") | |
49 | + yield | |
50 | + | |
51 | + | |
52 | +app = FastAPI(lifespan=lifespan) | |
53 | + | |
54 | + | |
55 | +@app.get("/health") | |
56 | +def health() -> Response: | |
57 | + return Response(status_code=200, content="Everything is peachy!") | |
58 | + | |
59 | + | |
60 | +async def transcription_parameters( | |
61 | + language: Language = Language.EN, | |
62 | + vad_filter: bool = True, | |
63 | + condition_on_previous_text: bool = False, | |
64 | +) -> TranscribeOpts: | |
65 | + return TranscribeOpts( | |
66 | + language=language, | |
67 | + vad_filter=vad_filter, | |
68 | + condition_on_previous_text=condition_on_previous_text, | |
69 | + ) | |
70 | + | |
71 | + | |
72 | +TranscribeParams = Annotated[TranscribeOpts, Depends(transcription_parameters)] | |
73 | + | |
74 | + | |
75 | +@app.post("/v1/audio/transcriptions") | |
76 | +async def transcribe_file( | |
77 | + file: UploadFile, | |
78 | + transcription_opts: TranscribeParams, | |
79 | + response_format: ResponseFormat = ResponseFormat.JSON, | |
80 | +) -> str: | |
81 | + asr = FasterWhisperASR(whisper, transcription_opts) | |
82 | + audio_samples = audio_samples_from_file(file.file) | |
83 | + audio = AudioStream(audio_samples) | |
84 | + transcription, _ = await asr.transcribe(audio) | |
85 | + return format_transcription(transcription, response_format) | |
86 | + | |
87 | + | |
88 | +async def audio_receiver(ws: WebSocket, audio_stream: AudioStream) -> None: | |
89 | + try: | |
90 | + while True: | |
91 | + bytes_ = await asyncio.wait_for( | |
92 | + ws.receive_bytes(), timeout=config.max_no_data_seconds | |
93 | + ) | |
94 | + logger.debug(f"Received {len(bytes_)} bytes of audio data") | |
95 | + audio_samples = audio_samples_from_file(BytesIO(bytes_)) | |
96 | + audio_stream.extend(audio_samples) | |
97 | + if audio_stream.duration - config.inactivity_window_seconds >= 0: | |
98 | + audio = audio_stream.after( | |
99 | + audio_stream.duration - config.inactivity_window_seconds | |
100 | + ) | |
101 | + vad_opts = VadOptions(min_silence_duration_ms=500, speech_pad_ms=0) | |
102 | + timestamps = get_speech_timestamps(audio.data, vad_opts) | |
103 | + if len(timestamps) == 0: | |
104 | + logger.info( | |
105 | + f"No speech detected in the last {config.inactivity_window_seconds} seconds." | |
106 | + ) | |
107 | + break | |
108 | + elif ( | |
109 | + # last speech end time | |
110 | + config.inactivity_window_seconds | |
111 | + - timestamps[-1]["end"] / SAMPLES_PER_SECOND | |
112 | + >= config.max_inactivity_seconds | |
113 | + ): | |
114 | + logger.info( | |
115 | + f"Not enough speech in the last {config.inactivity_window_seconds} seconds." | |
116 | + ) | |
117 | + break | |
118 | + except asyncio.TimeoutError: | |
119 | + logger.info( | |
120 | + f"No data received in {config.max_no_data_seconds} seconds. Closing the connection." | |
121 | + ) | |
122 | + except WebSocketDisconnect as e: | |
123 | + logger.info(f"Client disconnected: {e}") | |
124 | + audio_stream.close() | |
125 | + | |
126 | + | |
127 | +def format_transcription( | |
128 | + transcription: Transcription, response_format: ResponseFormat | |
129 | +) -> str: | |
130 | + if response_format == ResponseFormat.TEXT: | |
131 | + return transcription.text | |
132 | + elif response_format == ResponseFormat.JSON: | |
133 | + return TranscriptionResponse(text=transcription.text).model_dump_json() | |
134 | + elif response_format == ResponseFormat.VERBOSE_JSON: | |
135 | + return TranscriptionVerboseResponse( | |
136 | + duration=transcription.duration, | |
137 | + text=transcription.text, | |
138 | + words=transcription.words, | |
139 | + ).model_dump_json() | |
140 | + | |
141 | + | |
142 | +@app.websocket("/v1/audio/transcriptions") | |
143 | +async def transcribe_stream( | |
144 | + ws: WebSocket, | |
145 | + transcription_opts: TranscribeParams, | |
146 | + response_format: ResponseFormat = ResponseFormat.JSON, | |
147 | +) -> None: | |
148 | + await ws.accept() | |
149 | + asr = FasterWhisperASR(whisper, transcription_opts) | |
150 | + audio_stream = AudioStream() | |
151 | + async with asyncio.TaskGroup() as tg: | |
152 | + tg.create_task(audio_receiver(ws, audio_stream)) | |
153 | + async for transcription in audio_transcriber(asr, audio_stream): | |
154 | + logger.debug(f"Sending transcription: {transcription.text}") | |
155 | + # Or should it be | |
156 | + if ws.client_state == WebSocketState.DISCONNECTED: | |
157 | + break | |
158 | + await ws.send_text(format_transcription(transcription, response_format)) | |
159 | + | |
160 | + if not ws.client_state == WebSocketState.DISCONNECTED: | |
161 | + # this means that the client HASNT disconnected | |
162 | + await ws.close() |
+++ speaches/server_models.py
... | ... | @@ -0,0 +1,26 @@ |
1 | +import enum | |
2 | + | |
3 | +from pydantic import BaseModel | |
4 | + | |
5 | +from speaches.core import Word | |
6 | + | |
7 | + | |
8 | +class ResponseFormat(enum.StrEnum): | |
9 | + JSON = "json" | |
10 | + TEXT = "text" | |
11 | + VERBOSE_JSON = "verbose_json" | |
12 | + | |
13 | + | |
14 | +# https://platform.openai.com/docs/api-reference/audio/json-object | |
15 | +class TranscriptionResponse(BaseModel): | |
16 | + text: str | |
17 | + | |
18 | + | |
19 | +# Subset of https://platform.openai.com/docs/api-reference/audio/verbose-json-object | |
20 | +class TranscriptionVerboseResponse(BaseModel): | |
21 | + task: str = "transcribe" | |
22 | + duration: float | |
23 | + text: str | |
24 | + words: list[ | |
25 | + Word | |
26 | + ] # Different from OpenAI's `words`. `Word.text` instead of `Word.word` |
+++ speaches/transcriber.py
... | ... | @@ -0,0 +1,75 @@ |
1 | +from __future__ import annotations | |
2 | + | |
3 | +from typing import AsyncGenerator | |
4 | + | |
5 | +from speaches.asr import FasterWhisperASR | |
6 | +from speaches.audio import Audio, AudioStream | |
7 | +from speaches.config import config | |
8 | +from speaches.core import Transcription, Word, common_prefix, to_full_sentences | |
9 | +from speaches.logger import logger | |
10 | + | |
11 | + | |
12 | +class LocalAgreement: | |
13 | + def __init__(self) -> None: | |
14 | + self.unconfirmed = Transcription() | |
15 | + | |
16 | + def merge(self, confirmed: Transcription, incoming: Transcription) -> list[Word]: | |
17 | + # https://github.com/ufal/whisper_streaming/blob/main/whisper_online.py#L264 | |
18 | + incoming = incoming.after(confirmed.end - 0.1) | |
19 | + prefix = common_prefix(incoming.words, self.unconfirmed.words) | |
20 | + logger.debug(f"Confirmed: {confirmed.text}") | |
21 | + logger.debug(f"Unconfirmed: {self.unconfirmed.text}") | |
22 | + logger.debug(f"Incoming: {incoming.text}") | |
23 | + | |
24 | + if len(incoming.words) > len(prefix): | |
25 | + self.unconfirmed = Transcription(incoming.words[len(prefix) :]) | |
26 | + else: | |
27 | + self.unconfirmed = Transcription() | |
28 | + | |
29 | + return prefix | |
30 | + | |
31 | + @classmethod | |
32 | + def prompt(cls, confirmed: Transcription) -> str | None: | |
33 | + sentences = to_full_sentences(confirmed.words) | |
34 | + if len(sentences) == 0: | |
35 | + return None | |
36 | + return sentences[-1].text | |
37 | + | |
38 | + # TODO: better name | |
39 | + @classmethod | |
40 | + def needs_audio_after(cls, confirmed: Transcription) -> float: | |
41 | + full_sentences = to_full_sentences(confirmed.words) | |
42 | + return full_sentences[-1].end if len(full_sentences) > 0 else 0.0 | |
43 | + | |
44 | + | |
45 | +def needs_audio_after(confirmed: Transcription) -> float: | |
46 | + full_sentences = to_full_sentences(confirmed.words) | |
47 | + return full_sentences[-1].end if len(full_sentences) > 0 else 0.0 | |
48 | + | |
49 | + | |
50 | +def prompt(confirmed: Transcription) -> str | None: | |
51 | + sentences = to_full_sentences(confirmed.words) | |
52 | + if len(sentences) == 0: | |
53 | + return None | |
54 | + return sentences[-1].text | |
55 | + | |
56 | + | |
57 | +async def audio_transcriber( | |
58 | + asr: FasterWhisperASR, | |
59 | + audio_stream: AudioStream, | |
60 | +) -> AsyncGenerator[Transcription, None]: | |
61 | + local_agreement = LocalAgreement() | |
62 | + full_audio = Audio() | |
63 | + confirmed = Transcription() | |
64 | + async for chunk in audio_stream.chunks(config.min_duration): | |
65 | + full_audio.extend(chunk) | |
66 | + audio = full_audio.after(needs_audio_after(confirmed)) | |
67 | + transcription, _ = await asr.transcribe(audio, prompt(confirmed)) | |
68 | + new_words = local_agreement.merge(confirmed, transcription) | |
69 | + if len(new_words) > 0: | |
70 | + confirmed.extend(new_words) | |
71 | + yield confirmed | |
72 | + logger.debug("Flushing...") | |
73 | + confirmed.extend(local_agreement.unconfirmed.words) | |
74 | + yield confirmed | |
75 | + logger.info("Audio transcriber finished") |
+++ tests/__init__.py
... | ... | @@ -0,0 +1,0 @@ |
+++ tests/app_test.py
... | ... | @@ -0,0 +1,84 @@ |
1 | +import json | |
2 | +import os | |
3 | +import threading | |
4 | +import time | |
5 | +from difflib import SequenceMatcher | |
6 | +from typing import Generator | |
7 | + | |
8 | +import pytest | |
9 | +from fastapi import WebSocketDisconnect | |
10 | +from fastapi.testclient import TestClient | |
11 | +from starlette.testclient import WebSocketTestSession | |
12 | + | |
13 | +from speaches.config import BYTES_PER_SECOND | |
14 | +from speaches.main import app | |
15 | +from speaches.server_models import TranscriptionVerboseResponse | |
16 | + | |
17 | +SIMILARITY_THRESHOLD = 0.97 | |
18 | + | |
19 | + | |
20 | +@pytest.fixture() | |
21 | +def client() -> Generator[TestClient, None, None]: | |
22 | + with TestClient(app) as client: | |
23 | + yield client | |
24 | + | |
25 | + | |
26 | +def get_audio_file_paths(): | |
27 | + file_paths = [] | |
28 | + directory = "tests/data" | |
29 | + for filename in reversed(os.listdir(directory)[5:6]): | |
30 | + if filename.endswith(".raw"): | |
31 | + file_paths.append(os.path.join(directory, filename)) | |
32 | + return file_paths | |
33 | + | |
34 | + | |
35 | +file_paths = get_audio_file_paths() | |
36 | + | |
37 | + | |
38 | +def stream_audio_data( | |
39 | + ws: WebSocketTestSession, data: bytes, *, chunk_size: int = 4000, speed: float = 1.0 | |
40 | +): | |
41 | + for i in range(0, len(data), chunk_size): | |
42 | + ws.send_bytes(data[i : i + chunk_size]) | |
43 | + delay = len(data[i : i + chunk_size]) / BYTES_PER_SECOND / speed | |
44 | + time.sleep(delay) | |
45 | + | |
46 | + | |
47 | +def transcribe_audio_data( | |
48 | + client: TestClient, data: bytes | |
49 | +) -> TranscriptionVerboseResponse: | |
50 | + response = client.post( | |
51 | + "/v1/audio/transcriptions?response_format=verbose_json", | |
52 | + files={"file": ("audio.raw", data, "audio/raw")}, | |
53 | + ) | |
54 | + data = json.loads(response.json()) # TODO: figure this out | |
55 | + return TranscriptionVerboseResponse(**data) # type: ignore | |
56 | + | |
57 | + | |
58 | +@pytest.mark.parametrize("file_path", file_paths) | |
59 | +def test_ws_audio_transcriptions(client: TestClient, file_path: str): | |
60 | + with open(file_path, "rb") as file: | |
61 | + data = file.read() | |
62 | + streaming_transcription: TranscriptionVerboseResponse = None # type: ignore | |
63 | + with client.websocket_connect( | |
64 | + "/v1/audio/transcriptions?response_format=verbose_json" | |
65 | + ) as ws: | |
66 | + thread = threading.Thread( | |
67 | + target=stream_audio_data, args=(ws, data), kwargs={"speed": 4.0} | |
68 | + ) | |
69 | + thread.start() | |
70 | + while True: | |
71 | + try: | |
72 | + streaming_transcription = TranscriptionVerboseResponse( | |
73 | + **ws.receive_json() | |
74 | + ) | |
75 | + except WebSocketDisconnect: | |
76 | + break | |
77 | + ws.close() | |
78 | + file_transcription = transcribe_audio_data(client, data) | |
79 | + s = SequenceMatcher( | |
80 | + lambda x: x == " ", file_transcription.text, streaming_transcription.text | |
81 | + ) | |
82 | + assert ( | |
83 | + s.ratio() > SIMILARITY_THRESHOLD | |
84 | + ), f"\nExpected: {file_transcription.text}\nReceived: {streaming_transcription.text}" |
+++ tests/conftest.py
... | ... | @@ -0,0 +1,9 @@ |
1 | +import logging | |
2 | + | |
3 | +disable_loggers = ["multipart.multipart", "faster_whisper"] | |
4 | + | |
5 | + | |
6 | +def pytest_configure(): | |
7 | + for logger_name in disable_loggers: | |
8 | + logger = logging.getLogger(logger_name) | |
9 | + logger.disabled = True |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?