From bb1cf6941b32f7cd2160c10087e85b64382b3507 Mon Sep 17 00:00:00 2001 From: veguAI <152010387+vegu-ai-tools@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:55:34 +0300 Subject: [PATCH] 0.27.0 (#137) * move memory agent to directory structure * chromadb settings rework * memory agent improvements embedding presets support switching embeddings without restart support custom sentence transformer embeddings * toggle to hide / show disabled clients * add memory debug tools * chromadb no longer needs its dedicated config entry * add missing emits * fix initial value * hidden disabled clients no longer cause enumeration issues with client actions * improve memory agent error handling and hot reloading * more memory agent error handling * DEBUG_MEMORY_REQUESTS off * relock * sim suite: fix issue with removing or changing characters * relock * fix issue where actor dialogue editor would break with multiple characters in the scene * remove cruft * implement interrupt function * margin adjustments * fix rubber banding issue in world editor when editing certain text fields * status notification when re-importing vectorb due to embeddings change * properly open new client context on agent actions * move jiggle apply to the end of prompt tune stack * narrator agent length limit and jiggle settings added - also improve post generation cleanup * progress story prompt improvements * narrator prompt and cleanup tweaks * prompt tweak * revert * autocomplete dialogue improvements * Unified process (#141) * progress to unified process * --dev arg * use gunicorn to serve built frontend * gunicorn config adjustments * remove dist from gitignore * revert * uvicorn instead * save decode * graceful shutdown * refactor unified process * clean up frontend log messages * more logging fixes * 0.27.0 * startup message * clean up scripts a bit * fixes to update.bat * fixes to install.bat * sim suite supports generation cancellation * debug * simplify narrator prompts * prompt tweaks * unified docker file * update docker compose config for unified docker file * cruft * fix startup in linux docker * download punkt so its available * prompt tweaks * fix bug when editing scene outline would wipe message history * add o1 models * add sampler, scheduler and cfg config to a1111 visualizer * update installation docs * visualizer configurable timeout * memory agent docs * docs * relock * relock * fix issue where changing embeddings on immutable scene would hang * remove debug message * take torch install out of poetry since conditionals don't work. * torch gets installed through some dependency so put it back into poetry, but reinstall with cuda if cuda support exists * fix install syntax * no need for torchvision * torch cuda install added to linux install script * add torch cuda install to update.bat * docs * docs * relock * fix install.sh * handle torch+cuda install in docker * docs * typo --- Dockerfile | 86 + Dockerfile.backend | 25 - Dockerfile.frontend | 23 - docker-compose.yml | 22 +- docs/getting-started/installation/docker.md | 7 +- docs/getting-started/installation/linux.md | 14 +- docs/getting-started/installation/windows.md | 10 +- docs/getting-started/load-a-scene.md | 3 + docs/img/0.27.0/automatic1111-settings.png | Bin 0 -> 36651 bytes docs/img/0.27.0/cancel-generation.png | Bin 0 -> 6394 bytes docs/img/0.27.0/embedding-settings-edit.png | Bin 0 -> 81446 bytes docs/img/0.27.0/embedding-settings-new-1.png | Bin 0 -> 54185 bytes docs/img/0.27.0/memory-agent-settings.png | Bin 0 -> 31203 bytes docs/img/0.27.0/open-debug-tools.png | Bin 0 -> 1626 bytes docs/img/0.27.0/testing-memory-1.png | Bin 0 -> 59735 bytes docs/img/0.27.0/testing-memory-2.png | Bin 0 -> 145223 bytes docs/img/0.27.0/visual-agent-settings.png | Bin 0 -> 45372 bytes docs/user-guide/agents/memory/chromadb.md | 60 - docs/user-guide/agents/memory/embeddings.md | 81 + docs/user-guide/agents/memory/index.md | 2 +- docs/user-guide/agents/memory/settings.md | 14 + docs/user-guide/agents/memory/testing.md | 23 + .../agents/visualizer/automatic1111.md | 14 +- docs/user-guide/agents/visualizer/settings.md | 6 +- docs/user-guide/interacting.md | 10 + frontend_wsgi.py | 28 + install-pytorch-cuda.bat | 6 - install.bat | 23 +- install.sh | 23 + poetry.lock | 3821 +++++++++-------- pyproject.toml | 9 +- scenes/simulation-suite/game.py | 16 +- src/talemate/__init__.py | 4 +- src/talemate/agents/base.py | 30 +- src/talemate/agents/context.py | 4 + src/talemate/agents/conversation.py | 2 +- .../agents/{memory.py => memory/__init__.py} | 427 +- src/talemate/agents/memory/context.py | 99 + src/talemate/agents/memory/exceptions.py | 18 + src/talemate/agents/narrator.py | 135 +- src/talemate/agents/visual/__init__.py | 14 + src/talemate/agents/visual/automatic1111.py | 77 +- src/talemate/agents/visual/comfyui.py | 2 +- src/talemate/agents/visual/openai_image.py | 1 + src/talemate/client/base.py | 84 +- src/talemate/client/context.py | 3 + src/talemate/client/openai.py | 6 +- src/talemate/config.py | 84 +- src/talemate/emit/signals.py | 2 + src/talemate/exceptions.py | 8 +- src/talemate/game/engine/__init__.py | 18 +- src/talemate/game/scope.py | 9 +- .../creator/autocomplete-dialogue.jinja2 | 9 +- .../creator/contextual-generate.jinja2 | 7 +- .../narrator/narrate-character.jinja2 | 5 +- .../narrator/narrate-progress.jinja2 | 31 +- .../templates/narrator/narrate-query.jinja2 | 26 +- .../narrator/narrate-time-passage.jinja2 | 4 +- src/talemate/server/api.py | 3 + src/talemate/server/run.py | 117 +- src/talemate/server/websocket_server.py | 14 +- src/talemate/tale_mate.py | 46 +- src/talemate/version.py | 3 + start-backend.bat | 2 +- start-backend.sh | 2 +- start-developer.bat | 2 + start-frontend.bat | 0 start.bat | 1 - start.sh | 3 + talemate_frontend/package-lock.json | 140 +- talemate_frontend/package.json | 2 +- talemate_frontend/src/components/AIClient.vue | 200 +- .../src/components/AppConfig.vue | 23 +- .../src/components/AppConfigPresets.vue | 149 +- .../components/AppConfigPresetsEmbeddings.vue | 268 ++ .../components/AppConfigPresetsInference.vue | 131 + .../components/DebugToolMemoryRequestLog.vue | 114 + .../components/DebugToolMemoryRequestView.vue | 93 + .../src/components/DebugToolPromptLog.vue | 16 +- .../src/components/DebugTools.vue | 25 +- .../src/components/SceneTools.vue | 16 + .../src/components/StatusNotification.vue | 2 +- .../src/components/TalemateApp.vue | 14 +- .../WorldStateManagerCharacterActor.vue | 19 +- .../WorldStateManagerCharacterAttributes.vue | 7 +- .../WorldStateManagerCharacterDescription.vue | 8 +- .../WorldStateManagerCharacterDetails.vue | 9 +- ...rldStateManagerCharacterReinforcements.vue | 13 +- .../components/WorldStateManagerContextDB.vue | 12 +- .../WorldStateManagerSceneOutline.vue | 8 +- .../components/WorldStateManagerTemplates.vue | 100 +- .../WorldStateManagerWorldEntries.vue | 12 +- .../WorldStateManagerWorldStates.vue | 21 +- talemate_frontend/src/plugins/vuetify.js | 1 + update.bat | 29 +- 95 files changed, 4339 insertions(+), 2721 deletions(-) create mode 100644 Dockerfile delete mode 100644 Dockerfile.backend delete mode 100644 Dockerfile.frontend create mode 100644 docs/img/0.27.0/automatic1111-settings.png create mode 100644 docs/img/0.27.0/cancel-generation.png create mode 100644 docs/img/0.27.0/embedding-settings-edit.png create mode 100644 docs/img/0.27.0/embedding-settings-new-1.png create mode 100644 docs/img/0.27.0/memory-agent-settings.png create mode 100644 docs/img/0.27.0/open-debug-tools.png create mode 100644 docs/img/0.27.0/testing-memory-1.png create mode 100644 docs/img/0.27.0/testing-memory-2.png create mode 100644 docs/img/0.27.0/visual-agent-settings.png delete mode 100644 docs/user-guide/agents/memory/chromadb.md create mode 100644 docs/user-guide/agents/memory/embeddings.md create mode 100644 docs/user-guide/agents/memory/settings.md create mode 100644 docs/user-guide/agents/memory/testing.md create mode 100644 frontend_wsgi.py delete mode 100644 install-pytorch-cuda.bat rename src/talemate/agents/{memory.py => memory/__init__.py} (67%) create mode 100644 src/talemate/agents/memory/context.py create mode 100644 src/talemate/agents/memory/exceptions.py create mode 100644 src/talemate/version.py create mode 100644 start-developer.bat create mode 100644 start-frontend.bat create mode 100755 start.sh create mode 100644 talemate_frontend/src/components/AppConfigPresetsEmbeddings.vue create mode 100644 talemate_frontend/src/components/AppConfigPresetsInference.vue create mode 100644 talemate_frontend/src/components/DebugToolMemoryRequestLog.vue create mode 100644 talemate_frontend/src/components/DebugToolMemoryRequestView.vue diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..40442a73 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,86 @@ +# Stage 1: Frontend build +FROM node:21 AS frontend-build + +ENV NODE_ENV=development + +WORKDIR /app + +# Copy the frontend directory contents into the container at /app +COPY ./talemate_frontend /app + +# Install all dependencies and build +RUN npm install && npm run build + +# Stage 2: Backend build +FROM python:3.11-slim AS backend-build + +WORKDIR /app + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + bash \ + gcc \ + && rm -rf /var/lib/apt/lists/* + +# Install poetry +RUN pip install poetry + +# Copy poetry files +COPY pyproject.toml poetry.lock* /app/ + +# Create a virtual environment +RUN python -m venv /app/talemate_env + +# Activate virtual environment and install dependencies +RUN . /app/talemate_env/bin/activate && \ + poetry config virtualenvs.create false && \ + poetry install --no-dev --no-root + +# Copy the Python source code +COPY ./src /app/src + +# Conditional PyTorch+CUDA install +ARG CUDA_AVAILABLE=false +RUN . /app/talemate_env/bin/activate && \ + if [ "$CUDA_AVAILABLE" = "true" ]; then \ + echo "Installing PyTorch with CUDA support..." && \ + pip uninstall torch torchaudio -y && \ + pip install torch~=2.4.1 torchaudio~=2.4.1 --index-url https://download.pytorch.org/whl/cu121; \ + fi + +# Stage 3: Final image +FROM python:3.11-slim + +WORKDIR /app + +RUN apt-get update && apt-get install -y \ + bash \ + && rm -rf /var/lib/apt/lists/* + +# Copy virtual environment from backend-build stage +COPY --from=backend-build /app/talemate_env /app/talemate_env + +# Copy Python source code +COPY --from=backend-build /app/src /app/src + +# Copy Node.js build artifacts from frontend-build stage +COPY --from=frontend-build /app/dist /app/talemate_frontend/dist + +# Copy the frontend WSGI file if it exists +COPY frontend_wsgi.py /app/frontend_wsgi.py + +# Copy base config +COPY config.example.yaml /app/config.yaml + +# Copy essentials +COPY scenes templates chroma* /app/ + +# Set PYTHONPATH to include the src directory +ENV PYTHONPATH=/app/src:$PYTHONPATH + +# Make ports available to the world outside this container +EXPOSE 5050 +EXPOSE 8080 + +# Use bash as the shell, activate the virtual environment, and run backend server +CMD ["poetry run src/talemate/server/run.py runserver --host 0.0.0.0 --port 5050 --frontend-host 0.0.0.0 --frontend-port 8080"] \ No newline at end of file diff --git a/Dockerfile.backend b/Dockerfile.backend deleted file mode 100644 index 836d6068..00000000 --- a/Dockerfile.backend +++ /dev/null @@ -1,25 +0,0 @@ -# Use an official Python runtime as a parent image -FROM python:3.11-slim - -# Set the working directory in the container -WORKDIR /app - -# Copy the current directory contents into the container at /app -COPY ./src /app/src - -# Copy poetry files -COPY pyproject.toml /app/ -# If there's a poetry lock file, include the following line -COPY poetry.lock /app/ - -# Install poetry -RUN pip install poetry - -# Install dependencies -RUN poetry install --no-dev - -# Make port 5050 available to the world outside this container -EXPOSE 5050 - -# Run backend server -CMD ["poetry", "run", "python", "src/talemate/server/run.py", "runserver", "--host", "0.0.0.0", "--port", "5050"] \ No newline at end of file diff --git a/Dockerfile.frontend b/Dockerfile.frontend deleted file mode 100644 index 593e88f4..00000000 --- a/Dockerfile.frontend +++ /dev/null @@ -1,23 +0,0 @@ -# Use an official node runtime as a parent image -FROM node:20 - -# Make sure we are in a development environment (this isn't a production ready Dockerfile) -ENV NODE_ENV=development - -# Echo that this isn't a production ready Dockerfile -RUN echo "This Dockerfile is not production ready. It is intended for development purposes only." - -# Set the working directory in the container -WORKDIR /app - -# Copy the frontend directory contents into the container at /app -COPY ./talemate_frontend /app - -# Install all dependencies -RUN npm install - -# Make port 8080 available to the world outside this container -EXPOSE 8080 - -# Run frontend server -CMD ["npm", "run", "serve"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index fb446f17..eb01e451 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,27 +1,21 @@ version: '3.8' services: - talemate-backend: + talemate: build: context: . - dockerfile: Dockerfile.backend + dockerfile: Dockerfile + args: + - CUDA_AVAILABLE=${CUDA_AVAILABLE:-false} ports: - - "5050:5050" + - "${FRONTEND_PORT:-8080}:8080" + - "${BACKEND_PORT:-5050}:5050" volumes: - # can uncomment for dev purposes - #- ./src/talemate:/app/src/talemate - ./config.yaml:/app/config.yaml - ./scenes:/app/scenes - ./templates:/app/templates - ./chroma:/app/chroma environment: - PYTHONUNBUFFERED=1 - - talemate-frontend: - build: - context: . - dockerfile: Dockerfile.frontend - ports: - - "8080:8080" - #volumes: - # - ./talemate_frontend:/app + - PYTHONPATH=/app/src:$PYTHONPATH + command: ["/bin/bash", "-c", "source /app/talemate_env/bin/activate && python src/talemate/server/run.py runserver --host 0.0.0.0 --port 5050 --frontend-host 0.0.0.0 --frontend-port 8080"] \ No newline at end of file diff --git a/docs/getting-started/installation/docker.md b/docs/getting-started/installation/docker.md index 303da8d3..510db31d 100644 --- a/docs/getting-started/installation/docker.md +++ b/docs/getting-started/installation/docker.md @@ -10,7 +10,12 @@ 1. copy config file 1. linux: `cp config.example.yaml config.yaml` 1. windows: `copy config.example.yaml config.yaml` -1. `docker compose up` +1. If your host has a CUDA compatible Nvidia GPU + 1. Windows (via PowerShell): `$env:CUDA_AVAILABLE="true"; docker compose up` + 1. Linux: `CUDA_AVAILABLE=true docker compose up` +1. If your host does **NOT** have a CUDA compatible Nvidia GPU + 1. Windows: `docker compose up` + 1. Linux: `docker compose up` 1. Navigate your browser to http://localhost:8080 !!! note diff --git a/docs/getting-started/installation/linux.md b/docs/getting-started/installation/linux.md index 50d362b4..132c1c24 100644 --- a/docs/getting-started/installation/linux.md +++ b/docs/getting-started/installation/linux.md @@ -2,13 +2,21 @@ ## Quick install instructions !!! warning - python 3.12 and node.js v21 are currently not supported. + python 3.12 is currently not supported. + +### Dependencies + +1. node.js and npm - see instructions [here](https://nodejs.org/en/download/package-manager/) +1. python 3.10 or 3.11 - see instructions [here](https://www.python.org/downloads/) + +### Installation 1. `git clone https://github.com/vegu-ai/talemate.git` 1. `cd talemate` 1. `source install.sh` -1. Start the backend: `python src/talemate/server/run.py runserver --host 0.0.0.0 --port 5050`. -1. Open a new terminal, navigate to the `talemate_frontend` directory, and start the frontend server by running `npm run serve`. + - When asked if you want to install pytorch with CUDA support choose `y` if you have + a CUDA compatible Nvidia GPU and have installed the necessary drivers. +1. `source start.sh` If everything went well, you can proceed to [connect a client](../../connect-a-client). diff --git a/docs/getting-started/installation/windows.md b/docs/getting-started/installation/windows.md index 1612cc0e..993b8a4e 100644 --- a/docs/getting-started/installation/windows.md +++ b/docs/getting-started/installation/windows.md @@ -1,10 +1,11 @@ ## Quick install instructions !!! warning - python 3.12 and node.js v21 are currently not supported. + python 3.12 is currently not supported 1. Download and install Python 3.10 or Python 3.11 from the [official Python website](https://www.python.org/downloads/windows/). -1. Download and install Node.js v20 from the [official Node.js website](https://nodejs.org/en/download/). This will also install npm. + - [Click here for direct link to python 3.11.9 download](https://www.python.org/downloads/release/python-3119/) +1. Download and install Node.js from the [official Node.js website](https://nodejs.org/en/download/prebuilt-installer). This will also install npm. 1. Download the Talemate project to your local machine. Download from [the Releases page](https://github.com/vegu-ai/talemate/releases). 1. Unpack the download and run `install.bat` by double clicking it. This will set up the project on your local machine. 1. Once the installation is complete, you can start the backend and frontend servers by running `start.bat`. @@ -17,13 +18,12 @@ If everything went well, you can proceed to [connect a client](../../connect-a-c ### How to Install Python 3.10 or 3.11 1. Visit the official Python website's download page for Windows at [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/). -2. Click on the link for the Latest Python 3 Release - Python 3.10.x. -3. Scroll to the bottom and select either Windows x86-64 executable installer for 64-bit or Windows x86 executable installer for 32-bit. +2. Find the latest version of Python 3.10 or 3.11 and click on one of the download links. (You will likely want the Windows installer (64-bit)) 4. Run the installer file and follow the setup instructions. Make sure to check the box that says Add Python 3.10 to PATH before you click Install Now. ### How to Install npm -1. Download Node.js from the official site [https://nodejs.org/en/download/](https://nodejs.org/en/download/). +1. Download Node.js from the official site [https://nodejs.org/en/download/prebuilt-installer](https://nodejs.org/en/download/prebuilt-installer). 2. Run the installer (the .msi installer is recommended). 3. Follow the prompts in the installer (Accept the license agreement, click the NEXT button a bunch of times and accept the default installation settings). diff --git a/docs/getting-started/load-a-scene.md b/docs/getting-started/load-a-scene.md index 84d52ea0..7790226e 100644 --- a/docs/getting-started/load-a-scene.md +++ b/docs/getting-started/load-a-scene.md @@ -6,6 +6,9 @@ To load the introductory `Infinity Quest` scenario, simply click on its entry in ![Load infinity quest](/talemate/img/0.26.0/getting-started-load-screen.png) +!!! info "First time may take a moment" + When you load the a scenario for the first time, Talemate will need to initialize the long term memory model. Which likely means a download. Just be patient and it will be ready soon. + ## Interacting with the scenario After a moment of loading, you will see the scenario's introductory message and be able to send a text interaction. diff --git a/docs/img/0.27.0/automatic1111-settings.png b/docs/img/0.27.0/automatic1111-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..2be54e626f4a841af74260a0e262bae4dfac364d GIT binary patch literal 36651 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 literal 0 HcmV?d00001 diff --git a/docs/img/0.27.0/cancel-generation.png b/docs/img/0.27.0/cancel-generation.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b942ea5224fbcf04a8bc625061b056a7955757 GIT binary patch literal 6394 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 literal 0 HcmV?d00001 diff --git a/docs/img/0.27.0/embedding-settings-edit.png b/docs/img/0.27.0/embedding-settings-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..3055d0066cfbeda6f4c2d7e21559ecc0982a41f8 GIT binary patch literal 81446 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
70ge2jj;lgP-Gj`z=5F0+d=qMra z7&DE%*Vrn?Hg-|7i=hC0gK&4eP4@T5RyH_#esm#h2&cG*W^!Lja{{C!#Mc3&x#LCFy#Z{$oBAywA9jPe z$df;?5m`c-i{&|WoNSB_od})TRKJ6Ey9oGz-j}6uh^qAAoTt~#f{rVP^{xDuX3vib z&&Smj2SRCu1`54*b2(9T6E-pB^ddrG8`2V`*?UpG8-GT?uylP*eU+oHrQ$jvUiq}Q zM|#>(;`GU#?o^q&y{a4iZ3s$<(0>BsOr*(LcZGXKSmIuKHqK@dQ|jO zq84_kaW-sGYAch@aX;tfpOUSuDl)Q7~SR~mfK{`?9)p^9wdh) zaf*G3iJqR~vz?pD@8tvbr?>INuC|s;I=*JriGf#X(P#tu1$Ushrn4Tp(7P=IBDunv zjYm7roEkzto{W#winJ@3Hr3HHp`J6az3!FV?%LTIR9$p8uJ$~{JzQ?0IKHpBUizSm zmFe&pP3kkc)TfPv*t-KN7l))FcU#RA8wYy7a_;vXo@F>a7a`D8Q0^_H>8Uf@hM9fT z2)5UIuSD2+<@-auD5lXrLcYGZ&PUedDNczbCuI~^Omgh`SeiILb}IenZZzco^8rDs z2CPK=^=(Nx!c0Xbx8FtGSD{ikyBrE+e|vUAr)#4;TU>kXVYh7-(Ci^9`q@%jX7~Gx z-4O_CP6*ssa^>3vx4dkr4sXA zrdv$KkKO0hzytM;qu*F{)%TLLm2|WPlO&kNyYY=jVL*4uL)pO7$wldrB9pGzu$?gs zx~UbiX5tfMIFL=G(JPD*6qnqnJ>KvHkKXT~n|R(1(`UZWW5;FL)ZwBFOV=adPC0(D z$hN+@g$-yc4;ZYi8Tc@rE6Y~d#)Ye)xP-n3dn`kOPVnHGah1Ymb&gho=UmvTbN1l zXYFLWQ2vXK8Ha5ACNq#biE)fVJE}(*NtM0Z`XL>ilcAhmx?T5kt!=ybAd>CT2^asSWUWQHzKsX zUba^(*1+2>{Ujh9-4(R-N5~sJb?W5nC{9OxM$N%ZSKF!ceA3nQ7gt5}_H74b@=sis z17DnTPVF|xJQ-ocnJ=Sf&+ebsLh8=ryi1Q%2Ui%+wm*8P`e~{ah$5pLIU8zgsy9RKFQu*jm(SuNj^t;bx(sF2E3*v&P1k8 z8)S55JqPCRZ^@K zedqpnd;}8O{Aju1ejn_)HsF8eHNH}=xwEgDA{}IMk-8O zp)7LRP5|S3=EA2K6?l{`iN0LBj+mgkar>g*s`s}v@z8ROWW_OZd_uWqavzpS<;y~^ z{6vu{qZ!;OCTIc4sGwm^WkRMET3fv}<~I|0l1bF8Fx;%E;-wb^-wAdfz3Qe?;~s=p z<-KR`Y4PtR0R8TUMqV`jP+d)zepHm=H1LENO+OiPSa;DF<;=`lv3ALjk0N?B zb&-xyJ`SVUsw1w>?tMX@AoZ0PVd}fDq7>Q46wCN>?VD}a>UWz7s>w*(K2Zdm&hJt! zMo)YWQMm$QBmUI$MQE+XR=oQ{Q4F2xEIrxS*0|crjJJ9=HJvpJvz5dII2C5s4YD|kDe8?NIaLAZhEwtQaWK^ z3KC3teTF)8^+^n;2y+4eXBmN2nat_r6UF5wiBo53Ccpg{%5$5(!_}H?Tbw<>A`Wmc zn^rtF$$c} z+JYzVPg6+Mbhp!F2~?(!O&u*s z7go>366~E@;4Ys@TOf! z-I^gyPF_Gba=!h|S;NeGN*+4I+V6z`%-G$u7>v+!W3Uf;e7vGnmjFmsqi1W6R&pIz zzOy?Tvn4+_jCH1K%boao_U3)0*6JOi#pu1v^pBxDYtOq?X|s-`3QVC!ij~F{0&Z!c zLyjHO5oQ34zgj&;z%;SD7wfilyop^NSDAoQ;qhdj$L_Rm`6RU%#b0fT!|I)86RTQg z`%#nfHb&hi&xgDPB^@(wW66-+n3L})pNJ+$rbV{rptxh|*VS<^i;QRSrN%Nw-gESd~pGl3?%msf!t# z0y`C)#t3bP`0KE>$2iLX#XPk($m-@wu^}lcdxZnnhB)FHgnw<5#^-E|B=rkCOlO#V z@jm@IzWl51QJ$uSpf_jgS36#`Hsp*)6{--zYI6KU_hO&OjRjTDrSqy*5o9{i)E(p{n%1^_F@$#UdxWDM)nK9Pbk?RjNU1E7TxiK6oCJax_}^L`H8n+j6+|yhb2OY`|Kp z9YN2BVT7-Lz5&*xJn3<*9ej~{qqVQp0UePR+S&BxGXW*33DZX_*!$ku8hig@raV}` z@$H4vXjzFTJkWcC9}7|bk9Od4n=$Zxvg^XbmNeT>)qs&bm3V%nRA`b}bGyoMQx* zf-a%Uc!Dl9_k(;60Tvu?5B-7*mMqHm?r=(9o0neDzA5?$n%2!QD=Ym8r9^(qvZZ(h zL8RM#BN?A)y?_rR&!8Ub90HI2l+7^k6eVj2wd3s^e)<7W=-Jpdzpx3e%Uk7Cg5?4F=;0x zihxrNK7l)rLcG+oRuG}NT|(#_7ut@nB>!xwh1nNO(4&!O*FG<>c`IJ{$LjusMVp$c zY1^1{C8#h-qH}V_aq&c6wgL((C!+XGY~WStkk7My=3U!C z=`&OST>wF_XNsCO0ykcrtn)c6Xj{kuSE*7-d^B8<5YVEA&uvBYXBzOvjG+A(OKX zC9+w))&|D%eT@gkHLD(4+9?^02uI#N>ybWQYnI%gd00<)6}&4K$LZr7=b1FUfrvbM z8@;IMVi_H)ok{=j{EMm=w<~K|&c0y5>qgq}7 zJk70bX|>66-gr=zid!A|s95E;C7dc4wlbhp*A8Qs$0E--?~dZ?M0!XYbOHSL>&7|5 zoM~8vs8{d#Q!UUT>2k~987E_Tr@{RFN9{3=j@S10lxSI#{9K7(lx?yfDwQFUG+>(O zu{VFm{uS)#6vL~b*tR@a*|!JFE#24iztz1l5ev9H(e5LR0}#5E$%YjMRK;RMpdc8d z_1 zR?W=LI%SFs=Ixe*TPxRx$+HTqGNn3kb}CN1&6C(5*!n`EZOVCvS9h(VJ|I*~mrfjm zRZa$JNJnU`T)~10s~WFHz>27iOfpxsM{{jxWSYKA=%mFTB+i2d_{#IwCOY^`8HTW3 zQ>G-K5o?I+>dI$#raHE6?rCQu6Xs+kNc0yO=)E>?ggeBmHCpn(>ty>KS&P5>j3(X< zrD*4lMh#wuK!~Y|ty|uZE4~@TDjT_K`!yR-$e-)TzJ$$Ki)0*j;GIi)`LxujV!bEo z8D{qDW^D(hn2#c%998-(6E+o^rnJk&*A~&H7Id;DG>w5v`ShP!n_>y>!S6$FNFB`h zS6+VZr6%w?1jfjWAX8{5@IO7v9ijXANFpOJ%qmN@9gdPBLMBo zd>HO%vB`?+L_6(_ioX5W;%3u!PCOvK)-6t?s#Y>&Zlc1uALbA^N2ZX;4_EN!;#S6z z$VREkobGt~eAdmR1?e}3@XLmN4fkN#XOo_oa)u9e1jnjhwNn~xC+Ov_ zcx{kdr?O%Tuob+TiZ*iQ4|6>oc~?HY{wPV1xH-8nWST+I_L)F>{>@sbXVBqJ58Ar> z>1cnx%Zl?=vNGzf({P;~CXv%RVJPwWDNtb4+V`bqa>(r24tVPlF>wR$i%@D%9xX9H z&z9tH-G`rf)V2j&v_d$>9_&TA3u{>+zy7#vb|^cvePb9OKbr_{Tq$Od(?h{M^*06iSIq-qPY7XDHTr%l5QUwLG|MKJVb zH7TY&RhOAikl*2Ihdk_6O%DF$mTapc=#mM&GdcVOhkAY;jC?jkx}WO+zB4_hb=q7x zzY}H==g2Gf)(yPe!V6=FHM$SNv{qA_T9(1T#_o?1_Ie3us@+MhIJcKvdy!>u%CyJZ zgkWnnL763+3*uU-)Z6V);vVwgBAMQ#=Uw=CaM)GfU)3lU-3+9W;gCR`n}&hq4-`CuH&f_6q;!ubmJ>ltgx zibz2u(0D%wd&@OyGn}T;En1h(w{oxm;WE@Y;K9sDjF@{q7FvVm=ibNzB45!PGy)yB z%cC{q@blRLTHQes^z3G@B2(N`r)gpXdTd3tl42L&*$T&gTN; zP!!f8uE=y$^Y9}piF;;enqKPhC5{B%=%@Y-?wB6IOzgH7 zIFs2BqPTRSG<@U_<=^*rX!!Uz)r*0RXpzOrf_D%Cnhk@B?bB?qgeq|LHt2}+;Nl} z!{trTnGT%egYi4smDRU)O?7go)A^K+qm62};I?z_d=j@Y_Yuum0y1<=GrviH_9t9) z*}-DRwdupJ;33ao(NWS8=@$Ah zh`=~V5!Zkh9W7u|9NSJ$nhQ~DaocHc-MUW=0@+6$&q~<8gvF2}Bw_Q zJh%eqZ`8%gI-6GqZyPB$`Fb_$kl2S+OuCm`pzywXG!Ne4zVt*6d#{hFN?3CI33mgn zsD_P%VE2d1X{}A_dw19#ZKVLMmVqy?SiF3mJY#CWVC!rXK&!N=k}54#H_YaqlRKe( z37;io#?)C2YVm?^K}KC~NZ976;TEU|{rQ?&8F=lc_?2ibBbwW04)B{ z0OG%Oz`7(xeL1wPio2DK)TZX!PmuOIqNlg6-U*#CZ3l%&@$=rt|6P|V05TV$NY@mt z=s|*2lT9E;L2NtadB{rgj&yp49*zp8!dj$_mjs(Ov;#uKv>@&r*PCMo=@CEB2*4U1 zFyc`tY+`n;5cT-Rae;ggN_+)wElcUWQ4@-kmkVdD4B*C>T9&n#_dMgTGTk^EI{RKz z1qW*+kk@APy73;6M+Xrkw3v0Ibr#nvIgh#|%?>C2%@q7)ta>@)3omH;hZ=PbT@OR| z5GseYa7PCjYNo91c|f*!6`59`4`Z=tb}vo;vo3S#!TT`BS+C%E9vO@?Cy_N@O+!SC zuC2{aNI0PV4)(pq2H|*~`AXB)_+S4M{=h8)T+@TAtuYsGJJMVl z)%?6SjQU?!UbKOeVn0?kfN4++KXMVkrAL9k5bdpbFGqZ3*em#nGpXPFl@Js`ZFNv% z2o$Y9I(_HHuUN0s0X9>yHT|E(s%U^}`|l0upwUf_hEjc3D^WMx+)hk6lD%d(-*#7( z{-5Zs=coC2S3dF0@9QsszHwK%OK^PY-u1Aefv_5LMc^Gb(_tik6G{O5&Hudrf)V=j zwE$IJ?^32VBxkHREfoL$%4M35Ko2HIxLP`y-ur^6tA46#gbMK=#AvXd(=wfSu$3$ z{$m6s|3tS_tS=f7dGXePi+1@3v9z0)N2Ump_P(e5kIS#4_(Zi~Z`FENNlBA;Eu_K% zE;DyXNB!gUkJZ3X)_Yl&iEHs$wj!d|b%(Wo>R5eKUcd9WwV%^1Ix1#eh1!$CM(q8s z+c!}muj>ca0{v$Yqf6+JCB_Y6+q|Cbv^Ciu-q%poS#LLCZ#!-_t7BQR>(UOUkmUH! z5MYywA-Ds?Qc!5rX6p(v_~4z#`SEnB$duDyX^;47MzFSb=j4pd^=d9)84;l9Cy`Q@8>%Ok*o@+n-@|+oOGM@qs_e6TPFy`-l z6kk#EcPMS6S&dO3yNd*MlFY^__lZIdp&H=lGqfr>j0SS{sMXJS7vX#Pii~}S8pV!A>Zv1KUllbs0zNx%foUlddvgyi!qXXQ`ZCce~g>X9e zKI%s6lIk48{U+(xK3+wU*ZvIjTRJ*>X|<+xL3?Cr*XK{5V0SXY7f1^=Or-&!Tzw-b zkvJaCm61ma8jb+`T8h{le;c?wF-*?^t067~%bvVR-HhK!F0h=*Gw*ssx{E(wW6s(U z!U02*Xr}|E{Cq0#7Hh;{_+^?>`y>gN96vL7j)MS?@dU-E`}#+Uw1<7~Aer<=Ot9>t zJa*6fJu;)i?%F@=?{h28!{7zIcvdd0406fJ2VOyq#tTGYdU3WKIAU4(3#HU8pxf1L zWq$-ts?*~r3Jd#9P>?GNNxfyGC0o@ed-7bPwqKbsH_d(gChLUzgdLTCNKXj4&^;y+ zt7&tT!LHEUoCgpVq=$H%9gOxJCyF~5s-gHz(_BLdn$#E=?LV2QAx|{~f^KDb)*p;K z*>7+&6@6}7@~rRg5h(n(7WnOm1zk)z`L-{&is z5G5Q|lODY3)+|{hT&zBJ<3NFAvrwA6wXvz4E22I5+WotAKZ6N}{f5)lN9oIFX_dQG z71mppgFtupQO04s-TPe}*-wjco4SO`4vww0IiKd&HU#IwU1=3apI61^fZ_K`Qp>h6xZnX|2m z<#cZgwrKHM*b)%d{j+Wag}`axehp5Z=xIu0&jmfx8n?*SeZ_FXMx%hWFKvo&9XdDa z_V>x#F`$kxe}#_Qo(juLwuryrRA$&VMEta`rtY5rW9%OBKY+^lLZ{c_*!z9GfO&5)9{n#FC37vRLDUN2sV zKju5$q>HU$xFk4$u5>w9q(lQIU4edtcr}w$_bX#=awv-dP0ZY>bApAUKqI|uH>-=K z*(J+4rd6Jv9(;$Idm_B|_Bt+VYP{jD26J`gDWlZ+n=7~tEO87}y(g}sMXC*7_e$)) z6SbLGT;(8!-bZfkCEaHEMiI^i&u_Gf=b($0!`fJVWnt}8$cDUu%Xv(iHr~#1h_*uJ zfH|i%C(+`M0$g;v8q7=7r<9$i!FLvpSAtQw^WQBh`|hsP4hZ*v6X8Or1q7pavarNPxBpO~s1J?eKOL2LRO8xx!Kinm>9(M1TID)sQ%glLX$Iqy!5vtg!McJgV4D^R z5Sy2>iw4s6Imw~Emp$CLoP6MLhEwdw<0M2?H{qxrSzce94mpuuAw^w!LHZS<51~U+ zs(JR1gZb^tlG}oPW6marnSL9Y{@tclDUk#SRpjy>@LlQLdjU}#_G|&Ghli;XrXow> z1&MOK@35%~LkqDon9%H$FM5RV`Ej5rYzVcM6xC;JGupQU(A^L894b`C9hRe?H-#9O zaf`BVjwu=49iw9lxh8WEvtCAFd*l2LmYo4;zR|1+Y3Lr2baCM0#QF< zHj8qLF!A-zAKK*@8mZA!p2h_|1kmjfrG+`C_V5S~+MPPFz31ce8NBP?q;MqifOAXv zrU}HXd4s^7`wq_l9V>;6IO%Rkf@!Sa@XUq+_iX)hjdw4G=D#W~2s$MA@`W6{JvMs5 zxAN+*CSF~l9{V;b&k#FM88m0v<|3;H(DGtnYPCHOe{Md0Cv3m_k^oW~{wN$4j3v6= z;kVoVZG7N{TYBrII;NER-68E(Ss9oqaKYm zue8(QJW=m$5LC3T?Wguvp}nR+pgfVEy1tq&`Z8UElGNl3uZoW~0+InL5y6P-t6vBE=1nvtb; zNowWJLa#Fm)^}6iXK0=nigFh@r`z6QO=VrKG$pAsZp2<3tZ7jV(s3;8CfIpuXTaic zAS1PKl52dkf-Q*5S^VI=^MQe2r*~p?1r%k;U2jdfU)s*pOcqZ{ zLtY#86x^{dH`a7zk2&uyB=1aD-qjAvs71%K+wPINtKn=nloLfdxFo0iPc^K{(dhp?(1Z?#c}xCY_{uwSHdPhmVB_o7ewJp$b!xg z>Z{<{`q+3=A#aC*#i@f;q2O-*v&(ZzFUzr%>76>>IA>ux68{3--X`~Wruv|yZhcL9`XPX4$z)SBE85vs! zQ_?zWLcDuTcK8hYTe6F!g>@AQJ ze`sf9CK;234Zw}FMYwEPCfqMUcOJi)ynap8Ik}!VFXV|{&2{o15D%IuU z>sfKs{`Ysrqa1+~f-oN~R7y->k9tqNOESYvj19`BI`1RJu>uPT&Kc{g33*xtDVlsO z8z?R%EI~8f$L(!Uqr3Wps;hC7qVw3G`F>GvxQ5bcE*&R%$>%^#b3=;rg1?xT-RJ_LbPfH-w4cR z+)loN=k6ekFxR5!tGg=#K9YU#I{1=72@lz5asN-8?;| z*1|0TUFg{h7Ax3O`i|$(0?U|4rKjyYJ+6;S=7gue>xAS#;L6ymoh{VMO~OnCg;KvW zd8PRl^HTEb7(ogJBDj!Z7T&QFKT^2BwAfs=kdRRNl{bAKTdTE4n?`Pq&R;T2ly(0m z?oy+|4p$g^LIxWju9)`_X}T{NJ^m})O1V^(j#qEcM3La4`SV+LwtDWyisiSBj>>l{I>mKU^+T3wf>VRTWlIR+Z!c~cnT5t3aixBI1L6Zo8_ zbw4a5(~GLuF)mA_3Z&UFYCwty-O^k7wY!$$tdX}XgJ#Mmsk1Au_>f3U4t6fIAO-u? zfZh{lNN+r|26H}B$2Zqq!v-kIM+7Cggmq4ZcOGE}JU{ca_rTC5(bnh=zEkJIHAHt>lX=;=+%{#@uI=EdZ=O>Sb5CKQ2b?_DUd}P1&kM&( z{r&GfRed(6JEl;ryQ;i+J(@~{7)^2h_JV>2aZvoR7Ufk8Nk<*S#rU3zYwJyn~g8t4HWoL5(} zqtz@^os^C|BY5- z1BsuDA>rIYoVpswxaH@L%FMe4R`W8_m9Uo?ZNF&>Ray^!bOofscl_0pW%)Z%3vX$b z?aO<_bYbk*aB@#EqFlYhd*_mNXh1tN9&gg*vantQNqdQo;%tHNe920Q1cz<}anwx&Bl+|MSc< z4qy3$vRVEv#EKI3^^CJW)Te`LDnIRVy)o;avBKYWy}&-Rg2R5jnHzq9UBe^ zUo7*9HVpad(Xf|x#ews9R$>C^9|cP@2u2<`btu?{^H-??s^arrf}N5~CC!p*9);Ex zv0X;b2s8LQNQw%x+fyk_5S6p#Z4#Fo`~wB$>aEBQAW}VdtYSSh;g&p(`cdjFiAM7& zv}#x?^cKH~H0c9cR5K2HTL$*@+B*^|o+WxDaW{+>oPO@F)S|8fCN zJ7f<_ePD=NP~EcY%NI-(rGjqOcPX^>v`}h9K2m%d%d&IrUQ#srXxe+(nN$<8`&KWk z(%GM|l_KAj=-OjQ-9i$Yg9w5h3&eD!vhFysxW9d6ve=pMU3M&75ICdz(WK?2ds&YI z?OOTETtjX=mLDZ-%tV@u&Z&+Xa$^xDYpiE0DuW|>4r%i$SY?&Jn5l9!-XML9v%k>p zm^=yE2YS>pyRYQO*BceSi*!aXQ#7|~j1O#!x&A%%y%GZ4TkQby6L(%eMODgulowdar#*YTn1~qU!)b=`q&)y>-=h%cmvUS``+% zwNrgeYgJd zf%4t?v_)Pz9>vWW`EgcBw1cVNdJ-PJ!(C0~akIU%to6vflfvXXLdQlMJD1QN7kZ7a z3zAi@>ytanIhBZHV)3wj>DzL0FYzOt9gRm2GilRAlnjRvks)Jc$x4P8*vshDNrwK} z=*4Uj+t0DsvPj>vs?AHczjwX^w_Nyc;|*Dwi(#KTQAJrshnI?u`qifJ+2;b52W+Aq zTaz#@>Qc&S7^0rt^rJtVasrZ@1H86Uk*bPAn)6B z-SY{MQlqy*CuPGc6pp~#zvZjM^1ACd++F&nQ?INvOROw{i|a`gPtVk*J4y7JVx( ze_Y!D`CMOz+^3me_sa8F--zk?KQtNO^AER3kEiK9eIe!ATeCVVBbQV)X{@#^)n!9rW20@(wE?tWV=$&i7K0F36yJ*;XaqnT$QgvpGc6k7La= z-C?zD(mKD8A)mIIO5Eh53w)=R{ZLh8siukt?>Mv(3@70}6~Kg((X>P=#}nDJyeKGbCnRUr&=jT1Cz9il5@~6U zaUYYVeeQJknVwyRp49VV^>@d0OsIJU9~Sg7edMWac|VKf#$=joYBWa$BoeRXmB#~I zs$4j^JZQBvLNFXwDMbzix{`*B`*n6Mjsk;2q?Yd#EHhB^tt=DvW!hDvTZ3fw@udl* zCA?X#M^?z^vE4NN;e{n8AwIj5ZsmhC!~>WUKe3)kue3d6}sMv@QUL$0Y~$Z}5YM zz-tPwBY%ah9>{X?Hmhf3JAB7Xkmk@EfnocQiPo-sr||>qNZ~-ltRg=0CDTWeTz-WD z&0ym+d6FHZFPY>*4EpocDw7v301Pr|4$zW#_^2 z#T{pXW)XawR!wb|sNq}=8@F9wP^=9a0Bgtw z&R0GC;)pLfQ9W!$S7`Z()%XnuxR1xoVa&!Q<)_2UDuV2@urq@ABm<*`p@f_GU`7EnXoqAjoTi3 zzQdCDu4jZ1D@=v(b%i;m&cJI+eQzET*hYS)#r=9Mfh5)JAL^0b{BoAK4Jhb(hbRfz_r-#l#Qfz@dTB4ZyjxqaON*l6d z0XopO1R*!i9ArapK;EfEI2RPK?#jc=ncelUT7w0`5OXbTLzCvv+kYhd^*!=j?A0XF zCio7Aom+cJeAgjfBr~M_K`$dPRlo{&n*A`*KkP*~LOd{5&QJT2c}Rh9(GRs}nmZ~? zxvC(rnBf;o?N@~kM3z8|YB=RusZOx$aay_ZkZe9PUdBgDcplP= zZt6cecE2sqkv(J>7Dh(iW4kATUNSl2vp1@CS}3oLhTr58<84u7asrXVgwD;{B6|*& zYNF{~i|=1OSQG2dK3Dh^u>O-i0X?DX01a=88eLO3{PxRDnAW2%m9rH;e`1W zT-WDvUQ>kJDY^P87b)JVPvTkBu1oFDwEYw-kmlw!(c%EOE+mzPHAi`aljyMB&n45= z^m992%K z$61&QTTijFNRS_t-Pz@Xx6`h@aYJn#H2Ex*nX87_eBYy5z8$uMV|z`B*NQb(~txv2E(i=0Dp~ z?XcSpnJg2yiq1Zw*tt+>_ovkCl@y?+Xix8sBT7hGa6YGb**sXct;X8f5}#-P$;R+g z7^yPn|W`zR!_ZP-$AaLg}uuo**yIUo`Gl| zcOJN8^l+ti--&)N*ia@-X{y-O-4??tCJ)nBG_gOgZ7mX%dd8{$J7Z)n--AqiJp$na zq?Fi#>FB3TsKD27*@pmvN6ZrUfBEVEgZS3f7 ztBn`joGkxRd867X&S$S{lyYaB4HnObPt6`Nx>oXq+G?b}io3bAu**mjaBkQnu+|v? zyHq!5A{oXnOE2suEG}xw$D=;2cj{L{h}~k55_vrKp?P51>-AuI7LEK*PRDO(d03D^ zivyb(drE7aOJ^FVD*^&N_F33vGb;=KWf|Z?%+N3VxT&B2a`oW_vw9t98c+is+@9t8DhnDy{ls#rgX%q(k^Ui zOyl{>Q7Bnl|fB$%P&q@B9mz?b{zc0RK zIPwAMkz!wpsBN~5wB7%7hy!mv8;5!htT5`vRF?ibV*hfJB4mD(YtpU%y|sVAp#QX_ z@D@9)w;b0``BN+aZ)%_6|HsLxA1QzCx3T%(jy*8}rJ(Ba|I|!ROqZ8#%M31!>;J|w zfAf@{XO8|`;s5V`BmcIJBQ9~MS$wk(67bvvUhSpMhK;hW-{M)o3@Lb*0DO{;xMamA z9Tf%zfqFs53-%6lN5Hi^a0MPXc{u6ps;Bw3>Xc-5LZk51k0{cTOIGa-784-L&jmP+ z$l3W(BkS`%3k-5x&iinKX(k-nkhuBf5FkkR2H!no6ox9aZ8~|g{n^5BJ8q^wuDE>{ z3#7E!R=uf`HiRXBuaSqd4S$8djnmNLbQY(;y;-27)XebDhdZ>!9lS8)v?_w$>oEU-Wlmlkg&dDL4 z0W&ACYbI!s&a)0+ROJ#kqJjGOxfJl|cS&_yuHXgDU5uvMrlV##yZ8F!jCfDi=UQb+ zeB0e~uuW#YhUw|LBkQi?`ER)`Yek*ULHRkK`Zxwn_bG7y3qq zP|w?_5jly-0Cr9Nh~ zG&rAH?os=%)d!6AS@6sR;C+(IsrzZ$K3t^+6Q4CN*&ldt1yW)V)e^9Fwn>Vzf@hOp zd`OzbHtzhKq6G69IsmN((06CpD4NO7XYE5?Q9tBSdzVL$GrWwxxu;|WtfNmRNa0h^ zNhD?7EMdvHafWNUr%S53_rI4C;&0LPwWG3Zec%!Y4%tZY(=7*vRt>$6T8tW&1!P`}8rH9|=B{#~Cy7rhx3~h$7 z#UE#$ca^uV0FX;vG zEIyMYUJ!W{6@a)@46B0M)t$ttRO`djpq4MPJLnC&@2J|06oj@|+=WudZ+LLQAv)cC z=BlFpI2xN60G9}@8|u74_rW(bW}TPp8`P(jOob|oxyhC}RlA1OlkF=HHN+C)B;pNB zE2W#dD4Y;n9M0zIJn*jJx3W`;^%yp2a*9pqdP-vA?g$^almFb-(=PcA!s(|!J~)fn zPwFrTcb9JA7tbwBzzl)}rtiTzPH*@KXzlqnFRVHidN&=aVYfEPcrBpT-Q8V0vHaBdUPiWP2?mkHI*#kcIXLs z$PST6kZy+bkWTD z$IYE767pi%q&-k~cq8i(Pdw?v`eTh6olKtMaPz)K?eLhktB@*o>9{0%GpxlU67t?k z23LZ}-6KLd+$u;CyVu8N>v>aS%g95aV9@n+LfrGeU&jTJZ=NKg23UJ2c@bt42A^88 zcln>cH@;kJ_BpWH_=mj*^^!|NCYV<55dlyi3^69$=+yMb0IFd@ZZzP(9%jw>Wy4k9 zkJdj87n?=-;EVk|+Al@~G0w|f!BETh(R$CpJou(fS29-l-Nb+DbU^z4ThanD^`eJyJAC%ZMUelwYGkHjR~6kP!hAixOPsH%b= z&yV}$t?i#bP7GKQepEbNK5K_VSnbA2-kK}v^Nv*mwJW01W)yLWm?j7iO!<8_ZH#R6 zN}p`Et-uR^4ZIr{+r=xY0S}h9KKSRs-dC}{LE7kGm#!?G>|)D$`YOBpcnLeV*2<_i z!0grewDvLo*`m3bNQY%|ct5L11)wL-6 zdc=#oX20EquO?HqZUHW>8GcaXcOa{iCI+*V-Us9Aj!JX8OKsgkA%VwmtmJSAYq?7S-t-$ks&$Slr zmH(8WGn}nU+sN0A4?1Br_%7J*>}T807Uf}xo4Q{rN7PyfzuUY0k~HDnYVaHRv=zF8 z=(L>sbuqLpx#4TCeR@H_BCtGsXsx$~^18vixLp`*U;n=kHgw&oNw3(XCkodpLD@;t zqC1hB33!^$m4E}E8{m6{@=o#6>bk1Hn0X(6Qd`6KcNp zfPj?YY99pg^RdCMp4(li_}E(Q37q2$XKZm*JuuU6d9RV(3`nuh%GBMxY%qGfc#*R4 z9>Dnq3*tC#Cg320!L{&F9h?A9+Wcc@exA5&AAYN`rlb9N)SETTK+~O~?aucsG~Q{AT0r9&ryYVxKU034#$R7~P6Zn?=P0WLzW;Z5FyZa)FIrV6dTl8DrzH z#o5UbG$Gs!4WETM!RcR?sI|$OEGR84UTCyZZ{Aa>H|5QG`(B@D`S;Wj_1Z(tD(&N% zJ*~0BJgqKQml)Z|(xA5zhdLu#Qt1ELu&6JuZKB*FW|_t9^{>Vf-fd-T@!(9x(pZ18 zt4(;3R!56o6?^EhF;*&Mgt){TSrIWce8If^e%Mih1j$2XMcy-X_s8s~A(S-5HEU^Q z-2S<7tQ-cNchhoB;t{?1u<^OVcZOl(TB~rICOs$^RXPf^e)K6oSN%9mx7x*RvGkuyt&v8+{bdA2P!tz9pH(P&=0yr=ddI43B_pgZ=dtq&DgY&Rrc3dVbv&(w@`f8*4@RK<-+^uEoR)Nv0WQmj4`R zx+Ft`TpVg(>jZ76h1~HqH30uVG>e4I9XK?#U5XrAgH4lrz6@8?5V-sV@Q4^3xcpZg z_0M|SSUukbR=-dcVb<=HXXwu7l#8PNo^Lj;#R105?8%~uj6Nf}mTd{ioD#gl7Z%M0`1M*Bu5hJNAjLTXOFz8t=2KHj?>@+V zn21b)KFdATEP4hATsmz@uBDMx*W}h{Q^GoP(df#RLR5gV!)}NgtcdSX+Y0e{VpsSN zbKa&D#FO+%@=xiDm7Jt$akHE(d#^BZXY+<8P3vl5fS|+ocSIr2EA+^rvA_%;ytoVb zeUv+rEK)unC1BS>l(kOH$#^sH?@%~3s9wzlvJ2viN$_V2SD@?{=^$Uw8nQ_()=f-M zO8*bDoa)Uh<%)!s_)^XKhjUZr={%mMBIfty^l}_+!#BD>HwB8opB3buREXe)5Tg%d z+_a1LySnmTN~n!1nfI=Tpe~PPO4NMfOgp7pW!J0r9{iUJki2+Ti>?P_&Uzs#MrD71 z1^|vRE=BM4nT|5nGa;85d?j-3&@_d;JZmENd-SYQHxNWmL*aUn$ZGC%+p1Z&Wo16N z4b9)FLuLZq`)Y>~p}^{CB4-#eE11~U=9&FS1s*tk!e@Ow<dr_=hxoo`|eG`4DxZd;7A{m5%&o497 ze+5n>6^Yedjuu)57IM_+5M5=Tq1t;Q?AkjaU12>Dh>}@1u3Qa2<{6Tt-%*{sy5O}7 zdg~*B)nA#Xo-uyLY|4n@ZFb13PcEdrlP3QYC(3h)JaWkR9yl5}IxPe4Ah}zfOD;m+ z-J|{Q2L!nhn8F~q{mMMz#XGb!-lw-L=9V(j`M+Mt#{U6k6I1!9%A*hb-3^g%U&%R8 zQ)xo~S?^qQF)s_w(qU;MvXR(JY$pMFEnOyd}YJ+J6|M^@T{rl=Z+a{YPo9%QE zT|TtPjAK<6sFODP&z-9a8iUJ_+0;|7!8ex+T~cZv+L-^ZSE`hIhdsnT$Qx+#M6Zch zzO>2hU(b9zE$bj;iaVQDBrjh#wwZc{6|2eCv%!-<*CQ=5&*)w(wQMDtMTIt#3W>q7 zvjS#(|UDwpLe@ol$ptGwXbuP)oUs8ucK+1`Gy#nHU`X|(}A`I5t^ z+5oO?;p4g{l}fjsu9)&(Dc&+U_l>d4##j!O%Z5a`Zrd{k>yrnVpMv1UC;VSiO_!WF z^fpY-_0VNIyZ1hpW-*1hJxg$y$wo`c(~t)*@Nyr2)^*ajWxc{#{@tZmG0$s$gD{HQ z0G#CA&&tE>&d{J`CWM~qWx(e`0~)O_K{q32H|?*=PrsSo{$AyJR_oUT60yr5>w36V zGNSi3YSeF9s`|r3h1TU{rzc#IAf#=LIx#^q(;!{c(qT2>1W!#h0>x*zNbxxgA6Ah> zD(jTtjD6f8z9IPNFR7M4wsE_>JFp&noM@37HyUZHJjC(%_+&}E@jK_tQ}jK2H!h3! z(V|hi@mvXID|8cY6_D*^PiCalzJI`53zSL%L0;zhT~w`Em($q?(vZFqD|}I><9QE{ zbhGbmj;^`kf^uNC;2ElYujmq}Q-pr9&8kO`vl>bjmpww2-9O|ZMbxr_76TeE%FB?u zY1V}3=EaGM?uCrq+j_>^8Y;}x>!Ge!6lC%a^Q`=UlrY*e56W6%0&=}rw>AIS&jFm5 z0nNE-qJS3iq5gccw-&eLj88-!;dT`1_7-o@zZ?njlv}+HPcVC%fZfM~_&PsSuAX;U zujE7ekJg&=pX)6kgn&p}ms|7@fk~^fuQrro$kmF=;NYN-JmbeBwf9`8Qm25K0wjCZ zofcdAaUamN(v@D8x0JgyVcU%0&V>tsgmVn?W6pi@d_oQhg1bJrM&(W{{DIsV;*$lg zyR~=i-Y^r&1alZEGGZh~LS~13UIZl#Sa!)Ca0EnS*};Dwt%J^{brsS4IRCe1U}DYU zx1Y_b1W~Scj;Nqm7qRS(aEqWg1&0g81Zk7L+UZ>&>F9`NWks5bSf-rf%pem5obKXX zR;9WS7Nd;MK9(SkHl9B}*=C(cK`~nCiJ(zF+^maPJ>T=T2Bq%$Q$>l=38>drT=1bl z)xMrxq)Qc!XNu-KT+XJ97cg||eDyhD>>UfY(X?!9(=?cjJ2$DU?)v0iG!TQ=okHNCqFsn10Z?{-B{xDCiCkTmr#Gb^9|~ zGx)ZT>Qi=kiYFhw*=k8Gpw4r};s7dilWQ@-?gR4yAO`_4hp63v$^yGP#JcQ$^Zmf6 z`7uODm)%z-y1-j~c>Nuv&W2W3riU(*mTUQis2V=axk$M!u&J76oE?;RD2b4lSWb-3A{29;rjell_x!b z+l#r2D2(B^_I&cG(eT4vxmL}suZlVxOOIoNU$*E;S`WP!XwLugMj!jw0S+f1p?ee- zuEVL%qp0Zz8fP7Q;+v%VF{s~pvV#>EEQ&{>=!fiB8s6&@HlyvR)i+y+My1-{c*TeG zZO)?S+&U81l-Scz(rBM=fi_ltIfDiUIVO8EUb?Yi>#&HUsTy%ylv*K+cW@{tt%fZ! zs1ploqqqYH&7GTrX$^ID!Q!XZu44vB3-)s;)u_|GNvSPBb7f4d3d`%++P_(rB3=E{DTg zK6Q0vTO}=I7|`*A7<5As)`ZvrWvg^c009dfvPo!P{OkxQg5wALz;QH3VciL8#AhGU zS~Xx%gI_JU4*~CzCC(3Y2X0QjWplCW5n|uy8OxjotplhTi0!Cq+c|=&Krk+f#{eZS z&#;npbhFUu3CO!5%-@mlcrdtw7OSBBupxKl3`o;hWUdn_sQdu^3nHz)wFhxV^_I6y z>;UUQ)GnL)T&~G!oi}Dodp)lod4t(?OO6obYHlHQ7D5s#5*qgGk^>7lloid+{Wvx; zEK`3&qy5=nlUi=HCFR@ryxX;eGOe;%{C(BWnz|kt;!~TxmP1_Y%1^2yS3vHZu5n&m z#=d+)JBC8=mvK^?fQ&i1#ZR-{C%mKdJz3|KX>>t_bYM*F-N84rZCXp@9BR~;FZg`B zP0;3yWg6TOm2HH)f=5`nq-EOzO!~#bqmEtvql$Zh+I9t>K8kpjnixP$!Vn@)1lA09 z2E;xbdKjXH+g(15Z2wgkIjL-s=>lR{qcM#@?dG7jjj(+P3VzS?^W%UIv$bF& z8Ghg7|DHyqsQ4ncY>x9rFX*2~vwY4DgT#l(p?SLZ#!E~TIuP7z%?~1WT zjD7X%&As+65LDgR+)!caZkYz#XN5=VnUa*@2Q*U_;5tIq8>)0!~ z+)BpX{N_+0lS29Qo0g-3MDreHkaMp4vByd1v@&Z$_tzX3Xh4j^E!U@avb36bodQBW zYZa+@%H8S{rS&+L-LZa%^em#x>}I`Dj3&v+H>uKBCvj2>_PEs?{8M#4-i92OML6%8 zC}9F|MC-(O80_pxeSV`K6f5pxpxNtsUpIU$Gj%oriR$ACy@JrR*>bCakA;8Yib6Pv zETf!FpnVlX0)BBfF2>X1Np+NN`z%YB3VhY>7z9F`dx5liyROGo0`8BGc2!$44VT{c zR_1Q))sED--me{dXpq;DkGVm*J(D&V;I3C!*dsqfduw;@f7 zPUsBdKV~GvSP(C>ujW2K_qn|8=Bu^wDFWRXV?ln+MwAw-aup7;uLn zMa(YDJrCXQ9`Xa3MoxJ>iA%g?4R6w%=eKByp9iZd%}V1 zhQxQBQa=sJ=>^}fUWiT{3@7RRdh(%+HX$V;3bF)H&<0Ktu6uIS*<-OlY`B+-OCA@R-YC z9mcwSlonMy(P;-*64Bsj>8b}+K7esLf{r(rsty`1+C;F6&gr@F=$>8i-O0Kx-fhPhUgMc-9=2>le-!e1w_PVAd2X`n?5{7}SP6RiQwd3v2$ z&Rs3xN8SKu8wpDxAeTlgN<&xWsO&6Mz-CxfRr|J~G)3114-l;TYnh*aRCs3Tf zF`xy`Ay<#T5I}YE|qUq+Q_MJU1*{O9O?L&y1)bKUpOv2|lRW zlj^p2sji`4sRMbQO4V!+CxB>9 z0eju4L_vzM2oqg#6~e)#At_M2TBy>fF&y8jKb)vJ?_vXY`uM%QKuD$%CZ2}H+4ebW zH1H^&q*yoH`3}r^5WT~F{^xrGXj25Q2v;(S5-!66Bp#yHsF`k+8>GJ~9hgOb3M!4| zOgD(i{K%P)4(V(&ZBT~=U2Jjx{*GmE2=6N~6w$yw{bN4;mBckxPiRVl+A|tI+V2H| zgw8>pJioP3S#q}5?QaEYPxtzamF>2_`Y`PKmH6#V^*o@9T8rG9%%B!OBZDq;x3D3Z z9!nKFg4fMnbd%TV`q=e5kj3~kF$^q=As}Q$v*s@J%uoRH!n+6bLs`w4!Emyo-!8(? zWkTvGT5hI!AC5rOj}VW}U}J5+<2S;T%1|0tmL@g&0r#BV_#1A29TEDHj%w>WoY?1$ z+AUX!;H7<)ulHU4Px;ld7?fW@Jt$$0`byqYQHW6%NuPkrGhKbFroc;_ChQPS6U9`0 zMNO(3MOQ^np;ihV7D2*m4fT&Uvy8$G2@+@!2F zzGRci_8d4km6YDip2I{CTWD<4RWC{KbB5uCgr!IDaq> zF0FRO=jv_f>OEx_ZKSnjtC&2F40_Rs zS1`YxI~8I0IR@ zBY&C79e(Cr{j0qlBJr zl0$katacZ>v|R6CVgeRk-T$HPt)rUWAOCR!6r}`}4gm@2k{qBSA|N1*#3&Jw7)Xs4 zq>)fsN@*m9f{Yj-<&;iA2BW)1H+-M-zP;D`KHu;6^Zot#JDhXR@s5qX>KTs|84DiY z_N1v=G2Z!o)I%{~+KmEiH;#%wR!87rq?M4(Ih1m#G~M#gZinhBV*t$Hkq7)0W-gug z7Z-10G9iAKa$z+&)YZz=Q@ah&UqH2`fr{)ZX$v~QuslNgwW>VKxgU!huaEIe@!PQ6Jt$+6Pz2Z^X-y10|vQO{Zy<-7COQU21sfFbIaD1eR%6~}$w zU++wX=5DP6)_*`esP;>~ooMdg2a7*5sU1L(0wvgKiQ{P;tACk^zS21ltZNNG>qZCW zNJ^knp#gF~gY}$9W;xkHu$@f9lv!&fg3zNuKuROm^i{r<;(6*r!#W>t8UW3ZBzruS z46=d`m01fh5ASZwc9IVmIjOeIw(uZGG8LmD9WQVSNYsTA7m~DdFxzrq8v=j|SO0g)F}QQWB(qk@$2s z9vn?1ckJCIK|^aiT&|Q=uhx3LLISYF0f2AKmEQ*giS9K;(cR=;s#+`-O4YSKi|I}h zr$ts{M*h$XfE!Gxs~ga@d0~pY6G_db;id{9_#F8)NKBSGWUWaMpp_LSYB;FR-n63` zU3Msu8lla?_y~~r;WxVtg^x;=#jZVF8=Ponk1+ZbBRJ#&u;bW?YYh}N=NX+JesA;y zmX5fNRw|fxjLK8Ha>-@ayrI~wLAAU{eWiBg~UpP%IfF;hdx&o~Dbks8qea6;i zKJ5=KsYt{Bg?jN%V2GC!uND zxQjsm#l%C|iWH$cZo?Ih8uzIJ+nf2Ur_dgEa1*b;iV;Ico0^J{PwM|XF<(e*Edkqb z3nvUotgLA(AiPozHh)oP;*SgnR(rBlR7Q_g31QvQPf*`tIMvC3K+~;Fd2Y_EP1yhs`2@^vdd3R=> zllZkPbdng}8xwx;wm{w+`s?c7m_b82w{F>+2(2z;{g@7w7X}0MbQaPc+KOZ`tbYHy@~-AvVvGBK?wou z_z|nDcotzni62WJ5S87u4&rxuwc!Q5@mVG9DWr27x8D$S`J|HUkGmS&;Jnmtz8raET3s`O{qHZPkMr2g4Xy*668PPJE}H4Np*N?A!Moy35A4!L zXa4)5n&MfQdYga01wUx003{KrtD*lg(%mN+Fe`t4WZMfu1penggY-Xt@*N*-$=J<7 zy9?!`GkbP;Zs%WLlM03Z`Pcu#|HH5R@fZIAQzZMKPx36%{l8z=#~Fa1|DPV%I}3u< zcJWaLDA2bGnl%J`BCWLj`6k_84j?p@Zpc!K zSx`ejrS~;aW{p9CprK6|g8Oo|m~*u2-{bqO^MEN!7JY6)fugiu{81E6Jr6`O4H#G* zOao%Q#o+058jO#gKi%9S~GQH>fGZ5fvBK$ zW$w0__T)y;rAi54xEfrC^lE^ieI+{yohaAW)?m@x0}xj2{OToo`zt++w^_r-76x!d zT$em~px@c^UpGsFaZ~N?q@ydvg+TTqUjdZq4WQQPfzDlekdxfu06Kuq#ob7QpUAl@ zC>8EfQilZ#xG8jt5oQdFDTOPqKQM2?W=B(>F7ycIsp{e1#-DV zheDHuMF2jMWZsM5UW*x;9rYRfEy4TiDFC9jE)9R`wY>&nfu{F$PO}}PAu0hafIiWo zjC?yA{>8GE)0dKqvJ}7ycc~}r!JNtNSm8Y1lc>&r>GKIVCjmgFem-CuuXV=(>LF-r zalnm25zn5%kN0L@_DuM5QQ|?I1R4!@j2*JMvW`fdfIVYp(d5K~M%vYO5P))5ocsDg zO)K5MOK<=L-#Vr741+>#zrD#xEQk!@=-g>P3 z?ivFHA5l8EYs5X=_KJwJslfED1G&q6$IxGpI%H@d#b|;h-M?fR2hNYQT?IC{m|L&M@HN$$oRm>U&n)F|UpP?+z=`<( z#))`R2oRCE7!+?=bViy%lv=Hzf=@{)PG z$k&3RaZCyb{?d9i?|+C zAN_g#z0QHH#b>cF2ufzTyM4K(nPJu`is6hpP|g?9y&98$!SXPOjFFC7@=ntj;gcAG za&AqKM-4_`4((P^g4lKt3b-_8s2MCL>V(rWwLi2DRcV+i5G~ceQb1?(*%H#)Hw#3b zSM_9PE-N+h7-Z8{rT*syax=quY1EY8yC*AU z00JVv_V2}Em(zcw@Af7^cbT98HX4%Gt9n>E6~?^^XZd4M_7sgCwC|nD$kQ2G^kRRw z!#ok*Mgzq*|N0afposA^i;E*b2>kd_tq-Wa^*P!nTq4W4EbV)!r%2<) OuyI)e0 z|ICCPX262L6J=j}r*vj6UfP7;i?abJ$#?iAf~-W^jO5?aQg#U1&oH{NHu5`playXd z%OP#5B)oZy7IdGmF_S^cdoPc9IMw`K%sw>%3mC&Mjf=#E-U5QiB22mTIWZX4D6@%= zOigNJdeUj8>+gNYoHqWRb#MNj$wLnF!5-8O{#x4_(wYjDJvrnt&@QT$s-1ajQ*~s& z&z@k^LwSZydcFHrAzi1xtMqc2mdfCuvCM!|u}PheW1NTXd#mod$NIxj>N))}P^Mrj z5iP;pD@HyY2esmVjYj}R0E=vLgtQD8@@+ZK0q;WLrOszF`+5aqGGi~!PF$Sg4FRh1 z*=F^q2xhrj=U3_hTT^GrKL*Zy*fhUV?+NJIbG2I$MTM+UHHA6HG3kfbuaSB7bUf=# z1F1^*Nxkgjkc7fG7x{FCS8UAsI_U<;FAi2s7Hi%*6E@NRyv=_g^``;cQGWwmgj>>r zUC#B%dKby{uw8l!gHvm$RpK_V2zRx5$5h{{JQl)QyLi~6BB0Q2STLr#80YCE(q!=V zN%rVxBJ41IC>IKpWlp$N>;U5#psasscgiahN5M2Ukvqr_RM2+1!3gbvJ$JAL)N|rM z!8q{S3A`}@8Do_@QvZCjl6gVP9=r>XIM7A|8q3&y?=3w0ry>EqjJ_M%^VNR+ z^?90A!3-ZDh3a+UC&D^2`{6_ zw;sZ8HE-B8WckJtW5~hkk{^A64a2@(U8-WuO=6kd<|Xa*{S7;&Y;>+WbF##`Va#~O za2zDnV#LI_jA7N~$%~C!0G0v=YKOnOAn$sEYkZtiz6!WO$IEnf)6N9xJfNk^A$zDk zJ?U&n4@X8}a)G)~0T+L{x&rRm&=_ud_mohA^Y+ruaUk4^*x6*IcuR~0qu9-hoD-zX zvXHQw0exV4$E(Zfg1JPrlgz3~5cd+VepbJ9!O06)gm|D$Kw@Rc77d&FVBR0m2AnNJ~j2-9fe4d&tv^^ zlYyZdW!@a-(66JXa9jPzOeCZ9$NG$m)_49u#XPOm5X%KZ48`a?F>$2D0BDM(n7z;& z-*?$%ZZ>;0!TkF#@6|1nCt&L%K<*{Qe6*G3UU2(pWaU>Evz|LpRk`iN;l2~#Jq zw7|!Dn)5D|#x>ciU&Llq)+l7~QhTlASab9pF1~;J+#r0cpX-|4niSiR=v4fHPy;1P z%8XxEOi9dGvs&P5(pW|GV9s=7xXRGp#qVWT(dpYAQlvkV}mhqfoO`@)haRx6a0hu5QAQtLdtr)5o22)RDah z>Ash5x8E+p;myHai>yWbH8tNdv3Q3jgcWGt-;YLfNKvg{#GPXr|MoK7%+&b|&G7@Y z)0Y>gvymetifr~8ivF7vNhGN`PV9~;t~u*!)TvDC3?fe+Z0h21!H-V4gjylVU(v;2 z`=xjrzZ*cqo##X!lUC2^vrg=#5X!F`WFOlF!y=!U8lJljrzl!q*Hj<&gnF$tSI~(Z z%%9N-Xg_(aRd=&b{J^K#hm4NurJd5@@R_*>45nx_;u)<1l0Y{fkdBFq(AOMZSOE@7Wb zJXXTE>;qkO9<}WQ6S8Pd_q-$Rbkt$H-Q&^DXgkEu4A%{zff)Qo>)mHsJV5yH$~$MW zxuPW8^b%MZH!t}&%Hg19>#pC{(Pugp$= zsmuTpxZ9*UsSXNGE>1ZYUu9+JR>{3sT~hrtP(7{}^P~3Kh-_-VZ2p)+Q%;5(PynuB zA1W|a63b=1$~%vSLM>wTh-E0^Jt3|Ru$*Epxh>}=3dPuo7N+tkv^ZQzML=$^ z>Xb_$Qnxew*|KKM7~>QEo7OW0qRhaUB4h^^wVr~x1D$Vv)WEXZc9EFx_=VBKq|?OM zow}F$*Uc4Q(NM^t>t8aju2wisnsa7z+49@_3CP8}R_%^};59`$3^;N(O>X&B`j?A& zIy3-tAR45G!dWizL2COC7gfn&-9u-G7q7$f4Fhjy330~qnX5ELUwCFxf>iF4!QRIIczK`t1*=IUn{d+Q@Pv56 z_g4^4!*3}*h#_}TG$KIUqq(7W)Aa_)*6rhduiyj+fICyRv>J|z{IxlGCm>>4Z+H#v zF5k((=h88y@lH$8Vt^H%z;A3oR|^g$EJ(ChGV^i;FnyrCo|D6F%D?4MgL!#vg*;cEDw|5cx=oJd*Pk5=kn#!-8{woH?~#(1IQapeR=$6U}FfjDn6W2DE z1*w~VVvBP&;Pw9j@ZI?=u3kO>Q~6^j3clK{4X}3x;{CCIecrFXTgDD}f^*e;_1l<_ zGj)tksa0zKdhb3Rc>RCCroETjW0totntz{#KaZ3TPZ0h-#Q&ToyYB!dueVnzIdU!B zgQ1Obi?#lIuV3xg{}D!aHSyed?0Hn)_xJAQ*WVCL2arDg=g-gk1%BKz#BVlAFqF1+ zj5fy@p@ICxf4%n|Lg@d3_=EcZ>$TB7-mhmudYR(^7bY55unTB%Xknryr-2k3yIBkn zR9w?#^#GtT4+1U8fglx>?ZI2o{FTjx&zY$cz!1(00g%x+P<7XAO&kop0MAbr z#X;CuoS-4n-WWynj|e&GOc`=PUaY_<0!8%DV9PeHjt~*N(AO9>nMnV~ahBoz%ztQh z&A?(#^=ic);j?;-2emEs9@dTi_rCDg$x8HFCvi?0Gp=^EyAsY4fCJPc-l|)2ozBS* zUsZ$yd!1&pV&LN?0sLfCns&nlZg;}zIPJvtWbt6IzqyVN4jl*UkPFD+=PER!PanQY zAh%ZA!3SENwE8l5lH5){cGGJ>G1KbV4o%Kh)yi);iFV4$Xu!nfU=HfFgY-Bg7j(lJ40%2MKkDmT<5qY~0^k zv|u>x3`)d;Kt75r7hfdx1+21Vv&ySH6xc6K44VXiq>Ju@ErhSkD@JL+V3)95Q_e2{ z>S56#zc0=FcLn4>B+2m}NODU5{97#Qs8rP^KEr-Wj2DFOE`hKEGmty`QMDvg?DiZb zc`{J~8XqdsrtVLD+Go^zClGHC9^(BROich_9`(njhr4S+axIEJQ<=`ZaPLO7$~D-= z@6ilA$9}b~c+{C-91PEkxy-NN%tSkOn8<5D};n?(&{|?X$k>O)fOfku0S1&*ac>VdQQ9$MAX`N_;2au7{0uF#iNdL-W5~Psp zuXQKteRaOEg151SU+k?hFM-E+@BT{`#bx z(&y7HT=2E)xt3}sx>uT28fWS#I^p?iM3crp+_Np}F_q$XKaLgsIS}6R#M4t3ph0IQ zZ(HUq#`75}n-h(B0)$xN<9`t1Fnv{lFMmtz0`xattv$2Z6`M`I0e7O;I@mJw7rBZ$ z>`)LN*E((T7ebsLf;R`-S_GAeILma(krp^%%h9Br%X6-Oo*6)xmW;)rsStKp!i#KcKbSog2d0H@S7YV5TMGSzYPe@Y+nqk|0m(s*{a!D_ z;|>i(+l8-<$z*Z5;L4@CTn@PKZ>|@JU;uW`1ijGaOjd+?@qdtw-FZcrz~sHzttmTC zc;h{^Xlxk>NK($Wo>4QHPuhI`{y|l20%1-pv)S`{&)xChU;x9230^T8FJWHeUDLNG z6L4IqJ2@5v2CW_jgP8&DRD&6udGbUYCJl^UYYOKCtn>@R_E78Z3~}YNs>KY%vMbwv zaDBH9M8G*Lx=QH|_Z-Sh#>9n7cCcNdsGtn{B?c>fCg@Lo`s?9O{B*#X24@Ysj`~sv zZSz+-jQORM5_i(2Fva_I5`F``BYy$BjisT%F`rnT;>Z8iIG>de_fG+pps&3V2uY}$ zAHN>!2XSvLRiGfS0eJc+GE7L~Ko!A*TICJAv{I(Xz%HrzQ(h;?W#-PQ=X?|LA7NMy zFXe}4XZuxZ`&9^<_5c|(VXnh#z&?&}e(c0Fda&#(?@V7E@yA@<1qD~Zl@0Ef>W(7u z?cedR>PUI?cBjR$Hnf$~<9az*17^MU2~M~gvG&#ceBI}_jy@DWK)~D^63o4>4f4~W zIF(r(>nVyaM0&D2^1lRMXa=VT39Dpmn!wU*b}40k$9b)o6%XRx`7aO`dPm3ZUD-OH z<1U$i`&>$Z96C0V5au~D)%OGYTdefgBI9>N3BYNQ!wk?kr8~Tg>xE8OSFFOKm|HTn z5N=xF*kxWpt=pYhMEtLX7Jfy<304D`GsHi%L4*)dPU{l=C)&I;zhmE>pC#iVqvW>6 zu>OJM#TFOK|4h?B0EnkeGLsQqg_2d%9SOvvp<-`9z=}`dzq{XzATF@eSGJJ$=)A@fD}2u)eX`i%UlA*^%)Ias zA!qa;_-)yiFD%uEO7Quz(G?IRm9&L1+q6F!u^Upv^f6v``+KD)n&6j1j79k^t=ZYX zoZedW9zf8}JvisO%bZS(WZJ1VZYoBh7-m5v)7p;jMkOxucKQWd>HJ|#X`#vTPNl=Z z1!mHi+5_9E@~$+HA|HVQz|ngwCa0o;!B%$xVBoxV9|K8r{378B}Z9; z$iqsWEYj9p9;8ZLUD5BZS^5Gyw1(Rb1%rM80VCK*93r=4k8Y{0_Tgv9Bis=2!;SU| zg9?TYab^(!&p*H{_KvrURC~Cw!zDZRupdr_TY04iw`0HEGRitL`2u$M2>$HrY5-ep ze=TaFCz)@Gv4}`RtCG?Ah)nFCSj0 zI>chywsj3cJfP08p6}mzs_%QP-5eAdcsG=VfZ=t0WATPAmBV|_$2~vXQH*4u#amLr z3_oC#`X!A!ymw2%?wnMzAM6lOcQNY0$bPxp)r5Ii$K_)2NAv9+)-dNPkJ6P7-&_5W z$BRtRo({*GTgEChZsm)x9XAl;E@3yS4WzghFFIVf?fWUr zlbKA`Uq%28<=88gVfI0l{J&Y29w~Q2j0=xvoUg%+b3Vsn>XB(OA$6Zb1+{Hh>*8Us^F4i z(~I>+uDYEqIr5#<&DV)?mU63O>amb}Bh%_o_f)&R?jQS?d;@5A`|DoGFW+FEKbiWX zey%63Xns5WdWUgJWcPrc29FG~FbWl7V=@)T{F@ePm#Y@EA zwk+EA(B54sH@f_w^wQ-7hIK{unQ!OEB~D(be`To-cpt&VY@Or!5LS5Kcdpo1^HYpx zQzz$D_3^o4)dK66&xQo+YWst-(#frhx204kKOF8I@fWR5)*YaQ5F?{?J6?O?zKpBh zi)ee}FF0nmU0al!W5gPA?c3;T1Kn~OR=wx2*Q@1cMwO9_$6`(VLH!R4<6y7Z0iqpQ zhsjvfIpM8|gvl+#|K!1QrY#Lb2kg4h>_>3H>%=hpu~d zXSPTFglp(dswTA@_CQNRkhy#@y=gmcFu$+X8nb4&obW>ib^p5aK)k!bs}wlACD;NZ z+_ZWA?6K&NOnC8Q>E-*ujIW7RMn|n}q#veFWm7QNpbu}~D&+EZS>ow0UErv}a)0J? zd@Lt6HSj!pQ3%1dymM0B`IY*NN7C&Ph^)8GNO!%SY>3g2c|zSut3#&}GifZ~7t_>? zGlvvIxayoS#>u+RUK(H=o}S2sPgBRw-!*J z9y%Z?5O-|Xu&PjOy4Z19md-@f`l;x0u@t*cnr|BOxR$PV!pZF1D6xF)@vI-qAVaIn zm^G@*=i|%8lmuEM;wi;PTf!op>E8WH&&2E8J7TM62YSvqw6>~_v{uwTKgm)1o*u|j zNu4G-)%!8>WBTk%s#k^DK0n_=Gs~E*-wY%iBkIVEoQBgY`SUXQzxQUOXdZi*UT@RahLndGP{d{sL64b)pl1h;evDlbs4sQgaFqJ(nUzpsf zQJ3+mxo{HP%<+(8-Katzt1W&szX)w7b^de$LI%%>IToXhg5k9SoMGst3XEmeHrG0qRht;j~WsU&50 zPmaU6xX6e1IR%QY+-xiV2kLI&e-CDxF>E&{es{3#&KBJzX>lB=hEgCZC zf!a3A(WLT9>Bg<=LD%Uh(y0kUE`Juce(m;Fw!FS@y*FNsF;#Nm0UGx}fbKYS&@89- z!K@M1?5Eqx?eviGY8w*}NMtQ1g^&u0=p$s+vQDs3Y3`1HzCK|(`?%$lb@;4ud2eKs zdaIgI|K)itaX|#+27&;V?a{G#Z+bD3Z{nNJdf}EwZ0cTlUhySTBHvvesY*pXUtNrOf60bK@yh`^ep#u66XxU}8RGtxtFXKQw?gmdlr~8b) z8<2IBjWC&D_RqZWWZdBuQhx-LJ@ZaEb7>}a^dYTmqb8UAt*95}aShtbNm$|yu{`bL zL%KLU+0Ri@j}Bi(DXKeZFg7L^U;Z3{oIWU*;fEV$uZRCXD!AeDT)CeiuN*SjzK!CRL-8eyBf_RZ!Qa%2@wX*t%ZJ#F1$5S2wUZ{*Z?pW>RAp8 zYE}Sm0~dD5VsUl6y=hSoS$XDR^BjOiw9QYE)5A)fGzuawVGbF_L-lSfKS}A7&Q%s! zec%LnJ;&RONw3gVO#<#x~W@eT47(I z{M)gp+{CqbiuQTOqnsi%>Avax(jFc964hQE&u>)OnRZy8EOq1P$O&$8yZ(4(dBcg4 zkV_d{G8~@VKcS(dJqdX#y#qoWtzVrB4kZzzO^CkofE!^i#~ym?Rxw#x)v}Lh2RJZw zznD$;_#zfSQFk>#g1cboo@*8>HC3+$b6BVDTF?GCa;Qv`zOOe3RdSmkMtpv8=!eT2 zOhau;+)&!r>52*JKpm9!)bq}08aB1#H^jF)YVOTX58O+uTkisQiiv{DBWKc=U{;I?ZMZ|?EKbJf$CmZgCHLfP@scnJ0-nN;4? zxXe;Xqw=g}IC5Ix%s|9qj)361^XA?1>Wm4?M-LxJ(^#j@kh^tEqr)b8PT$!SgoQ>@ zIK@w~dm`J%+MDY<0-sMC_7huEt!1JH zXO>M5J{EBj zz&_i(`y_lbK!OAo^ay&GC-c0%b?&k;GOi`v1O}Wq^{pGXdrcmvBl~wuqz!Pa_X$;x8Vx@OkK9FQ=mN;ZiS5xb7@F}<*nF-LL8OQ?m-B_^ zC>dJA4Ud|~s-7Ev7CzfnZ?X1@wcc|`Ha(0{v0Py`6g}LL#&06o{aSAL<4cSDUFFG~ zM)YGRhI5k3FFUoTQgcx;@v})e>Tii8-ER--1;2#1h>W~3@rZPfZF}F7BGb_0*L!Ig zJi-mRVmv2hXAvDW>#B{H(>)qg8q%Qza}t=tC^7@=UiMk^aJllHmRQh(9G7@<>nHqz zj4tir?7j;xD=PUEbb5$eJeT7c4~w(V7O!`8a{1n`MxRcac}SYIXW zRSg!^`&2_oPqLilluVYCgZdDqyp=Mbnq8jl)nq;8(YAR1K*1#rtdc>!82_07Lhrmx z=e*+e$A$3w~+iPby z8GG7@IcoW$_zI1`5Z@{?yOkVUjhtDYJ}T;D2DBk_Q~uah2DW>zh)S(GBUveb5r-4) zIe6kwiB0auWq;}@(eg()d(3-HX^+LK`9%_3JS|M&bz;#r&008>@Utf)v6mV58dD+j zM5RPTP>LC?PZgINQXoL++6bS4f>k0J6A#j7()Ut{hm8?7BIo5BzBdV)%cz17Xd(yw5t+Z0ekYmu#38 z;Bzy{D3m;8bg13W%kN#08J@o`c$fBdD~V(eLsyiU(+l#f!&jihta*;$vCj>=uX^4f-qvGf3D^^@$Hrr(t8{3kxnxH z;#=i6qB86ZW>9~P2ZLLs7Dh3{$P)ItawWvjqG%Kdw3=?d1ce1?88D+nZ!q4|CS{`&o#L~2D%}%^7n=HGJ0Tlw6}z!Pq^0EAjltwmjUkWhk_ZtJ z@t#f~_s4R}Du|EGftI6vp~WD(vL{1__w8pOP^$=`;t{gx<^~q$Qo*Zd5{`gq%l&?- zfXC?OQ1odjMpWF2+BaRgp2CWen$N3c=Q&b|rJA^ry34A~$sO*7l_KL(&+Hkk^Kuui zz8CoT&Z6j(Wr(o6wWo~_3sz*Ehx403Hq-+{w(!#9y^n`9Y<6IHadhkF;eOc|-zC%w z*ML8AluP0<%2^-zsPCbB-`ipejEbUH zKfXMX@F3ZWkPn()%a2WC+8()Ri6kxZR-ZI1b4%ato?|huVBJWiJvOnwoxJ=rZ7`T- zl@tTN-Rxi=lsPK9=BAQ)y4-5dkOh`@ImD<|C#~Znj1XfhZ!>BmmG2EmUsuh{s>0g( zM89p*7w@e}ZpY~JAuXTc@BjlD1wZ&INt6BbslB>Z(P|U!=Y3hp6raEc*|g*sW+OgV zjg%u~ikFp_6UlNPC*F{s?WMR7H-VgV4=NINj+G1YLR!!+-ncCPopz{o*n4JvASP(i z`Kxz!33U~2W!-kd{PKDP925a5vMIbEu~=H0KJlb>UD%l*e^_>>wi1}@3O@HWL{oaiefe!uJ2>mG0a zM>2jX%|~l$^GNK!)DR$<>3>um_+WnQ!!W<|27YS{{L-EP#~l9W-@*X!g}Q$0E2?ux zuSj~=Mf|~t;on}=`9G=-%16sTA7jLjuQA{L{P=gd|FgbgWnNrCZ4}1#2g8ErAr^s_ z<^SR{#GG16hSf^qg#%_l&#W3;_O@)cGo2Z4n)?!uH2NL-mI%a+z02Q6GnPTHlo>E0 zjf1uVvO`aNJeADO@a20Ebp4a=v*p^=>ZzJ0K*10qHgnLQGwD!ta5#HqO{!_;D$;Zz$ai4 zin+7;FoPgxL5Hy~Or3RU!qaEOM-iN==%2OXngex=Z)?H9(E zi^9D-Wp+rSk3hU1Ed}t1R4CH*5ktFqFN2NKsudA`e7FSG!eQ|8!^?PpY zPUN7MiBLuoy|Rdu8n)n`VJtel}sL9yRiufAINKXd3 zQut>nP%zZmJq82gD^V7B5Aexe`U&kuMq!zwfywkjnWka1*nBk8e7ubnx%GBqCPT8U zz1Sa*V;AHc7|+yzE-?&^v9IRCr!k*)Jb%CK$o7xow zXDQ6Gf`dOARY_(MJqgkVc`q9pw&_4R;W)>ap;>|D zO^5n-CBz;i39}E~ha5Y4fdF?QhP`V{_^7`|?HD<8YCl&H0@GCWPHj+q_PiEzh+}}X z7{76qXxPXm`yCK^VKmqnZDD)&8(X|J@j_TtZXv@gM1YLz>M*b@u_+IB5{N@zu zS*Ql0_rU(g@4%-AIAm5X;FVzF}21CoYuZ2dL+Y_1kvwc z$h`)t5<=^B5zr9@XC(qwbM2q`ND6hLkP#DnsVS8-D zn%y5hWm)sImlX!IPR=w$<3=uEK^Q{QUc=xAFCePXYtW2K3|5^S@1IdP=UBpi#ED7j zeC3dPL~GwpOd4dvlUg<`6`v43`6=9KX=im*?h6r5!`FhD9&+n@?Zs%NLHBDMYgt_sGrEvO-G~iFJes#F;w`V~bG{S-E=+ zM51?B0pUNu&fE}vZm*B$Q`p4!##RS|p5j*=2|wTHxK89CwXr}D28TuGCN zw8nCyfhbnv?b((!e1la7Oa|DEGj6Fhsu1MNQ{DWsHDJO_ZF$FN9wf}XTrbvpOo8ZO zz$)+UY%*ZAaT>=)IAOiYACf5iy0*X|*QrE_o?O5w=+P@>msESn&I}!E!>NYP*z#Ky zvyDBE+NJsAtlg05Lkpv|@BiyY-^a7_KMeNPaoc5z;z(i`J=0y;gGTfF27UK=F0<*c zO?{FQDL7<(zIN?X6w(0%8E8O0nqFmskoxi^*r(N@nzAA)?%0k1p_;~S3J`#hx?iPu zc-X3Etya_BKZU3=jhg{5zQO@_QBR>{X&=RO#&9L4C^Z}y2@y-Z-0jcKwJf#Ok9Yu#x0NdEcDp4`(>x9;B3JU=+Fw2BkX z(%*VR42|5N^b5@TR{eGrM;V+zNy2uoaGm_)_tuLwT@QWs#Ex|N_gKodC|{Orl@q3v z%q7j7(+Wmi_mixd`VQJ}(lHC(qj~>z!+ZZOjX9l1{zCTy^02ycZ#Kc;yDp|@$K8p( ziu8})?>fe7Og8fAO-|Lgoo-7K;p~u~@vJ9N{SiHLDDu!g25WP9;Pc|pzeWNCUU(Cy zC~orpQKNWkssME@LN9L_v6}OxYh9;6H%@l8G1_#dUzh~rVqlV5g*C{;*5U#M63y!L z|5)+eiXag!Ah)bHv}iWGTNV`JAYH*|km`pYUdLNaj-SsBAWU{!^lB&m-C*;~^o8sd z?;HEt5t|3V&g4F`KG)KioW4^V7zXB=<&IP0Gj)5(b!+lPLBVfLF79TB{5=IdY&zxr z;oe=44k3dgtr4A~e$Ii@;tr?F$zZM7-ss^n}H$ZIGPu+`)8&ns8 zkfrSG*=hSe*_GgmKMr}p0^~KCgPa`>DfLvTn}vo*e!-Nt%TwQDR9Nw@UNXSCk%9#+ z6i=Zw0KHs;0=4lKS0HNCOdM|v4hAc$W~YFp|77k=x)aDS4Jm|!^p#|Bv?x9goEq`o z5wx1*3i=)&mVl?3CLQ%PirGZ@;Ef9Zg~NVKbfne$r{@fUPs@E<@Qkj+8o}_Io4?e< zlAwBHal2xyXrSZ?TKaf*vJpsu8K1NzQZ&z6=cZCMbE3Z!*N4+6;8wsESK}3H7&X5U zO(!|6@byBYN?~4ofVa^IUJIIq%u_Jehj+;=7M3==yZy2O-~vn=^Z=lT_~IL4Zp(nr zkJ$SLbFGuq9nc&x79*W_?Xp$#voGS#Q{VV)UpFw{w?LV7GM?V zN7vLHzejDXuN&Z8)3_*!vE?Qh%TXOAa1k9 zdjp%i+Jj3!OEU-J)vle{1jT+AiF9;k0xn$6(2KVq8uGHV-lq5vFpKgj zRZjuJ=m0!Jx&cgshP&U@eJE?bDF>T%PpQC(vD=qrCca@hY%uqjL9hGs`zXC(helFA zxqIn?&jM~-*~)6a{{}qsggKA;E{{4IRG%H&c0BmcCF2Cq&goT|gaS^_C>o{-RzYw` z6%iH~Kog7=DnVd0ME)J^1aFkE|DZo|qv>G{b;0Boqb{BI+%-7uX<^5SCa&i{h1p*w zI7j3x@2*_=N1El0&qr35ORl zgBm;^oCk#jt06R>Q<3(i$|R!umy`$*J?1s1Ry0OWj(0NW6bLqYNXP}l=N%96!SQDJ z|~H|Fr80nfG7vUn()W$nmePuCv(fjK&@=_^jW(1_JzYI zX##N|)r=q1DiuO&q+Wq2r{g01kF2hud~m+B7UL9ItlQ70o2MUMhr29+92VkWMpu25 z+{axk2pphTRq$#}CfuQ^YP+~Oh(nz0BgQAf1tRO%;rNOluINV^OhTT3l2U*P??CRB zL0Zo-jk0$Z=k$IAOxL%xOS;(U%1f+~e9l}DSg`)S0 ze+t~D#c}u`0Wp<<8SgHHS-YQ=q^K-X0~cH27(Z$qX3NT89@Cq4kdUK7d~GxVyf)u%|QEwAF49MFgx1<4yX7` zBB^#l^YISNgrI+b!z*qx2@&i2xR!7g{p=z>vmVjC_A;{6oga*hA^-&Vb@U(_>mh8k z&3|XZPpY!l}hOi3J2^Y5e?=x;)YXE=MV#>6M~&eW)q8Gm&@!tD5(n0j zJznk=^(R>ZcKaa91jH6jy!8VA?S&+66o{f+f}8)I?FXS?(#b8uTUUYso&%aSN@|!0 zItEfN{e9Zr8RNB;fAvm4JVn8s^mO2SMC-I#?B9<>Ne%dZQFi2rz)v-vVDJ=8@>|}z z=1{v5@Xw`PZUJ~ijCA3aZrM7(%cn+Ai3UGWYWXog4H!{d6TXV-Q}>xtE^7SeqaNEf^p!qv;YXy&Z?+x< zn>6$pnCaL>7_r(@s>P@C{)~6R^z+YT%&Xt>6f*2|lpkuyBY6$+J|yFS1}j*U*E^_9 z*=s1J19GS=E&wJG4jPn(hb-O?Inn&Uf9BOr{dG2!Py)4cg`8Tro1mpdK~4SRqlR^b z5kZkp;73a}^R*nmpcaJW{m>6(-VUfNZ4dEl<`%Z!@5$eIe`w=72%@vG*bFMv?7n;Q z>0*bOi4f?N8W;!4F5}-)dnC{514F8={d(6`m$$^9 z_Wl_v<@6e)pdJbr6g3qoTMY(YtD53gU28G*EAV=|o3C~ZgW~Fuf9(%wxK|8XS|y$L z|J>4w^y=&5mIhk`a_k<|7IN#`gv=693TtMS(|R9NlEbhn{_J~zTNqrQ8mts@22F=9 zw!|$o-`(8Jm;VI?Enobt`^>ohw#UC&{`m6h#hk>kSjRR{7~ZKI)OV8iBmWg?csw$Y z{_ul{%mLoVPqgD5tZ}}y%dZ-V1E3+?Y0$e^+!5qHK(5&D?GsfSa!0DtJ~SiLfdoFd z4IAY7=|8N0FDew@772L;1 ze&-MOyv`c_KAJmyigKor|NMaHy9{%^<+oAU@*o3zt}Rx1C&|@Zv|2j^l*7uK)v5;0 zq1va)z<0U0JoaF=iiEIi6;l;dqHN(4R8sQf-%gJe&#k%o{QVplkn&vXm)YVU>^GLX za)8?fbL5wNhV!r3u_NSWe6kFa#6g`y(-mQ5Oo`S(G3}3o2z@oD-fkICE^#l-BzX48 za+x0tl=K+QZya2#g)tXqt>SA4RQ*Crrfy`?G-P~;rNz8e{zKX)$rQyz?z|jKWwBFdV1&(?-bE>_z$@B zP|B;vV{*QG1=rpG-o6SgFuU=u5{-pBp!DIU!zlyX7AzS_bCI7ix*M}lW+_;5XpYs@>@@HUf0~vc^<-T1@yXAbDPrV6Nc{oRxJr4X5n?hWTaZ= zUK~YZ!Z}mjr1OsFZ#q&4&mcYn+00 zFuSe%wT=$m>ZOu)XRV;!dFe3(YP02POIhs1!;tyFJFNVDRMW0qPl{8fX*z)HZ4!Lj zkc~o}j}<}cIp=1 zP-FwJoW-b<<)Ni|gY9-J#zMBdy%$wJJk!$FkZ>%GS z2e0+k=JN3-Mmw;_Z--qd4iIZRI`r%|c1qVw5-0{rTLFg0GQ6b%kMf@cX;9|azyPEN zZ3V+XsA(Z;-2T|Sh;8{0fi12-{P;Zbj_Y)L;N*+Cd6FS2*!KjfinR6WZe&%&o(N6u z8y>&&;@egb?v*K4IYM`cW*f$bPQa90hKzT6PB-1!p4I6UabogU;{x+}$18D1ChaT9ITzJF%2SFU_dtZ5CGO8{)Qtw5xy| zXEMQ+6VoC^NQ9_Be5I-2({XU(tRS2QtQY>gO=&#$VkmwGL=EuQq3`{m%LfZ7WjxAViq^~;`sQ|?vW z4-VHJKBzNBPJ}ot|G>{El2>@+Ojxx0fput!fR@6%8NP>R*i;gF_FO@smPEw92m@9q z_^X3M32(I(UgP<`VW)_SR{WK&4i#;(lfEcIUu>QQ^c7t|SFp-PXg_Bdu&zwmg(SM% zWQ)P|3u#?gC-9ca%_X)Wpf@fe`I?jL9LuUA4hdPaVxc)4f(}7`xB?h}a;D~t0Lj1e za6&TwW3;C&k5Q=}o>3Rmc!b$o!F3}kQz&ji0ADElI)Cjb^u!iE2|ylShvWIBN1Xj4 zAg%$uXLETwq2;mazu){K@7sX?{KU6Sv72yLXSYF)Tv}R@;7j)*V$;KkwP{|t{7`N_0tGd?I4XXuLP5Ujyevc(%1iM*eqH6MT2qIck`?9o zYmq72>7ZxQt;@fVR%aVoZTKar}UD$J(1%5)E0G@aQ zCh)!AeJ{(X-&z-|DGVCu!Gi&bq|YTm9CrC}S61@fY!F$@m=bzG1&%GD{24K{uNgYF3zV%wOLVyWtM8j{HL@MVFp5?zv>OWocC@-MSBna|Uh zp2e`4;J@}JKM!-cGXe0{*-&-N^%YPjJ4fVq6HqLf3F?*Sc~y+YRzBQ5aJP4rP>6Sh znl9{0<$~Ph{7f^3OpOhQ38OUxN)<_Srf3ks?y7l~yJ};y&5v%V0VNy zI|e9V$SwdG2=*q52&d)aHU%XERJc~&^6HqL{phXtpejLH(wK;)K@hyVt5K_}@2_jt zsybJ}-3l#%9iI7?h(1cIEt?ll)=VDMR0MT0ho*$eNg>iHqhbSzl?U}fUcI{n7L|uw zpT=B7VUJKzi8pQfkIQA^V54IsWfOraL|n~oJz{nIRaD&FE|J@Ks^O!iK`7r^2QDz_ zuZYkE9kOUI>LjZ!`Nr3lC%1x1s7z3^HUE$RF`m4tVnMk3oa`B>uwt@R4A)fD@YM!5>#o~|MMU*A9CsOaA z%yL#AUd~T7zR=vdFUI|b;kew{(hl=;Zs+Xt8$IpDtixF_6A}W^&EWo#J~L1WJ zG&wS{g=hzqr@>wK z0W|{X5RXEGhm~Iy47Q4>1(@%(VS_sG_o$ByEsb1cySTBB5|aL!^(RlH!{$MaQu`A* zgG%YSPKr0#YD9sFzEaPefcU-7sA&mWs?K(ebEx7Ro830+cC4}fmnV;Cb7Cp@FupYY z0p)c_$s)avK;|NCN;(@6*r`JgO*5I%fM<>;ZOv50Jpay_I4}Vh?dRGFkUhqKC$bV6Oq1^1gdM92cJIyd(0YNM!GcLx%^`UQ(+ZEO123e5t)3%mjx$4O_cKTjhBSEcGK*`BrxYJ147zBIKe zEeUP`s9gANpj38lLpF%`RaFr3OH8OEki~f*3SzysE|z`uwZ)IKEV#YyfGIM#c>>QY zY`p*Ug{8Xj)1#lX^{na)+-+p25k(nKA1Gw&JL~oV=OrmZ`cW(^m?K`jWR*7eZ6-$j zY-JPG2bOoSN1$!uNOK9LLIL(l1D5WlaGitkQ!xSzz+G77*RIjAF#1e5>#W)MLR{-mtH+oZbQ-DOP z>}RiS(-zXE84cig8>=+vu` zM5St+4t7nu9c$4)`c~No9C%xvdemaBU$#p;4^hYg#mV?csS70qL7pXm!*yX^v>3ng zah}kg)x?yxIEzX-!t}bLt1gc*9Nd@cRRMHCZ?I>+Z&N$SeSMo!^;<)G{Xx>>EMeLa zK0%`gp(0oy)36@)3zc28)Ooc6e`8wUv2jMRAPV^2u7Ijd!wLKY^h-fN7PyUfV<4>s z+`^Qtp%}_<39Up{7h8G)x+38Eqt1KeWRJDJy5m) zYjx|%pGJyEwds{taA24S{);p6tper#(PT~{^;di<>h}UduZLDb?Nq(CH`olS3nUaJ zM1O|#9+v|y;r&DfEjD0(H{G@&8R<u2sm> zVg;L$pdF(X*YH*jTqoO*!3{3JGNbL(oe5=vVvG_?*M^!NobQ@ctISnlK}LdQ08r$& zL>yG=lFZPw7z0c7oz2lb}+`%Pige0X|#XB*hY@R&UBiptvbWm9`FxG@mGl9_MP{D&Vy zcdzL-IK7&$|Ja-`7`8C{9)BE`N5nWO-pmqRuQ@XQ-2V-fPQ^S)2Lab{@LJ3%{Pza*s2zv5}kNfOYWgl+{tgsI7? zQabj6*H9>`z}nd9^3I6*t%_px8R#2t4!9hhiA|Ok<7#kTzq)bo`Q{v&VtG?=;Z67e z1z4rlLI;IRSr5SC91cULNK8Y0pZG3lRAAWLW<$Tf9ohrjH(-l>!N0fiLtETpchsP! zLld$;fc*zv-F?a91n({Y!^U2XSyJX1k?imI`%lp0fZpH;eM=NG=6!?jKsN$sn;|vh zWT)zL)$85!qi7yI56=j<)xSvXzQlXv=TBD6O#KIyJq)aJhnL>mH{xvtX zMM$p6#^PKxWBdziBhII6ZU?Zr=;o?E7t{SqxAJsWIp-k)JJ7iVG6hilue(fp-AV{5JLhaSip9Y2=yC7wD!f zd|}|;**W6k&o&(h-wPf}0ZtBJ`+XQeNHDq$?;H{5D|U)`S!dI{0Efah?0m~b*;ixg zSD@GE3VyI_c$Ux>K6h}hZEG4jQwUM~d0Y>jO}4VhTO=TDvgAKSUwpkk zHt5EIS2*!O2_F4NPJMC4t|?!7Jq@c`Jk$*T;M>u0(6v%Yko_kxE#>7p$MvBl1%^+`OAw=3__z>kn@5G>QYHmdUG?2V^vyDvFI|BUrAyX=UJOKGlE0TQIiagq z%+DT_zho|rB^R`S(hXCwYyGI!JUyU@j%5JQ``om!PxJJ}v!@Z!vsa6!g;)XMyu%PW z1zDAB-v~qThI#SdG%rhgidmkVnFg9PEo`^0CD>o8(c+tlvWd@jlE}KxZ^(0hL1nlW zzLh?Mqdo)DCPO9fA7rY(#$_Us8fThjmC<9o_ppdW=BP&I8-jZll*DLW{ojd#%-kDbKwWOBPgN zqPDq-e=xKND%n4cs6fnT6$cU4w!`nG`d~#~octF}g7eI7rP@@PWo)o&U zH+k^~i68bFb>&%G3;>(}cMvN46!Rz$gf2UVr(>CVwbe3 zio=y%mgne@iyZN$qzTcZ(hs)6S_iUjj9~*;lCuW{iI7W9XG%Fw4(ic;8Nhh;cXerJ zMw&WpW7kHAv-q}%N~MzR*A`m(4u|0A-P<>KhM84*|5?T>rIA4|+6zs{+u}rp1lzYn zL8Zc4XzlyUv3y?aK>^cdcW|}QU79Bt*9IqlSpg;p{q@{I>4P`|`i=uu!z`FC%jqC` zcYxz;cmGd@l0d=nEwD@rtP>KzIk1UNF2?Z!c>)E9<>s*>qp?I3T*6^5vvJIya61UN z8|1$wrjIQEO};=F6n?%pYytq$l@AZ@xghG_;v+@DDWjTiVX-T;5K$+!*5h$f(NSWz z8W%Or+yr5~E>i86##^P^5Gd=GOXuce#Nig!!iumn=kTso}+SfDWbQTU(DN_evrJg39D69o6n@7LWO4MxNcQ+M^R zYIhAuIXG3|*|@IbGg3pN(eJcH-Zje5m$YH|Zb|LL!Qd5IrUov>w!tkD?4uVpZ~+|l zd#*SHQo&s`ByMaw9ajB50?oz<fWVE-y>zNh7{ztPcY#VR&)5sbuN@~!szKWpreyD22jg){qU5NuqNqAm zHnpTFB>uiOuCQmNQqZjSdq1@z)t5YVC<8k&GA%JFA_4Kn9_RApUIOYOVOay#2e!%FHwcoEGpw=-S>Wd+UXj4X24R^ z6mt}-;Ym;>JHDPljdUw;QB&O2r-?~`#GdG1h|h3_B*xjc0(txUw(5NDF0%-Pl8A0>&yk0-{m+)(!!P44l*UcND`(8fVh zYx7d8vy5!lDx-IR*b;!SyZA_+nh@*mhq}lCMq^o9RpQdY(Z@xmPH^0Go?^&~Ikf)t)JK!tSgZz~z@nE^V$_DWztYD6sjCY#?qEp?@tBCaJsXda{*p8(>o zYsM)KL|L8-6PD!k{(Q0^a-k7Tu24|ND7K)BCkV!m6aWjzFS*+!@|zia+bwu<%O@+c z!FlxUs%O986SLnqc1y&C3fN4nSrrvez*`^|!TBrI2u59dvMfRO!7*UOVIgj-v|1QT zsQ~46tKsCRIb%PZhXE(lp;<$yv<1)6i<+p?3TeQj@VUP*=q4+Q>5YoP7^!U#B8w4Mk2#=nI6 zG<#xQ_S&E_nP-EuPXI;Y;YhD-Y+y3a_IL>tpzr;-lbb)>NP*2&&zBVB%>#JU@^p7a zkL9!_!N6`TvInRj-&9Shd#UcDN%Qsxs6(Y4^)lZxdupM@HkJLOLCH|762&Di&0k-$ z-uS$rk>7aQ9fGg9&H4`VjwkzQa*Vt0y#ZhG(_#;qPc~T&6gbvUmlKC9ZpxWcm+m0_ zr-jN#*OZCQo67zHmo7*$Fnf5%+>(#)cz>+3P=c?x>PL_F9Iy@Y&mPUR|1+SKpJ(Os zluhX4;g`>TQaLqU&kXITdQvDMBhG%T%*_erF&mzq>GbNO82U5@n3goqOB^sF^Ku70 zm7^km<0-;CdMW{i@X4P5766?I@Ie3u>79X}x+9|_7B0juo0C8Psn`M94#?5;X*!=Z z;DCLR>hT5!KYpIifdf#$=cC^H@tIJ#*dD)E)5kmv8fpWc8Leg8e;O{-3K&P<61ORC z&g8?3KgAAq8Q`1J(w=^v&j%7gg7@R>!M{GPxb!GuM8`BEnD%)%irnXT+vg>WKie9* ze-i#W>0X*K0E|hZXldE_yF1V@75|=F8@AAT;?oH1larx7u%0cKJ#> zw!VHV#TkEo;)~^tsQt@|r!MsPMMY=Xb9s>--f&90KHj&`Q(}IN*7T>rb(ZAf!Zfug zvAdgO$fcjL_B;XHKStLRA#=k4KmniA=S$1XfphsfHxfgv(cknSKvc_7dZd1(*VNT4 z!iNG`8~T{&?|<&69a_8W%=G9LeD`2!3K>#G=soG{Cj9N`6R$sbK(GS#+L-4*B_4$iKQEf20v93yKy%6Si#ldnDhI`Ji{j_pgt~ zi*oZTn8##&c;DkJ7#E7=LBuo!R)Y4KyJEX zP*(6eE)*vM_E?rM63Ry7f_yg%P*KiOy=ef{K8E5aRg+3-Ev$; zs&oX_$_qaMAXffKq8i`ObB^ldV*G-fVXSMnGQR{;EEdz|uhu^bg< zC8lt>sGp$~h?n_ufuHuup+(A0=FB4SA9b|~`~jo;jhs_t0g3q~P^~*f_O54%`fi2dVoW8n!s@>4KL2*Qf)1<;Z4MEa$29(L8 z{#g|KlK*(>{e4(0zEQhrbdRgrj_J^NW-Q1OrGeB#tNSf?Np~rMv5q3bDlI$q z+gw^`15NX?dNG4RtV@YE<7N^k0B$HbmnY}e@~q1`sq&n}F-JbO+n6-fO#!*C5DII2 ztdwjJo0=$+gfJX3wvBC7s2qQa^*7O7dN&oDUSVTrVy|DX`2uo50B6hJ!7K;R_pM)h zzW!MzXUR@wM(URgoSIHNJ792SUwEru^Om@z-Z`IG$BRg0L&L51zJwXvd(*2E-&c>u zT4#f#v!K-e{_Q7WVHepmP$=o9*>hk(7OYoAUuI|_aP;B!k;J8wIyneYd?O4HpEupI zyPOX5_yRdI$;M^_(N0vE_@&MQ9$#w;|N7uX7K^T5v>GLWNZs}xkhE7mo!2~3-fR|$ z4~321D7P`OzT@l_USc|A>|&&W&}~4`Wk;jOOzlLaS_KN$@`r5|Tom^E;S!RKaxnge zz&zQF=pJRHRUEWyJ%7C(Ta*NmWLoTNk~jmB+_@&>p5^WbOe|dpk^(wr6!e1fVmfvL z=q0(X^^7j{Oy#k$hY3e+R@{zPUgpl&p=svmf}8ODUM>1;7UNbz@^P1p`=@nk{K*wf zHBBZBE}OfhL(~Wg0BKFTINA5hs)U|qs1)Qm1Fn+-Lf4--)+YR{%W2VYx7RiYjsoaH zWmB_~WfGKK{T=PT?p*5fa>rewh#x0WaxnV+tKGqc!a?M97TInm-DV80Y}VCXzSQE{p@GmGdAB@lQ-&YDAD`UekMieW1c)HA zQq|F1eBL&ymJL7JSou-`y2o$+$Fa$b+ta%$LEldGu^5g926TlKj1&WTje>sj=0r1W ziW7XG26rdPhIqTbe5C*Ce&dc4ZwgRKAW%KNAqxqS(#>;A5FEV3J0 zM(2&rctrt81g4|Xd&zU@it0J~;t06z;hGcAj_V^|d+8zr zl6HJ~j?VPi&oofmJ|hU*6z3vkC!KokZ(=9!*Q&^AjtJbfg(-Pz9pj`u<~fl8!y8d* z6C{lYR>dzk_I)Lby(ce4XQh7B0H`j9Qx^a#Osvthsd-eQbnV0k)$OH6%F?KI0}Bde zFV}^v)-eI|%R4lD*DNTz#IW-BE~NNZtUTM|)1* zh9ZefX}zVNxDm*}v`PT5WdU1(6xdm-dQlXlQ{`532<$8NE4^LUwo%byW1YQ`bhcDnDszc(Yp~t00;FVB?&mzP zU;SC45OooajU_MB3KUMlwrW!wR8@@N71c`&d>MXBnH}G?^H5;n^7;bVzSW??s9^TK z-s&(mQABd%FU9qr-wtZrTU6YbRb=^}7y)2gQQD#P;X|ElMDGMbK2vld_Q}M;E+TM+ zS?IJPmQ3jYQ9*L)4Vje=F%4o_4`v6?r5!TQ!U0foc|Lx&((cj5x}pv_d1G}fM{kX) zm$wdb>HXibcRLYcTMdK!Kp!TadI{VHUn@<-<$J~H4NXzi(%aWt*sE}f#Uub9(o75* zm9@7j?_2=sT>1BZx@~--30)*AJ(AI%z72Vfj$ExpUV&;p1`W8?LOmu~-XeA?5rR)# z?R=o7{_*Z+{#y}X;M)hZAs5Cok8K!!Wm*FNWv4J@JTQMM6`^Vl`o-^9;k_aac! zSbGQ)>oof{^B5MU(eLZA?I=KCUMEax;<-d)wdvcwFXU-cJNQC5Q@p#nNI$8xRQQq86gR9{vo0=_% zySW&4Xf>rlD0bHFjy?9w-oIus6(`p9d2Q`k!zL%Y{glE_WYq6N`lE8#1c zkOd5j&N7wGBG3I7hdqfn_FSD++Eat~X}sBtP(a7{HzLlIf%b}t zD=IGPnPyl&>fQj*%|Ss^r&1$AIhd_#XthM#PMx(YZfWpKPZXrC5+71m`sK=^-wGCq z20xyw|Yg0%I5Lac1PbcV= zL{smfuKB>f_kyQwr_o(wN8S0qoS}Azb595d7J?e?9V^;$`~pt-A|ZNWu5-z>=6L^D zivDY_*GQSN=n?;FanDXN4|JSM{|dkTT7H9mPRqUxl4QL?CI zqqD~Ga{nn0`XQ;Aj7b~VN=0i>zN8)^x()!7_7V7PG6n)$O7bgQuXs7c*bR@uU8jWz zp4;i$*NwC|kNn>d5t_&26u!T)Q-~-{xMdpDJPnF=aF;9mnV4cpqFqp!0U=8ToKOc{ z;BNREpda(c=(X;<>4{P{4TehY>vESxy(--OAh>>Ks82=PX`>+kyOj2j*2XP0qOk6U zt=^oq#PbA}V*pNu6El?Pf8t2-TvIF=hhI>R7;Si?BpZ}uH)A8K?J?9WkqdmFV@4dk z4UQfwiQZx1KgbDG@5sfl2w*c0H21uFEtB26^R2LWn>2wa*IfxZcmhK zx?8R-@(W4~HJy>@V1@N-G>#4j5aGWB3YvWmg{;13LiHE+Pp{iBUT8xdSh=e>t&5N^ z8m-7O#aKvM3>g!S1&%F`b^L_=10~Iv<(!Y7HlvcF5d?kGyvO_e{J#CbU9R~ zRmOYh1_kZj7L9$ceU0zJT9zJ#8E*A_pE6>MTPxsouznjjxPxm)YF>y)yLyZ{k#3>8n1XO7# zJ;FAbz=Xv7iXT?ES~5usQg#}78my*?CeGVEEbcUtM>dzPzmx5@giV!Jxm8|kfB8ur z`si4y6I!DQ*2>dDsK6uirA}j11AnD$l<)mJH4zG7RAR~!^F4!%yn>zwpf{oNUytn$ z^UbZvuY;sZwH2+bnw!T2u_xPdI<|ZEA#5-yH-rZzUsU}2#iT_3G;)_Ge!<88b;hT; zS-P8g+gEe!mg$rE6xW^l$_ywBbI0t=)ZO$V0;~RS`>|CEp@rbFVepY+`<3wVy*V{K z)RDQ&LrepO@o%i!A=4uhgseAJx0mi;>6ya$0}_eLJSQpioxe-}$>^!*4-2^+>MQj3 z#0wixlP2aqPdDbdFnYgA72*AI^8*Cfv3@%ckZ}*WQa*fq_LjL(y?kOwag_P;NHKmh^&OCq4B{qHH_-M0U?FWLylUuVk}iO`>Z zID2I?_^fn<4>TXP;Wi_Ki?IMTp5wTVAU;g?nY@yDJyWxpH4M4`fa@%Y35t*9+xd^i znCmIq)tYEfiHVHnQVL~Nv`~*gMpq|H*$fdb>0{Jn-xR9<3=$BA(s6cTQe$2)c!T3J z{P|v+0#NyDDqG)+?2zcwo2ZC*0SxRku|hqBi-taM;N}biD{-$f=Fc|ha zpl33AHwyaz>Q}@BR!jlNpGyu_UlFnnubOK&++Qn?ct=`nQ5q#NP@-j`460=?h;QdW zKymiz=JzB!`T~>#a5CyLOU4dlM*a2hj=)s%dD{?oo%Lr6nQPS#IxB^X*e$xmh$&>= zSWrK8uV2vPheR_mnCYnEVEHAzVr#vc>6DPwkwX^1=-Iu$=zU=*R9cF5s_tO%xHrHE z%YS<~ZSkbmpd(-B399<^eBYlZLe;n$4T}H~4iv(HJz4+r6((8C}mhjDHUyPnZBqkrS{QE2e-D6!QyMleUDakHwgk8gP2A z4iRWyZv99Ww_FiIF#mWHcrthhv7f^VZz$02v*5y$qqe#jG+P}4Bep3K^ zu!Z=JL!YYZK)wzUR*iPlUFm66&~$kLA$H>J;>pBnDC$lyjn`}_dgpMidatR0m4U|4 z9#=;}1^?BT4xsI>F8cU7{ZJfwb|?)-~;jtzxL77J^qrnqWT zE7X|Dj9?Wbg}nOt&ejE=KGRyoL4j@T`BIQ*)&++c@(l+yt?~5NUX^}kEpB2*(@*vF z)zIWdfLkF)d;n?{IB*GmR9C3e#tb*?3-BwIFXGM4v}&?)nZS9UyV0Tq;buxe8LunS zi8s#$H9Iw2*lp+A+3e~^T7&y1qJLLN29ch zgzYqJH4(Y?E8Ilgf@bs zNJ68Zz;urSigM(L%CJ(OC-X#&la;b!d}fDLMzW_`qd61CPM`E>L?rnvV;U}4L1{O2 zjSKn>Mo~dxtn^m|099ysqpEDw@Wv-GXugLA*P6PL9;s}U&u+O@WFtfFGOo5Tg~yLI zU1zGXo*&#^e>y(+^)%$u_v|l!p#TfP6@Oz|YOug`NLa`W>z*2r!dDj?=f0Hx^VSml zMBkw?J+#8i@?V@kfp)xCxvl@~#<+oAHst-6v%&QRzOd<*I6k8uU_PrE(KdOb_=!=P zrqD|JVpEH{j`65wRr>`KzT(L%96PLEd%eeWAh75ibvAAp5U-*ibCn*1!ctG9$~#I| zCxqq>p2dUwi+tNCw$afDYVH#o{RA>98)ao65a6%a_Y*dg8W4BJQn!_u{vzHk;o#gG zX92u`418kPc4&{WO?_SarOr52%IHy>#-QSm zXux|Fqj6{AXHC7r4Rz+jDNXLN(v2~rjSFW{Jq_A1QyOPA(2oz>#mev8mY_qNsAye1 z_6yF@$Kf#AwBgN)ziqX3!%hE!xpC(uk&I#+D+@#%o!X`XXKOb0C?N-oYlNGZs7|uG3NVhI?qnVhFL9DpV(QDfRN)>VysX0x%5cJiXkNj z_k)nW))wIWcoa&PxaE7UxlQW=bnFyL!de2~T^pEdIMx<>=Fyl_n(FXTlA-Gyqj-Dx z+#fL#zCBCo;-#GOG(s$*1zV35^9>Tz3a)*S<|E`9_-@NjV(z1=10v@ywlQ@MJaM4r z)+yWQ)%X{PKE;oWqD9M$j*<#0V!5EWOpqZ5df`J zui+buI?82o9$JJ?*d{kSHWWF>iTIfNDw6`QHpo%mpfUz+ z7`Y2~S&3NNj3;BJ@Y*-5BAfJFhBi*qEz&I99bTXTU(#;;?~JeFP%PIvDH9!{`O83& zJgf{~WYatrQ<{FZ(KS{>v0w*XK<(Dpj=0gub$G3&WUvHI;?_C$iBaPqskz{Vs=>U1 z-A#kd;#Uye^bi?mHCC$q^-|1gVte8iJpNLQJ90(sVx!-L1boprO}(pSbghUp)pbFB z#9xx$>c&!FrNUftGafqDMGcmp=n7WP>=75+`6B*(qw9;c>F0^bXP8|a%Zxsxn5gs- z4bHW2!x5FtF~)xe0YRd=6?C4;a%a>{3>6U4TViipi2bql8iC|H9RiZ~daDy^q9+go zF*mQ(HqQ6jWXx*r+`mk_ELz~v8b8>9f_o}JRI+Dib#*dYdNst4b)8^17$7x7r4g~C zClP966?4Cjc1+ItCs9|D>=uJiCv1%0 zp_Q6};8lM5ZN$qQ_4P@KRjgt$Hs96E;qcH<7jf8+`Pn)X2(3TWB5M;F~HO5 ziA`aYzP0(9m(wN|*ULa;&Exv1kQR-xIh}84Rq`>OSB3`YRRD~jFlp1!@`|$w`vn1% zs<3GxQrO)A@9p%WFgV*7zS5+I75GkL;KlYkMQQSwOa`dO@dUC?P>z7F`Y&#ymdnEkhPr^KyGwgo`g zfgJRT8b6Ior|V0vl)f!mYhKp$M6K_j3wyltymP5@GGxN~esQrdfa2|SAcJ5`2j;SI z6#MXoX^UHD0J+wKy;yPdhF8ktpQ7~ss+OUAUh?X z=|4yB&%h+COBM|L#81!do4fjKznYzh-_QR&l5=-JQ015AzmA2fkP8wX?F;dLho(0= zBg*MxfOK|ro4UTqA1Bq4S`*09iFR)p$fgW~(~e~tYjkCiw%GtYqI%YU+srk7x>40q zRZ3P>E?(Jwjrm+P0|ebg!&Zfn!oKgSj!^53t3|v}L%IH8NgZdI#}yh{&vADZH2X)U z1#aBvH^r^hz9||XmSAHHvo?OxHNl36Rgt2cW^CSgG4nBTi8AeTq;`l%j9bzb@C?^p zU_@0Fro~CcG16DGq*;s2+^qVr?Y%MKR-QxV3!I7|W6c>KSn@P*bq2``%6;!=(Hk-! z>=n{$TmT-0a>OWi1-s8;P<562BB~rSj?B!eKNKIisj`cI(nQ0yC5xh!8b0kK`=_(| zHGW3T8TcFb5&H&5C*7upMM?M6@R!d%9&5!}%jg!r{Q{B({6=X2B)G%wpS)CQj%kO4%`O#JYqr5C6D197u)xumzvJY+u0Y!XtuJjU=-5Kl%|t3K%c3_n%O2EQ6;_C6cu_&{asJ;ZI_1(m4$`kudFiv8&%~ksZOe*-k2S1nB{Y2A&dn^A z52)8qZ~aJ72_f+{mpIKU_doAh@xN_ZKxfns@gW9gADz5_st5j!qNV?P3I6|a3DjHB zpkh?@Ti@X-D1UO3Q9*$PK3VUiuwN1TJ?b2XKs$PpL?ZkA$K#*E2M|TVxqo=8F2=}Q zXekbzn^|vaT{Yr{!-%gUTQJ8yvO=Xa{`T0te$KZ>n^6Z|Oujz-@edFa75o|EF%mC$ zsgD2Sgzwboy?(%8#}@~7y!2m~q=x~sGU!>$a>*B9Wqw}5+CMS9`nQrbr%!%nVU#mv z|H_k0yQYq!KLE-$nTFCY|1zP;vyt-$YA>JtNHf4PDn0*=sXngsI+Rr$oc9G*`Ru&Q3i`KFRf0J7E3JjyPg=g0 zypqnO=)j-P+MT-@{-&_=RY)Em5S%5az6>`}{v+>OSSSE)A5(_2kA&No*u?dyl8_K>X! ztDz?H381b%;y!ckx~@fQqZhl^{cRv|Wn(RdnGj*0-Lg_|OWRoNDeFom_;y6>BGH_j;B9O*@sKplISZ4l`JmRydvyUJ6DcQ$E3Bs7>~{eV>4n=@ zceTv;9{4Oh1O>f@#(ev;Dt}%xqh%S`kv$ey(h0#On(P{kIeU4@KL396X;DmDCEUaf zdqr_+yoMHuT&cMCUblQ>34MD##$MZDm=wLVYXjBg#tGk_vnyn(nz^j9Zc?%#Stq|t zY{C@d=AAKq*68W`)6eS~7ZG$3KRtiuuD*MW*`*V$kT$x-^FJ4AB~}d$ZL?%Q9f{Dh zLX#CNN3^0la>yfcqfv`YuEdV)&ynrYGuufQ#GBz&yinz%b~x%Iq&5qatsl&N=a!DQ zPtQ~*6;+V~$eJgl>!sRaU7zhdovG;@XTN%HfyTyBsjF4ENS9h% z)wQ9St*fI+BEbl2AuLuX9@fyiHn4IPmiT^DlakTYj>5YK?69pY+?NsL=kqCoyX9=S|!S z4Nr|s#Y5FywfCrThOJ)Sm$!`{hE<##nG0xX6}P?FUwUr>=P2TV$CxP;C~6G9nwl04 z>VJjn9AR_Gk@@P$^RvE~Tkv?0f_3rUm)HG3oIYR0x?1M0v6sVlYwq^lrQdDRUI-r$ zEbfr0Jzh8;pm0P3W9K!`$iSV>JdOh?V9n1(?&2|5)=R?ls$I&JBihARUyMv=wO_Ys zkVzi18Y1X-8*i}#*=yRY-byHSa#N_eh}Cn8oC~TzH|BDiI(!nnxGSg{+1;#Ep^vJS zA*1@_kXc1P<{v&T;G(E#;_uB#ApX>>I5H0LcG*j3i()jaqEmh1n$U$>u(Svdy{cNqZGkjIeiA z;GE*KcG8Cry)h#Zh#b=PO(n)`J`nn zOcsTpdwz|g)jY&bdEq+AkV8RJnF>;c5X;ri^Y*en;T#UoDFGqxQy|9ONlNV^tXrc^ zJh0c1r$=PD0U!nH`ABl-3-EaF;m@itfaIJPd z_`(%xA--~tpYwM0@(07&ySX3hKk^7A%S-Av2>o(2P@HWue`hi#a&EEz?U_%!0LW0} zzsbKIuFMKADCu^H&U5xnFPt2Z!T)8+s?S=gfU# T`y01_|9<)r{zLvbhdciV(quQ9 literal 0 HcmV?d00001 diff --git a/docs/img/0.27.0/embedding-settings-new-1.png b/docs/img/0.27.0/embedding-settings-new-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b15a069fb2983e12fbc1051d84400a8b67f1b272 GIT binary patch literal 54185 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 WTKn)B0&)-dPfb}%38Qf9{{H}-P&yv~ literal 0 HcmV?d00001 diff --git a/docs/img/0.27.0/memory-agent-settings.png b/docs/img/0.27.0/memory-agent-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad9f8fec21f5f36368bec47e00588e0fbd45678 GIT binary patch literal 31203 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 literal 0 HcmV?d00001 diff --git a/docs/img/0.27.0/open-debug-tools.png b/docs/img/0.27.0/open-debug-tools.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ce4e931cda50ed7a6cc0996800289ef6a165fd GIT binary patch literal 1626 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

$#6 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 l%Fz4I$^UiE{|`3n6zO&k9w? literal 0 HcmV?d00001 diff --git a/docs/img/0.27.0/visual-agent-settings.png b/docs/img/0.27.0/visual-agent-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..d19e609f67e2f6292223cf3466c46a150d235899 GIT binary patch literal 45372 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 -``` - -Then add the following to `config.yaml` for chromadb: - -```yaml -chromadb: - embeddings: openai - openai_model: text-embedding-3-small -``` \ No newline at end of file diff --git a/docs/user-guide/agents/memory/embeddings.md b/docs/user-guide/agents/memory/embeddings.md new file mode 100644 index 00000000..12fe7ed4 --- /dev/null +++ b/docs/user-guide/agents/memory/embeddings.md @@ -0,0 +1,81 @@ +# Embeddings + +You can manage your available embeddings through the application settings. + +![Open settings](/talemate/img/0.26.0/open-settings.png) + +In the settings dialogue go to **:material-tune: Presets** and then **:material-cube-unfolded: Embeddings**. + +## Pre-configured Embeddings + +### all-MiniLM-L6-v2 + +The default ChromaDB embedding. Also the default for the Memory agent unless changed. + +Fast, but the least accurate. + +### Alibaba-NLP/Gte-Base-En-V1.5 + +Sentence transformer model that is decently fast and accurate and will likely become the default for the Memory agent in the future. + +### Instructor Models + +Instructor embeddings, coming in three sizes: `base`, `large`, and `xl`. XL is the most accurate but also has the biggest memory footprint and is the slowest. Using `cuda` is recommended for the `xl` and `large` models. + +### OpenAI text-embedding-3-small + +OpenAI's current text embedding model. Fast and accurate, but not free. + +## Adding an Embedding + +You can add new embeddings by clicking the **:material-plus: Add new** button. + +Select the embedding type and then enter the model name. When using sentence-transformer, make sure the modelname matches the name of the model repository on Huggingface, so for example `Alibaba-NLP/gte-base-en-v1.5`. + +![Add new embedding](/talemate/img/0.27.0/embedding-settings-new-1.png) + +!!! warning "New embeddings require a download" + When you add a new embedding model and use it for the first time in the Memory agent, Talemate will download the model from Huggingface. This can take a while, depending on the size of the model and your internet connection. + + You can track the download in the talemate process window. A better UX based download progress bar is planned for a future release. + +## Editing an Embedding + +![Edit embedding](/talemate/img/0.27.0/embedding-settings-edit.png) + +Select the existing embedding from the left side bar and you may change the following properties: + +##### Trust Remote Code + +For custom sentence-transformer models, you may need to toggle this on. This can be a security risk, so only do this if you trust the model's creator. It basically allows remote code execution. + +!!! warning + Only trust models from reputable sources. + +##### Device + +The device to use for the embeddings. This can be either `cpu` or `cuda`. Note that this can also be overridden in the Memory agent settings. + +##### Distance + +The maximum distance for results to be considered a match. Different embeddings may require different distances, so if you find low accuracy, try changing this value. + +##### Distance Mod + +A multiplier for the distance. This can be used to fine-tune the distance without changing the actual distance value. Generally you should leave this at 1. + +##### Distance Function + +The function to use for calculating the distance. The default is `Cosine Similarity`, but you can also use `Inner Product` or `Squared L2`. The selected embedding may require a specific distance function, so if you find low accuracy, try changing this value. + +##### Fast + +This is just a tag to mark the embedding as fast. It doesn't actually do anything, but can be useful for sorting later on. + +##### GPU Recommendation + +This is a tag to mark the embedding as needing a GPU. It doesn't actually do anything, but can be useful for sorting later on. + +##### Local + +This is a tag to mark the embedding as local. It doesn't actually do anything, but can be useful for sorting later on. \ No newline at end of file diff --git a/docs/user-guide/agents/memory/index.md b/docs/user-guide/agents/memory/index.md index 9c72bc4d..1f0a686e 100644 --- a/docs/user-guide/agents/memory/index.md +++ b/docs/user-guide/agents/memory/index.md @@ -2,4 +2,4 @@ Manages long term memory via embeddings. -Currently only supports [ChromaDB](/talemate/user-guide/agents/memory/chromadb) as a memory story. \ No newline at end of file +Currently only supports ChromaDB as a backend, but support for additional backends is planned. \ No newline at end of file diff --git a/docs/user-guide/agents/memory/settings.md b/docs/user-guide/agents/memory/settings.md new file mode 100644 index 00000000..71dfd000 --- /dev/null +++ b/docs/user-guide/agents/memory/settings.md @@ -0,0 +1,14 @@ +# Settings + +![Memory agent settings](/talemate/img/0.27.0/memory-agent-settings.png) + +##### Embeddings + +Select which embedding to use. Embeddings themselves are managed through the [Application Settings](/talemate/agents/memory/embeddings). + +!!! info "openAI" + If you are using the OpenAI API, you will need to have an API key and set it in the application config. See [here](/apis/openai.md) for setting up the OpenAI API key. + +###### Device + +The device to use for the embeddings. This can be either `cpu` or `cuda`. \ No newline at end of file diff --git a/docs/user-guide/agents/memory/testing.md b/docs/user-guide/agents/memory/testing.md new file mode 100644 index 00000000..9d4165dc --- /dev/null +++ b/docs/user-guide/agents/memory/testing.md @@ -0,0 +1,23 @@ +# Testing Embeddings + +You can test the performance of the selected embedding, by using talemate normally and then inspecting the memory request in the debug tools view. + +![Open debug tools](/talemate/img/0.27.0/open-debug-tools.png) + +Once the debug tools are open, select the :material-processor: Memory tab. + +Then wait for the next talemate generation (for example conversation) and all the memory requests will be shown in the list. + +![Testing memory 1](/talemate/img/0.27.0/testing-memory-1.png) + +In this particular example we are asking Kaira when we first met, and the expectation is for the memory agent to find and return the memory of the first meeting. + +Click the memory request to see the details. + +![Testing memory 2](/talemate/img/0.27.0/testing-memory-2.png) + +Up to 10 results are shown, however only those that fall within the acceptable distance are included in the context. + +Selected entries will have their distance function colored green, while the others will be going from yellow to red. + +If you find that accuracy is lacking you may need to tweak the [Embedding settings](/talemate/user-guide/agents/memory/embeddings). \ No newline at end of file diff --git a/docs/user-guide/agents/visualizer/automatic1111.md b/docs/user-guide/agents/visualizer/automatic1111.md index 33ae2f75..abaa3b6f 100644 --- a/docs/user-guide/agents/visualizer/automatic1111.md +++ b/docs/user-guide/agents/visualizer/automatic1111.md @@ -15,7 +15,7 @@ Once your AUTOAMTIC1111 API is running (check with your browser) you can set the ## Settings -![Visual agent automatic1111 settings](/talemate/img/0.26.0/visual-agent-a1111-settings.png) +![Visual agent automatic1111 settings](/talemate/img/0.27.0/automatic1111-settings.png) ##### API URL @@ -25,6 +25,18 @@ The url of the API, if following this example, should be `http://localhost:7861` The number of steps to use for image generation. More steps will result in higher quality images but will take longer to generate. +##### Sampling Method + +Which sampling method to use for image generation. + +##### Schedule Type + +Which scheduler to use for image generation. + +##### CFG Scale + +CFG scale for image generation. + ##### Model type Differentiates between `SD1.5` and `SDXL` models. This will dictate the resolution of the image generation and actually matters for the quality so make sure this is set to the correct model type for the model you are using. diff --git a/docs/user-guide/agents/visualizer/settings.md b/docs/user-guide/agents/visualizer/settings.md index 44ec0fb8..a60797f2 100644 --- a/docs/user-guide/agents/visualizer/settings.md +++ b/docs/user-guide/agents/visualizer/settings.md @@ -1,6 +1,6 @@ # Settings -![Visual agent settings](/talemate/img/0.26.0/visual-agent-settings.png) +![Visual agent settings](/talemate/img/0.27.0/visual-agent-settings.png) ##### Client @@ -27,6 +27,10 @@ The style to use for image generation. Prompts will be automatically adjusted to More styles will be added in the future and support for custom styles will be added as well. +##### Image generation timeout + +The maximum time to wait for image generation to complete. If the image generation takes longer than this, it will be cancelled. Defaults to 300 seconds. + ##### Automatic Setup Some clients support both text and image generation. If this setting is enabled, the visualizer will automatically set itself up to use the backend of the client you have selected. This is currently only supported by KoboldCpp. diff --git a/docs/user-guide/interacting.md b/docs/user-guide/interacting.md index 9574071a..078f11cd 100644 --- a/docs/user-guide/interacting.md +++ b/docs/user-guide/interacting.md @@ -56,3 +56,13 @@ You can turn this off by disabling the auto progress setting, either in the game ![Tool bar](/talemate/img/0.26.0/getting-started-ui-element-tools.png) A set of tools to help you interact with the scenario. Find out more about the various actions in the [Scene Tools](/talemate/user-guide/scenario-tools) section of the user guide. + + +## Cancel Generation + +Sometimes Talemate will be generating a response (or go through a chain of generations) and you want to cancel it. You can do this by hitting the **:material-stop-circle-outline:** button that will appear in the scene tools bar. + +![Cancel generation](/talemate/img/0.27.0/cancel-generation.png) + +!!! info + While the generation is cancelled immediately, the current inference request will still be processed by the LLM backend. The Talemate UI will be responsive but the LLM api may require some time to finish the request. \ No newline at end of file diff --git a/frontend_wsgi.py b/frontend_wsgi.py new file mode 100644 index 00000000..6a0e873f --- /dev/null +++ b/frontend_wsgi.py @@ -0,0 +1,28 @@ +import os +from fastapi import FastAPI, Request +from fastapi.responses import HTMLResponse, FileResponse +from fastapi.staticfiles import StaticFiles +from starlette.exceptions import HTTPException + +# Get the directory of the current file +current_dir = os.path.dirname(os.path.abspath(__file__)) +# Construct the path to the dist directory +dist_dir = os.path.join(current_dir, "talemate_frontend", "dist") + +app = FastAPI() + +# Serve static files, but exclude the root path +app.mount("/", StaticFiles(directory=dist_dir, html=True), name="static") + +@app.get("/", response_class=HTMLResponse) +async def serve_root(): + index_path = os.path.join(dist_dir, "index.html") + if os.path.exists(index_path): + with open(index_path, "r") as f: + content = f.read() + return HTMLResponse(content=content) + else: + raise HTTPException(status_code=404, detail="index.html not found") + +# This is the ASGI application +application = app \ No newline at end of file diff --git a/install-pytorch-cuda.bat b/install-pytorch-cuda.bat deleted file mode 100644 index fe304a18..00000000 --- a/install-pytorch-cuda.bat +++ /dev/null @@ -1,6 +0,0 @@ -REM activate the virtual environment -call talemate_env\Scripts\activate - -REM install pytouch+cuda -pip uninstall torch -y -pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 \ No newline at end of file diff --git a/install.bat b/install.bat index 06009adb..9621700a 100644 --- a/install.bat +++ b/install.bat @@ -48,12 +48,33 @@ python -m pip install "poetry==1.7.1" "rapidfuzz>=3" -U REM use poetry to install dependencies python -m poetry install +REM installing torch +echo Installiing PyTorch... +echo Checking for CUDA availability... + +REM we use nvcc to check for CUDA availability +REM if cuda exists: pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 +nvcc --version >nul 2>&1 + +IF ERRORLEVEL 1 ( + echo CUDA not found. Keeping PyTorch installation without CUDA support... +) ELSE ( + echo CUDA found. Installing PyTorch with CUDA support... + REM uninstalling existing torch, torchvision, torchaudio + python -m pip uninstall torch torchaudio -y + python -m pip install torch~=2.4.1 torchaudio~=2.4.1 --index-url https://download.pytorch.org/whl/cu121 +) + REM copy config.example.yaml to config.yaml only if config.yaml doesn't exist IF NOT EXIST config.yaml copy config.example.yaml config.yaml REM navigate to the frontend directory +echo Installing frontend dependencies... cd talemate_frontend -npm install +call npm install + +echo Building frontend... +call npm run build REM return to the root directory cd .. diff --git a/install.sh b/install.sh index 6b1418d9..4bba180d 100644 --- a/install.sh +++ b/install.sh @@ -1,26 +1,49 @@ #!/bin/bash # create a virtual environment +echo "Creating a virtual environment..." python3 -m venv talemate_env # activate the virtual environment +echo "Activating the virtual environment..." source talemate_env/bin/activate # install poetry +echo "Installing poetry..." pip install poetry # use poetry to install dependencies +echo "Installing dependencies..." poetry install +# get input on whether to install torch with CUDA support +read -p "Do you want to install PyTorch with CUDA support? (y/n): " cuda + +# install torch with CUDA support if the user wants to +# pip install torch~=2.4.1 torchaudio~=2.4.1 --index-url https://download.pytorch.org/whl/cu121 +# if not, torch with cpu is alrady installed so nothing needs to be done +if [ $cuda == "y" ]; then + echo "Installing PyTorch with CUDA support..." + # uninstall torch and torchaudio + pip uninstall torch torchaudio -y + pip install torch~=2.4.1 torchaudio~=2.4.1 --index-url https://download.pytorch.org/whl/cu121 +fi + # copy config.example.yaml to config.yaml only if config.yaml doesn't exist if [ ! -f config.yaml ]; then + echo "Copying config.example.yaml to config.yaml..." cp config.example.yaml config.yaml fi # navigate to the frontend directory +echo "Updating the frontend..." cd talemate_frontend npm install +# build the frontend +echo "Building the frontend..." +npm run build + # return to the root directory cd .. diff --git a/poetry.lock b/poetry.lock index 906589a9..68080a01 100644 --- a/poetry.lock +++ b/poetry.lock @@ -14,93 +14,120 @@ files = [ [package.dependencies] pycares = ">=4.0.0" +[[package]] +name = "aiohappyeyeballs" +version = "2.4.0" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd"}, + {file = "aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2"}, +] + [[package]] name = "aiohttp" -version = "3.9.3" +version = "3.10.5" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, - {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, - {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, - {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, - {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, - {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, - {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, - {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, - {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, - {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, - {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, - {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:18a01eba2574fb9edd5f6e5fb25f66e6ce061da5dab5db75e13fe1558142e0a3"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:94fac7c6e77ccb1ca91e9eb4cb0ac0270b9fb9b289738654120ba8cebb1189c6"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f1f1c75c395991ce9c94d3e4aa96e5c59c8356a15b1c9231e783865e2772699"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7acae3cf1a2a2361ec4c8e787eaaa86a94171d2417aae53c0cca6ca3118ff6"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94c4381ffba9cc508b37d2e536b418d5ea9cfdc2848b9a7fea6aebad4ec6aac1"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c31ad0c0c507894e3eaa843415841995bf8de4d6b2d24c6e33099f4bc9fc0d4f"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0912b8a8fadeb32ff67a3ed44249448c20148397c1ed905d5dac185b4ca547bb"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d93400c18596b7dc4794d48a63fb361b01a0d8eb39f28800dc900c8fbdaca91"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d00f3c5e0d764a5c9aa5a62d99728c56d455310bcc288a79cab10157b3af426f"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d742c36ed44f2798c8d3f4bc511f479b9ceef2b93f348671184139e7d708042c"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:814375093edae5f1cb31e3407997cf3eacefb9010f96df10d64829362ae2df69"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8224f98be68a84b19f48e0bdc14224b5a71339aff3a27df69989fa47d01296f3"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9a487ef090aea982d748b1b0d74fe7c3950b109df967630a20584f9a99c0683"}, + {file = "aiohttp-3.10.5-cp310-cp310-win32.whl", hash = "sha256:d9ef084e3dc690ad50137cc05831c52b6ca428096e6deb3c43e95827f531d5ef"}, + {file = "aiohttp-3.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:66bf9234e08fe561dccd62083bf67400bdbf1c67ba9efdc3dac03650e97c6088"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c6a4e5e40156d72a40241a25cc226051c0a8d816610097a8e8f517aeacd59a2"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c634a3207a5445be65536d38c13791904fda0748b9eabf908d3fe86a52941cf"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4aff049b5e629ef9b3e9e617fa6e2dfeda1bf87e01bcfecaf3949af9e210105e"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1942244f00baaacaa8155eca94dbd9e8cc7017deb69b75ef67c78e89fdad3c77"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04a1f2a65ad2f93aa20f9ff9f1b672bf912413e5547f60749fa2ef8a644e061"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f2bfc0032a00405d4af2ba27f3c429e851d04fad1e5ceee4080a1c570476697"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424ae21498790e12eb759040bbb504e5e280cab64693d14775c54269fd1d2bb7"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:975218eee0e6d24eb336d0328c768ebc5d617609affaca5dbbd6dd1984f16ed0"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4120d7fefa1e2d8fb6f650b11489710091788de554e2b6f8347c7a20ceb003f5"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b90078989ef3fc45cf9221d3859acd1108af7560c52397ff4ace8ad7052a132e"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ba5a8b74c2a8af7d862399cdedce1533642fa727def0b8c3e3e02fcb52dca1b1"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:02594361128f780eecc2a29939d9dfc870e17b45178a867bf61a11b2a4367277"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4fc029e135859f533025bc82047334e24b0d489e75513144f25408ecaf058"}, + {file = "aiohttp-3.10.5-cp311-cp311-win32.whl", hash = "sha256:e1ca1ef5ba129718a8fc827b0867f6aa4e893c56eb00003b7367f8a733a9b072"}, + {file = "aiohttp-3.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:349ef8a73a7c5665cca65c88ab24abe75447e28aa3bc4c93ea5093474dfdf0ff"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:305be5ff2081fa1d283a76113b8df7a14c10d75602a38d9f012935df20731487"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3a1c32a19ee6bbde02f1cb189e13a71b321256cc1d431196a9f824050b160d5a"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:61645818edd40cc6f455b851277a21bf420ce347baa0b86eaa41d51ef58ba23d"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c225286f2b13bab5987425558baa5cbdb2bc925b2998038fa028245ef421e75"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ba01ebc6175e1e6b7275c907a3a36be48a2d487549b656aa90c8a910d9f3178"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8eaf44ccbc4e35762683078b72bf293f476561d8b68ec8a64f98cf32811c323e"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c43eb1ab7cbf411b8e387dc169acb31f0ca0d8c09ba63f9eac67829585b44f"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7a5299827253023c55ea549444e058c0eb496931fa05d693b95140a947cb73"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4790f0e15f00058f7599dab2b206d3049d7ac464dc2e5eae0e93fa18aee9e7bf"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:44b324a6b8376a23e6ba25d368726ee3bc281e6ab306db80b5819999c737d820"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0d277cfb304118079e7044aad0b76685d30ecb86f83a0711fc5fb257ffe832ca"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:54d9ddea424cd19d3ff6128601a4a4d23d54a421f9b4c0fff740505813739a91"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4f1c9866ccf48a6df2b06823e6ae80573529f2af3a0992ec4fe75b1a510df8a6"}, + {file = "aiohttp-3.10.5-cp312-cp312-win32.whl", hash = "sha256:dc4826823121783dccc0871e3f405417ac116055bf184ac04c36f98b75aacd12"}, + {file = "aiohttp-3.10.5-cp312-cp312-win_amd64.whl", hash = "sha256:22c0a23a3b3138a6bf76fc553789cb1a703836da86b0f306b6f0dc1617398abc"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7f6b639c36734eaa80a6c152a238242bedcee9b953f23bb887e9102976343092"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f29930bc2921cef955ba39a3ff87d2c4398a0394ae217f41cb02d5c26c8b1b77"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f489a2c9e6455d87eabf907ac0b7d230a9786be43fbe884ad184ddf9e9c1e385"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:123dd5b16b75b2962d0fff566effb7a065e33cd4538c1692fb31c3bda2bfb972"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b98e698dc34966e5976e10bbca6d26d6724e6bdea853c7c10162a3235aba6e16"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3b9162bab7e42f21243effc822652dc5bb5e8ff42a4eb62fe7782bcbcdfacf6"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1923a5c44061bffd5eebeef58cecf68096e35003907d8201a4d0d6f6e387ccaa"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55f011da0a843c3d3df2c2cf4e537b8070a419f891c930245f05d329c4b0689"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:afe16a84498441d05e9189a15900640a2d2b5e76cf4efe8cbb088ab4f112ee57"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8112fb501b1e0567a1251a2fd0747baae60a4ab325a871e975b7bb67e59221f"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e72589da4c90337837fdfe2026ae1952c0f4a6e793adbbfbdd40efed7c63599"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4d46c7b4173415d8e583045fbc4daa48b40e31b19ce595b8d92cf639396c15d5"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33e6bc4bab477c772a541f76cd91e11ccb6d2efa2b8d7d7883591dfb523e5987"}, + {file = "aiohttp-3.10.5-cp313-cp313-win32.whl", hash = "sha256:c58c6837a2c2a7cf3133983e64173aec11f9c2cd8e87ec2fdc16ce727bcf1a04"}, + {file = "aiohttp-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:38172a70005252b6893088c0f5e8a47d173df7cc2b2bd88650957eb84fcf5022"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f6f18898ace4bcd2d41a122916475344a87f1dfdec626ecde9ee802a711bc569"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5ede29d91a40ba22ac1b922ef510aab871652f6c88ef60b9dcdf773c6d32ad7a"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:673f988370f5954df96cc31fd99c7312a3af0a97f09e407399f61583f30da9bc"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58718e181c56a3c02d25b09d4115eb02aafe1a732ce5714ab70326d9776457c3"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b38b1570242fbab8d86a84128fb5b5234a2f70c2e32f3070143a6d94bc854cf"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:074d1bff0163e107e97bd48cad9f928fa5a3eb4b9d33366137ffce08a63e37fe"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd31f176429cecbc1ba499d4aba31aaccfea488f418d60376b911269d3b883c5"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7384d0b87d4635ec38db9263e6a3f1eb609e2e06087f0aa7f63b76833737b471"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8989f46f3d7ef79585e98fa991e6ded55d2f48ae56d2c9fa5e491a6e4effb589"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c83f7a107abb89a227d6c454c613e7606c12a42b9a4ca9c5d7dad25d47c776ae"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cde98f323d6bf161041e7627a5fd763f9fd829bcfcd089804a5fdce7bb6e1b7d"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:676f94c5480d8eefd97c0c7e3953315e4d8c2b71f3b49539beb2aa676c58272f"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2d21ac12dc943c68135ff858c3a989f2194a709e6e10b4c8977d7fcd67dfd511"}, + {file = "aiohttp-3.10.5-cp38-cp38-win32.whl", hash = "sha256:17e997105bd1a260850272bfb50e2a328e029c941c2708170d9d978d5a30ad9a"}, + {file = "aiohttp-3.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:1c19de68896747a2aa6257ae4cf6ef59d73917a36a35ee9d0a6f48cff0f94db8"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7e2fe37ac654032db1f3499fe56e77190282534810e2a8e833141a021faaab0e"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5bf3ead3cb66ab990ee2561373b009db5bc0e857549b6c9ba84b20bc462e172"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b2c16a919d936ca87a3c5f0e43af12a89a3ce7ccbce59a2d6784caba945b68b"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad146dae5977c4dd435eb31373b3fe9b0b1bf26858c6fc452bf6af394067e10b"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c5c6fa16412b35999320f5c9690c0f554392dc222c04e559217e0f9ae244b92"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:95c4dc6f61d610bc0ee1edc6f29d993f10febfe5b76bb470b486d90bbece6b22"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da452c2c322e9ce0cfef392e469a26d63d42860f829026a63374fde6b5c5876f"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:898715cf566ec2869d5cb4d5fb4be408964704c46c96b4be267442d265390f32"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:391cc3a9c1527e424c6865e087897e766a917f15dddb360174a70467572ac6ce"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:380f926b51b92d02a34119d072f178d80bbda334d1a7e10fa22d467a66e494db"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce91db90dbf37bb6fa0997f26574107e1b9d5ff939315247b7e615baa8ec313b"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9093a81e18c45227eebe4c16124ebf3e0d893830c6aca7cc310bfca8fe59d857"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ee40b40aa753d844162dcc80d0fe256b87cba48ca0054f64e68000453caead11"}, + {file = "aiohttp-3.10.5-cp39-cp39-win32.whl", hash = "sha256:03f2645adbe17f274444953bdea69f8327e9d278d961d85657cb0d06864814c1"}, + {file = "aiohttp-3.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:d17920f18e6ee090bdd3d0bfffd769d9f2cb4c8ffde3eb203777a3895c128862"}, + {file = "aiohttp-3.10.5.tar.gz", hash = "sha256:f071854b47d39591ce9a17981c46790acb30518e2f83dfca8db2dfa091178691"}, ] [package.dependencies] -aiodns = {version = "*", optional = true, markers = "(sys_platform == \"linux\" or sys_platform == \"darwin\") and extra == \"speedups\""} +aiodns = {version = ">=3.2.0", optional = true, markers = "(sys_platform == \"linux\" or sys_platform == \"darwin\") and extra == \"speedups\""} +aiohappyeyeballs = ">=2.3.0" aiosignal = ">=1.1.2" async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""} attrs = ">=17.3.0" @@ -111,7 +138,7 @@ multidict = ">=4.5,<7.0" yarl = ">=1.0,<2.0" [package.extras] -speedups = ["Brotli", "aiodns", "brotlicffi"] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aiohttp-retry" @@ -154,13 +181,13 @@ files = [ [[package]] name = "anthropic" -version = "0.31.0" +version = "0.34.2" description = "The official Python library for the anthropic API" optional = false python-versions = ">=3.7" files = [ - {file = "anthropic-0.31.0-py3-none-any.whl", hash = "sha256:77f7a428e1723b79a571c2427ae885d9257c68f700726dff7ce684c3972d6598"}, - {file = "anthropic-0.31.0.tar.gz", hash = "sha256:14f8f65231859a65ec9aacbbea070e412c8bd41a5d3f36793dac4292c3c78d3a"}, + {file = "anthropic-0.34.2-py3-none-any.whl", hash = "sha256:f50a628eb71e2c76858b106c8cbea278c45c6bd2077cb3aff716a112abddc9fc"}, + {file = "anthropic-0.34.2.tar.gz", hash = "sha256:808ea19276f26646bfde9ee535669735519376e4eeb301a2974fc69892be1d6e"}, ] [package.dependencies] @@ -179,13 +206,13 @@ vertex = ["google-auth (>=2,<3)"] [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, ] [package.dependencies] @@ -195,9 +222,9 @@ sniffio = ">=1.1" typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -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)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +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.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "asgiref" @@ -258,32 +285,32 @@ files = [ [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.15.0" +version = "2.16.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, - {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, ] [package.extras] @@ -302,38 +329,38 @@ files = [ [[package]] name = "bcrypt" -version = "4.1.3" +version = "4.2.0" description = "Modern password hashing for your software and your servers" optional = false python-versions = ">=3.7" files = [ - {file = "bcrypt-4.1.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:48429c83292b57bf4af6ab75809f8f4daf52aa5d480632e53707805cc1ce9b74"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8bea4c152b91fd8319fef4c6a790da5c07840421c2b785084989bf8bbb7455"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d3b317050a9a711a5c7214bf04e28333cf528e0ed0ec9a4e55ba628d0f07c1a"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:094fd31e08c2b102a14880ee5b3d09913ecf334cd604af27e1013c76831f7b05"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4fb253d65da30d9269e0a6f4b0de32bd657a0208a6f4e43d3e645774fb5457f3"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:193bb49eeeb9c1e2db9ba65d09dc6384edd5608d9d672b4125e9320af9153a15"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8cbb119267068c2581ae38790e0d1fbae65d0725247a930fc9900c285d95725d"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6cac78a8d42f9d120b3987f82252bdbeb7e6e900a5e1ba37f6be6fe4e3848286"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:01746eb2c4299dd0ae1670234bf77704f581dd72cc180f444bfe74eb80495b64"}, - {file = "bcrypt-4.1.3-cp37-abi3-win32.whl", hash = "sha256:037c5bf7c196a63dcce75545c8874610c600809d5d82c305dd327cd4969995bf"}, - {file = "bcrypt-4.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:8a893d192dfb7c8e883c4576813bf18bb9d59e2cfd88b68b725990f033f1b978"}, - {file = "bcrypt-4.1.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d4cf6ef1525f79255ef048b3489602868c47aea61f375377f0d00514fe4a78c"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5698ce5292a4e4b9e5861f7e53b1d89242ad39d54c3da451a93cac17b61921a"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec3c2e1ca3e5c4b9edb94290b356d082b721f3f50758bce7cce11d8a7c89ce84"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3a5be252fef513363fe281bafc596c31b552cf81d04c5085bc5dac29670faa08"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5f7cd3399fbc4ec290378b541b0cf3d4398e4737a65d0f938c7c0f9d5e686611"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:c4c8d9b3e97209dd7111bf726e79f638ad9224b4691d1c7cfefa571a09b1b2d6"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:31adb9cbb8737a581a843e13df22ffb7c84638342de3708a98d5c986770f2834"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:551b320396e1d05e49cc18dd77d970accd52b322441628aca04801bbd1d52a73"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6717543d2c110a155e6821ce5670c1f512f602eabb77dba95717ca76af79867d"}, - {file = "bcrypt-4.1.3-cp39-abi3-win32.whl", hash = "sha256:6004f5229b50f8493c49232b8e75726b568535fd300e5039e255d919fc3a07f2"}, - {file = "bcrypt-4.1.3-cp39-abi3-win_amd64.whl", hash = "sha256:2505b54afb074627111b5a8dc9b6ae69d0f01fea65c2fcaea403448c503d3991"}, - {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:cb9c707c10bddaf9e5ba7cdb769f3e889e60b7d4fea22834b261f51ca2b89fed"}, - {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9f8ea645eb94fb6e7bea0cf4ba121c07a3a182ac52876493870033141aa687bc"}, - {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f44a97780677e7ac0ca393bd7982b19dbbd8d7228c1afe10b128fd9550eef5f1"}, - {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d84702adb8f2798d813b17d8187d27076cca3cd52fe3686bb07a9083930ce650"}, - {file = "bcrypt-4.1.3.tar.gz", hash = "sha256:2ee15dd749f5952fe3f0430d0ff6b74082e159c50332a1413d51b5689cf06623"}, + {file = "bcrypt-4.2.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:096a15d26ed6ce37a14c1ac1e48119660f21b24cba457f160a4b830f3fe6b5cb"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c02d944ca89d9b1922ceb8a46460dd17df1ba37ab66feac4870f6862a1533c00"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d84cf6d877918620b687b8fd1bf7781d11e8a0998f576c7aa939776b512b98d"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1bb429fedbe0249465cdd85a58e8376f31bb315e484f16e68ca4c786dcc04291"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:655ea221910bcac76ea08aaa76df427ef8625f92e55a8ee44fbf7753dbabb328"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:1ee38e858bf5d0287c39b7a1fc59eec64bbf880c7d504d3a06a96c16e14058e7"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0da52759f7f30e83f1e30a888d9163a81353ef224d82dc58eb5bb52efcabc399"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3698393a1b1f1fd5714524193849d0c6d524d33523acca37cd28f02899285060"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:762a2c5fb35f89606a9fde5e51392dad0cd1ab7ae64149a8b935fe8d79dd5ed7"}, + {file = "bcrypt-4.2.0-cp37-abi3-win32.whl", hash = "sha256:5a1e8aa9b28ae28020a3ac4b053117fb51c57a010b9f969603ed885f23841458"}, + {file = "bcrypt-4.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:8f6ede91359e5df88d1f5c1ef47428a4420136f3ce97763e31b86dd8280fbdf5"}, + {file = "bcrypt-4.2.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:c52aac18ea1f4a4f65963ea4f9530c306b56ccd0c6f8c8da0c06976e34a6e841"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3bbbfb2734f0e4f37c5136130405332640a1e46e6b23e000eeff2ba8d005da68"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3413bd60460f76097ee2e0a493ccebe4a7601918219c02f503984f0a7ee0aebe"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8d7bb9c42801035e61c109c345a28ed7e84426ae4865511eb82e913df18f58c2"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d3a6d28cb2305b43feac298774b997e372e56c7c7afd90a12b3dc49b189151c"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9c1c4ad86351339c5f320ca372dfba6cb6beb25e8efc659bedd918d921956bae"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:27fe0f57bb5573104b5a6de5e4153c60814c711b29364c10a75a54bb6d7ff48d"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8ac68872c82f1add6a20bd489870c71b00ebacd2e9134a8aa3f98a0052ab4b0e"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:cb2a8ec2bc07d3553ccebf0746bbf3d19426d1c6d1adbd4fa48925f66af7b9e8"}, + {file = "bcrypt-4.2.0-cp39-abi3-win32.whl", hash = "sha256:77800b7147c9dc905db1cba26abe31e504d8247ac73580b4aa179f98e6608f34"}, + {file = "bcrypt-4.2.0-cp39-abi3-win_amd64.whl", hash = "sha256:61ed14326ee023917ecd093ee6ef422a72f3aec6f07e21ea5f10622b735538a9"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:39e1d30c7233cfc54f5c3f2c825156fe044efdd3e0b9d309512cc514a263ec2a"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f4f4acf526fcd1c34e7ce851147deedd4e26e6402369304220250598b26448db"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:1ff39b78a52cf03fdf902635e4c81e544714861ba3f0efc56558979dd4f09170"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:373db9abe198e8e2c70d12b479464e0d5092cc122b20ec504097b5f2297ed184"}, + {file = "bcrypt-4.2.0.tar.gz", hash = "sha256:cf69eaf5185fd58f268f805b505ce31f9b9fc2d64b376642164e9244540c1221"}, ] [package.extras] @@ -363,33 +390,33 @@ lxml = ["lxml"] [[package]] name = "black" -version = "24.4.2" +version = "24.8.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, - {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, - {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, - {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, - {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, - {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, - {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, - {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, - {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, - {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, - {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, - {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, - {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, - {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, - {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, - {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, - {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, - {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, - {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, - {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, - {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, - {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, + {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, + {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, + {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, + {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, + {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, + {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, + {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, + {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, + {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, + {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, + {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, + {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, + {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, + {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, + {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, + {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, + {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, + {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, + {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, + {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, + {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, + {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, ] [package.dependencies] @@ -420,17 +447,17 @@ files = [ [[package]] name = "boto3" -version = "1.34.144" +version = "1.35.24" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.34.144-py3-none-any.whl", hash = "sha256:b8433d481d50b68a0162c0379c0dd4aabfc3d1ad901800beb5b87815997511c1"}, - {file = "boto3-1.34.144.tar.gz", hash = "sha256:2f3e88b10b8fcc5f6100a9d74cd28230edc9d4fa226d99dd40a3ab38ac213673"}, + {file = "boto3-1.35.24-py3-none-any.whl", hash = "sha256:97fcc1a14cbc759e4ba9535ced703a99fcf652c9c4b8dfcd06f292c80551684b"}, + {file = "boto3-1.35.24.tar.gz", hash = "sha256:be7807f30f26d6c0057e45cfd09dad5968e664488bf4f9138d0bb7a0f6d8ed40"}, ] [package.dependencies] -botocore = ">=1.34.144,<1.35.0" +botocore = ">=1.35.24,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -439,13 +466,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.144" +version = "1.35.24" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.34.144-py3-none-any.whl", hash = "sha256:a2cf26e1bf10d5917a2285e50257bc44e94a1d16574f282f3274f7a5d8d1f08b"}, - {file = "botocore-1.34.144.tar.gz", hash = "sha256:4215db28d25309d59c99507f1f77df9089e5bebbad35f6e19c7c44ec5383a3e8"}, + {file = "botocore-1.35.24-py3-none-any.whl", hash = "sha256:eb9ccc068255cc3d24c36693fda6aec7786db05ae6c2b13bcba66dce6a13e2e3"}, + {file = "botocore-1.35.24.tar.gz", hash = "sha256:1e59b0f14f4890c4f70bd6a58a634b9464bed1c4c6171f87c8795d974ade614b"}, ] [package.dependencies] @@ -454,17 +481,17 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.20.11)"] +crt = ["awscrt (==0.21.5)"] [[package]] name = "bracex" -version = "2.4" +version = "2.5" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.4-py3-none-any.whl", hash = "sha256:efdc71eff95eaff5e0f8cfebe7d01adf2c8637c8c92edaf63ef348c241a82418"}, - {file = "bracex-2.4.tar.gz", hash = "sha256:a27eaf1df42cf561fed58b7a8f3fdf129d1ea16a81e1fadd1d17989bc6384beb"}, + {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, + {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, ] [[package]] @@ -600,13 +627,13 @@ cffi = ">=1.0.0" [[package]] name = "build" -version = "1.2.1" +version = "1.2.2" description = "A simple, correct Python build frontend" optional = false python-versions = ">=3.8" files = [ - {file = "build-1.2.1-py3-none-any.whl", hash = "sha256:75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4"}, - {file = "build-1.2.1.tar.gz", hash = "sha256:526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d"}, + {file = "build-1.2.2-py3-none-any.whl", hash = "sha256:277ccc71619d98afdd841a0e96ac9fe1593b823af481d3b0cea748e8894e0613"}, + {file = "build-1.2.2.tar.gz", hash = "sha256:119b2fb462adef986483438377a13b2f42064a2a3a4161f24a0cca698a07ac8c"}, ] [package.dependencies] @@ -625,85 +652,100 @@ virtualenv = ["virtualenv (>=20.0.35)"] [[package]] name = "cachetools" -version = "5.3.3" +version = "5.5.0" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, - {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, + {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, + {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, ] [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] name = "cffi" -version = "1.16.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -810,41 +852,40 @@ files = [ [[package]] name = "chroma-hnswlib" -version = "0.7.5" +version = "0.7.6" description = "Chromas fork of hnswlib" optional = false python-versions = "*" files = [ - {file = "chroma_hnswlib-0.7.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:624ab09491a9bf2523ad54d8fdf8e868a706814373534eeb1f0d8195db03be6c"}, - {file = "chroma_hnswlib-0.7.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b838b4f231bbf0e62b89552f2814eebbc3e17173abe50cb547c4c4aadbf62f6c"}, - {file = "chroma_hnswlib-0.7.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5f234e67632a33f75d8f6cb39f457fb7d10d16fdb48ba52f55a8983ac59cb4f"}, - {file = "chroma_hnswlib-0.7.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf54240944a0487d7aefb1338b6ea74f784aa888c41c6f1e96b66e24a40d37cd"}, - {file = "chroma_hnswlib-0.7.5-cp310-cp310-win_amd64.whl", hash = "sha256:49fec3f01adc829104ed428b7d4362382092d481e01456f3f46040af5aa044ee"}, - {file = "chroma_hnswlib-0.7.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:18cdbbf93c5b4855f2a050808976f5d261b36055b392a2df632a574410ffefaa"}, - {file = "chroma_hnswlib-0.7.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:35b17814041d9512e99832327f49138da470df6478c9ad1e9ca334d9c18720dd"}, - {file = "chroma_hnswlib-0.7.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70893cfde9ac979ec17bb7389d6aa47e422930ccc20353778524d668473ee702"}, - {file = "chroma_hnswlib-0.7.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1453494aea293ce2d8d38e7713b2b459e4245c59a744f9b3f85488165eb52b74"}, - {file = "chroma_hnswlib-0.7.5-cp311-cp311-win_amd64.whl", hash = "sha256:109ee141a2f1241f7d7729443d96ea1450564c6c0923722a8139d70d738d1ad8"}, - {file = "chroma_hnswlib-0.7.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bf721938246f3c95340313cd7ac2564a38142e137d7fce9b098a0fd774bbc7ea"}, - {file = "chroma_hnswlib-0.7.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dda8ff4609b41dab4cca14d146e4dda0d365be6264877de5dd17d8dee314740"}, - {file = "chroma_hnswlib-0.7.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af3a84ceebea8f750467304fabbeb77d5fa2b75ccf55fd2e0494c2ad84527df5"}, - {file = "chroma_hnswlib-0.7.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e178ace2050e4e46c4f899d3cb15ad11a8dc6452eb9e365918c65f171bbf01e0"}, - {file = "chroma_hnswlib-0.7.5-cp312-cp312-win_amd64.whl", hash = "sha256:ddf183960bd5081e23310377153b5bdd3ed1540b74271f3ff8aa741de165e39d"}, - {file = "chroma_hnswlib-0.7.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:86ddae071363ba0f0c03325b6f022cfb14a969b9c989e188cfcaa81d8e0df177"}, - {file = "chroma_hnswlib-0.7.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dbff5658955df5983d32439b698b83044e8f612590716cd499e81376672edbd"}, - {file = "chroma_hnswlib-0.7.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b50209cced093f286a76c619cc2b404a5da29df6792f5852fdf514a24b8acb4c"}, - {file = "chroma_hnswlib-0.7.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4c1535106ad3c6a727b8b2cdb01e02abf8a603b83489cb50bde3a6811731dee2"}, - {file = "chroma_hnswlib-0.7.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:36e35f7773313480c27d0b63b26863408c9c6ab47f44d581783d4693bc52f54c"}, - {file = "chroma_hnswlib-0.7.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:932220cc42a30abc9fdfa230be7ebdd25c1c4967a5ea514119b65ba0844fe193"}, - {file = "chroma_hnswlib-0.7.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85d12ada7a55271fbd2839fb1fdae9e2f485db7dad871f23fa359ec68d16a5e0"}, - {file = "chroma_hnswlib-0.7.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1657dff26eedb24f55d0a3f371bbe02c15c1fef447c8e57fba3e99c42f7683b"}, - {file = "chroma_hnswlib-0.7.5-cp38-cp38-win_amd64.whl", hash = "sha256:2336483218ff5329743d8fcad3d7f870e220503f01ee9420c9469d857783015f"}, - {file = "chroma_hnswlib-0.7.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a4920e0b3045feb4bfe3cf891233024839d5e8384fee505b91a70ca540eef0ef"}, - {file = "chroma_hnswlib-0.7.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9f64134544c5c38d1075b314fcdc364bab6ba68f2e96e223b14559b7bef6f5ac"}, - {file = "chroma_hnswlib-0.7.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:561ae3cb8dbf28251f8980666b608d9800c5f17d6eec53a27c7bd9b4d1093b34"}, - {file = "chroma_hnswlib-0.7.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645c6309761aadcf378eb88d7a9b598574a8033274d8931b9ca7079eb2206425"}, - {file = "chroma_hnswlib-0.7.5-cp39-cp39-win_amd64.whl", hash = "sha256:89a80901995c68c4e019edf1375f8b2aaeb9e42e12faab6f999fdfd91aee53ee"}, - {file = "chroma_hnswlib-0.7.5.tar.gz", hash = "sha256:45537d0142ad0fadf712092b8be55de211613d0322627a1a2de05b6e800c2954"}, + {file = "chroma_hnswlib-0.7.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f35192fbbeadc8c0633f0a69c3d3e9f1a4eab3a46b65458bbcbcabdd9e895c36"}, + {file = "chroma_hnswlib-0.7.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f007b608c96362b8f0c8b6b2ac94f67f83fcbabd857c378ae82007ec92f4d82"}, + {file = "chroma_hnswlib-0.7.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:456fd88fa0d14e6b385358515aef69fc89b3c2191706fd9aee62087b62aad09c"}, + {file = "chroma_hnswlib-0.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dfaae825499c2beaa3b75a12d7ec713b64226df72a5c4097203e3ed532680da"}, + {file = "chroma_hnswlib-0.7.6-cp310-cp310-win_amd64.whl", hash = "sha256:2487201982241fb1581be26524145092c95902cb09fc2646ccfbc407de3328ec"}, + {file = "chroma_hnswlib-0.7.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:81181d54a2b1e4727369486a631f977ffc53c5533d26e3d366dda243fb0998ca"}, + {file = "chroma_hnswlib-0.7.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4b4ab4e11f1083dd0a11ee4f0e0b183ca9f0f2ed63ededba1935b13ce2b3606f"}, + {file = "chroma_hnswlib-0.7.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53db45cd9173d95b4b0bdccb4dbff4c54a42b51420599c32267f3abbeb795170"}, + {file = "chroma_hnswlib-0.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c093f07a010b499c00a15bc9376036ee4800d335360570b14f7fe92badcdcf9"}, + {file = "chroma_hnswlib-0.7.6-cp311-cp311-win_amd64.whl", hash = "sha256:0540b0ac96e47d0aa39e88ea4714358ae05d64bbe6bf33c52f316c664190a6a3"}, + {file = "chroma_hnswlib-0.7.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e87e9b616c281bfbe748d01705817c71211613c3b063021f7ed5e47173556cb7"}, + {file = "chroma_hnswlib-0.7.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ec5ca25bc7b66d2ecbf14502b5729cde25f70945d22f2aaf523c2d747ea68912"}, + {file = "chroma_hnswlib-0.7.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305ae491de9d5f3c51e8bd52d84fdf2545a4a2bc7af49765cda286b7bb30b1d4"}, + {file = "chroma_hnswlib-0.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:822ede968d25a2c88823ca078a58f92c9b5c4142e38c7c8b4c48178894a0a3c5"}, + {file = "chroma_hnswlib-0.7.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2fe6ea949047beed19a94b33f41fe882a691e58b70c55fdaa90274ae78be046f"}, + {file = "chroma_hnswlib-0.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feceff971e2a2728c9ddd862a9dd6eb9f638377ad98438876c9aeac96c9482f5"}, + {file = "chroma_hnswlib-0.7.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb0633b60e00a2b92314d0bf5bbc0da3d3320be72c7e3f4a9b19f4609dc2b2ab"}, + {file = "chroma_hnswlib-0.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:a566abe32fab42291f766d667bdbfa234a7f457dcbd2ba19948b7a978c8ca624"}, + {file = "chroma_hnswlib-0.7.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6be47853d9a58dedcfa90fc846af202b071f028bbafe1d8711bf64fe5a7f6111"}, + {file = "chroma_hnswlib-0.7.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3a7af35bdd39a88bffa49f9bb4bf4f9040b684514a024435a1ef5cdff980579d"}, + {file = "chroma_hnswlib-0.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a53b1f1551f2b5ad94eb610207bde1bb476245fc5097a2bec2b476c653c58bde"}, + {file = "chroma_hnswlib-0.7.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3085402958dbdc9ff5626ae58d696948e715aef88c86d1e3f9285a88f1afd3bc"}, + {file = "chroma_hnswlib-0.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:77326f658a15adfb806a16543f7db7c45f06fd787d699e643642d6bde8ed49c4"}, + {file = "chroma_hnswlib-0.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:93b056ab4e25adab861dfef21e1d2a2756b18be5bc9c292aa252fa12bb44e6ae"}, + {file = "chroma_hnswlib-0.7.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fe91f018b30452c16c811fd6c8ede01f84e5a9f3c23e0758775e57f1c3778871"}, + {file = "chroma_hnswlib-0.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6c0e627476f0f4d9e153420d36042dd9c6c3671cfd1fe511c0253e38c2a1039"}, + {file = "chroma_hnswlib-0.7.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e9796a4536b7de6c6d76a792ba03e08f5aaa53e97e052709568e50b4d20c04f"}, + {file = "chroma_hnswlib-0.7.6-cp39-cp39-win_amd64.whl", hash = "sha256:d30e2db08e7ffdcc415bd072883a322de5995eb6ec28a8f8c054103bbd3ec1e0"}, + {file = "chroma_hnswlib-0.7.6.tar.gz", hash = "sha256:4dce282543039681160259d29fcde6151cc9106c6461e0485f57cdccd83059b7"}, ] [package.dependencies] @@ -852,26 +893,26 @@ numpy = "*" [[package]] name = "chromadb" -version = "0.5.4" +version = "0.5.7" description = "Chroma." optional = false python-versions = ">=3.8" files = [ - {file = "chromadb-0.5.4-py3-none-any.whl", hash = "sha256:60f468d44527bea8f88bd39ee26744d0d59c386dacbe544ff715e534691df0e8"}, - {file = "chromadb-0.5.4.tar.gz", hash = "sha256:02878f527befa8f80ab350023241dbb29313a168f93010208f071e3db9572bb4"}, + {file = "chromadb-0.5.7-py3-none-any.whl", hash = "sha256:2358f92804cd198b125de73076ec48f9f55c729df119919a76a6716ad0e465f6"}, + {file = "chromadb-0.5.7.tar.gz", hash = "sha256:3432865025ef3ceeaee0a59b265a784d8b5978cb7c41593c74ddd2427c776c94"}, ] [package.dependencies] bcrypt = ">=4.0.1" build = ">=1.0.3" -chroma-hnswlib = "0.7.5" +chroma-hnswlib = "0.7.6" fastapi = ">=0.95.2" grpcio = ">=1.58.0" httpx = ">=0.27.0" importlib-resources = "*" kubernetes = ">=28.1.0" mmh3 = ">=4.0.1" -numpy = ">=1.22.5,<2.0.0" +numpy = ">=1.22.5" onnxruntime = ">=1.14.1" opentelemetry-api = ">=1.2.0" opentelemetry-exporter-otlp-proto-grpc = ">=1.2.0" @@ -883,6 +924,7 @@ posthog = ">=2.4.0" pydantic = ">=1.9" pypika = ">=0.48.9" PyYAML = ">=6.0.0" +rich = ">=10.11.0" tenacity = ">=8.2.3" tokenizers = ">=0.13.2" tqdm = ">=4.65.0" @@ -906,22 +948,23 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cohere" -version = "5.5.8" +version = "5.9.4" description = "" optional = false python-versions = "<4.0,>=3.8" files = [ - {file = "cohere-5.5.8-py3-none-any.whl", hash = "sha256:e1ed84b90eadd13c6a68ee28e378a0bb955f8945eadc6eb7ee126b3399cafd54"}, - {file = "cohere-5.5.8.tar.gz", hash = "sha256:84ce7666ff8fbdf4f41fb5f6ca452ab2639a514bc88967a2854a9b1b820d6ea0"}, + {file = "cohere-5.9.4-py3-none-any.whl", hash = "sha256:d1b31d8ba32e338b3aa91737aa98dc74de8778ed8e397ab799739b5f060f44e7"}, + {file = "cohere-5.9.4.tar.gz", hash = "sha256:ed0fa256c51423175c208650dffcb534ae112dc3ab7703de352e2adaf99dd50b"}, ] [package.dependencies] boto3 = ">=1.34.0,<2.0.0" fastavro = ">=1.9.4,<2.0.0" httpx = ">=0.21.2" -httpx-sse = ">=0.4.0,<0.5.0" +httpx-sse = "0.4.0" parameterized = ">=0.9.0,<0.10.0" pydantic = ">=1.9.2" +pydantic-core = ">=2.18.2,<3.0.0" requests = ">=2.0.0,<3.0.0" tokenizers = ">=0.15,<1" types-requests = ">=2.0.0,<3.0.0" @@ -1068,6 +1111,16 @@ files = [ {file = "docstring_parser-0.16.tar.gz", hash = "sha256:538beabd0af1e2db0146b6bd3caa526c35a34d61af9fd2887f3a8a27a739aa6e"}, ] +[[package]] +name = "durationpy" +version = "0.7" +description = "Module for converting between datetime.timedelta and Go's Duration strings." +optional = false +python-versions = "*" +files = [ + {file = "durationpy-0.7.tar.gz", hash = "sha256:8447c43df4f1a0b434e70c15a38d77f5c9bd17284bfc1ff1d430f233d5083732"}, +] + [[package]] name = "email-validator" version = "2.2.0" @@ -1099,90 +1152,92 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.111.1" +version = "0.115.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.111.1-py3-none-any.whl", hash = "sha256:4f51cfa25d72f9fbc3280832e84b32494cf186f50158d364a8765aabf22587bf"}, - {file = "fastapi-0.111.1.tar.gz", hash = "sha256:ddd1ac34cb1f76c2e2d7f8545a4bcb5463bce4834e81abf0b189e0c359ab2413"}, + {file = "fastapi-0.115.0-py3-none-any.whl", hash = "sha256:17ea427674467486e997206a5ab25760f6b09e069f099b96f5b55a32fb6f1631"}, + {file = "fastapi-0.115.0.tar.gz", hash = "sha256:f93b4ca3529a8ebc6fc3fcf710e5efa8de3df9b41570958abf1d97d843138004"}, ] [package.dependencies] -email_validator = ">=2.0.0" -fastapi-cli = ">=0.0.2" -httpx = ">=0.23.0" +email-validator = {version = ">=2.0.0", optional = true, markers = "extra == \"all\""} +fastapi-cli = {version = ">=0.0.5", extras = ["standard"], optional = true, markers = "extra == \"all\""} +httpx = {version = ">=0.23.0", optional = true, markers = "extra == \"all\""} itsdangerous = {version = ">=1.1.0", optional = true, markers = "extra == \"all\""} -jinja2 = ">=2.11.2" +jinja2 = {version = ">=2.11.2", optional = true, markers = "extra == \"all\""} orjson = {version = ">=3.2.1", optional = true, markers = "extra == \"all\""} 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" pydantic-extra-types = {version = ">=2.0.0", optional = true, markers = "extra == \"all\""} pydantic-settings = {version = ">=2.0.0", optional = true, markers = "extra == \"all\""} -python-multipart = ">=0.0.7" +python-multipart = {version = ">=0.0.7", optional = true, markers = "extra == \"all\""} pyyaml = {version = ">=5.3.1", optional = true, markers = "extra == \"all\""} -starlette = ">=0.37.2,<0.38.0" +starlette = ">=0.37.2,<0.39.0" typing-extensions = ">=4.8.0" ujson = {version = ">=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", optional = true, markers = "extra == \"all\""} -uvicorn = {version = ">=0.12.0", extras = ["standard"]} +uvicorn = {version = ">=0.12.0", extras = ["standard"], optional = true, markers = "extra == \"all\""} [package.extras] -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)"] +all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "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)"] +standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "fastapi-cli" -version = "0.0.4" +version = "0.0.5" description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi_cli-0.0.4-py3-none-any.whl", hash = "sha256:a2552f3a7ae64058cdbb530be6fa6dbfc975dc165e4fa66d224c3d396e25e809"}, - {file = "fastapi_cli-0.0.4.tar.gz", hash = "sha256:e2e9ffaffc1f7767f488d6da34b6f5a377751c996f397902eb6abb99a67bde32"}, + {file = "fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46"}, + {file = "fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f"}, ] [package.dependencies] typer = ">=0.12.3" +uvicorn = {version = ">=0.15.0", extras = ["standard"]} [package.extras] -standard = ["fastapi", "uvicorn[standard] (>=0.15.0)"] +standard = ["uvicorn[standard] (>=0.15.0)"] [[package]] name = "fastavro" -version = "1.9.5" +version = "1.9.7" description = "Fast read/write of AVRO files" optional = false python-versions = ">=3.8" files = [ - {file = "fastavro-1.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:61253148e95dd2b6457247b441b7555074a55de17aef85f5165bfd5facf600fc"}, - {file = "fastavro-1.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b604935d671ad47d888efc92a106f98e9440874108b444ac10e28d643109c937"}, - {file = "fastavro-1.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0adbf4956fd53bd74c41e7855bb45ccce953e0eb0e44f5836d8d54ad843f9944"}, - {file = "fastavro-1.9.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:53d838e31457db8bf44460c244543f75ed307935d5fc1d93bc631cc7caef2082"}, - {file = "fastavro-1.9.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:07b6288e8681eede16ff077632c47395d4925c2f51545cd7a60f194454db2211"}, - {file = "fastavro-1.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:ef08cf247fdfd61286ac0c41854f7194f2ad05088066a756423d7299b688d975"}, - {file = "fastavro-1.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c52d7bb69f617c90935a3e56feb2c34d4276819a5c477c466c6c08c224a10409"}, - {file = "fastavro-1.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85e05969956003df8fa4491614bc62fe40cec59e94d06e8aaa8d8256ee3aab82"}, - {file = "fastavro-1.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06e6df8527493a9f0d9a8778df82bab8b1aa6d80d1b004e5aec0a31dc4dc501c"}, - {file = "fastavro-1.9.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:27820da3b17bc01cebb6d1687c9d7254b16d149ef458871aaa207ed8950f3ae6"}, - {file = "fastavro-1.9.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:195a5b8e33eb89a1a9b63fa9dce7a77d41b3b0cd785bac6044df619f120361a2"}, - {file = "fastavro-1.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:be612c109efb727bfd36d4d7ed28eb8e0506617b7dbe746463ebbf81e85eaa6b"}, - {file = "fastavro-1.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b133456c8975ec7d2a99e16a7e68e896e45c821b852675eac4ee25364b999c14"}, - {file = "fastavro-1.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf586373c3d1748cac849395aad70c198ee39295f92e7c22c75757b5c0300fbe"}, - {file = "fastavro-1.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:724ef192bc9c55d5b4c7df007f56a46a21809463499856349d4580a55e2b914c"}, - {file = "fastavro-1.9.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bfd11fe355a8f9c0416803afac298960eb4c603a23b1c74ff9c1d3e673ea7185"}, - {file = "fastavro-1.9.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9827d1654d7bcb118ef5efd3e5b2c9ab2a48d44dac5e8c6a2327bc3ac3caa828"}, - {file = "fastavro-1.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:d84b69dca296667e6137ae7c9a96d060123adbc0c00532cc47012b64d38b47e9"}, - {file = "fastavro-1.9.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:fb744e9de40fb1dc75354098c8db7da7636cba50a40f7bef3b3fb20f8d189d88"}, - {file = "fastavro-1.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:240df8bacd13ff5487f2465604c007d686a566df5cbc01d0550684eaf8ff014a"}, - {file = "fastavro-1.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3bb35c25bbc3904e1c02333bc1ae0173e0a44aa37a8e95d07e681601246e1f1"}, - {file = "fastavro-1.9.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b47a54a9700de3eabefd36dabfb237808acae47bc873cada6be6990ef6b165aa"}, - {file = "fastavro-1.9.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:48c7b5e6d2f3bf7917af301c275b05c5be3dd40bb04e80979c9e7a2ab31a00d1"}, - {file = "fastavro-1.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:05d13f98d4e325be40387e27da9bd60239968862fe12769258225c62ec906f04"}, - {file = "fastavro-1.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5b47948eb196263f6111bf34e1cd08d55529d4ed46eb50c1bc8c7c30a8d18868"}, - {file = "fastavro-1.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85b7a66ad521298ad9373dfe1897a6ccfc38feab54a47b97922e213ae5ad8870"}, - {file = "fastavro-1.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44cb154f863ad80e41aea72a709b12e1533b8728c89b9b1348af91a6154ab2f5"}, - {file = "fastavro-1.9.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7f2b1fe21231fd01f1a2a90e714ae267fe633cd7ce930c0aea33d1c9f4901"}, - {file = "fastavro-1.9.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88fbbe16c61d90a89d78baeb5a34dc1c63a27b115adccdbd6b1fb6f787deacf2"}, - {file = "fastavro-1.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:753f5eedeb5ca86004e23a9ce9b41c5f25eb64a876f95edcc33558090a7f3e4b"}, - {file = "fastavro-1.9.5.tar.gz", hash = "sha256:6419ebf45f88132a9945c51fe555d4f10bb97c236288ed01894f957c6f914553"}, + {file = "fastavro-1.9.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc811fb4f7b5ae95f969cda910241ceacf82e53014c7c7224df6f6e0ca97f52f"}, + {file = "fastavro-1.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb8749e419a85f251bf1ac87d463311874972554d25d4a0b19f6bdc56036d7cf"}, + {file = "fastavro-1.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b2f9bafa167cb4d1c3dd17565cb5bf3d8c0759e42620280d1760f1e778e07fc"}, + {file = "fastavro-1.9.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e87d04b235b29f7774d226b120da2ca4e60b9e6fdf6747daef7f13f218b3517a"}, + {file = "fastavro-1.9.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b525c363e267ed11810aaad8fbdbd1c3bd8837d05f7360977d72a65ab8c6e1fa"}, + {file = "fastavro-1.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:6312fa99deecc319820216b5e1b1bd2d7ebb7d6f221373c74acfddaee64e8e60"}, + {file = "fastavro-1.9.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ec8499dc276c2d2ef0a68c0f1ad11782b2b956a921790a36bf4c18df2b8d4020"}, + {file = "fastavro-1.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d9d96f98052615ab465c63ba8b76ed59baf2e3341b7b169058db104cbe2aa0"}, + {file = "fastavro-1.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:919f3549e07a8a8645a2146f23905955c35264ac809f6c2ac18142bc5b9b6022"}, + {file = "fastavro-1.9.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9de1fa832a4d9016724cd6facab8034dc90d820b71a5d57c7e9830ffe90f31e4"}, + {file = "fastavro-1.9.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1d09227d1f48f13281bd5ceac958650805aef9a4ef4f95810128c1f9be1df736"}, + {file = "fastavro-1.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:2db993ae6cdc63e25eadf9f93c9e8036f9b097a3e61d19dca42536dcc5c4d8b3"}, + {file = "fastavro-1.9.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4e1289b731214a7315884c74b2ec058b6e84380ce9b18b8af5d387e64b18fc44"}, + {file = "fastavro-1.9.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eac69666270a76a3a1d0444f39752061195e79e146271a568777048ffbd91a27"}, + {file = "fastavro-1.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9be089be8c00f68e343bbc64ca6d9a13e5e5b0ba8aa52bcb231a762484fb270e"}, + {file = "fastavro-1.9.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d576eccfd60a18ffa028259500df67d338b93562c6700e10ef68bbd88e499731"}, + {file = "fastavro-1.9.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee9bf23c157bd7dcc91ea2c700fa3bd924d9ec198bb428ff0b47fa37fe160659"}, + {file = "fastavro-1.9.7-cp312-cp312-win_amd64.whl", hash = "sha256:b6b2ccdc78f6afc18c52e403ee68c00478da12142815c1bd8a00973138a166d0"}, + {file = "fastavro-1.9.7-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7313def3aea3dacface0a8b83f6d66e49a311149aa925c89184a06c1ef99785d"}, + {file = "fastavro-1.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:536f5644737ad21d18af97d909dba099b9e7118c237be7e4bd087c7abde7e4f0"}, + {file = "fastavro-1.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2af559f30383b79cf7d020a6b644c42ffaed3595f775fe8f3d7f80b1c43dfdc5"}, + {file = "fastavro-1.9.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:edc28ab305e3c424de5ac5eb87b48d1e07eddb6aa08ef5948fcda33cc4d995ce"}, + {file = "fastavro-1.9.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ec2e96bdabd58427fe683329b3d79f42c7b4f4ff6b3644664a345a655ac2c0a1"}, + {file = "fastavro-1.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:3b683693c8a85ede496ebebe115be5d7870c150986e34a0442a20d88d7771224"}, + {file = "fastavro-1.9.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:58f76a5c9a312fbd37b84e49d08eb23094d36e10d43bc5df5187bc04af463feb"}, + {file = "fastavro-1.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56304401d2f4f69f5b498bdd1552c13ef9a644d522d5de0dc1d789cf82f47f73"}, + {file = "fastavro-1.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fcce036c6aa06269fc6a0428050fcb6255189997f5e1a728fc461e8b9d3e26b"}, + {file = "fastavro-1.9.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:17de68aae8c2525f5631d80f2b447a53395cdc49134f51b0329a5497277fc2d2"}, + {file = "fastavro-1.9.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7c911366c625d0a997eafe0aa83ffbc6fd00d8fd4543cb39a97c6f3b8120ea87"}, + {file = "fastavro-1.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:912283ed48578a103f523817fdf0c19b1755cea9b4a6387b73c79ecb8f8f84fc"}, + {file = "fastavro-1.9.7.tar.gz", hash = "sha256:13e11c6cb28626da85290933027cd419ce3f9ab8e45410ef24ce6b89d20a1f6c"}, ] [package.extras] @@ -1193,19 +1248,19 @@ zstandard = ["zstandard"] [[package]] name = "filelock" -version = "3.15.4" +version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, - {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] -typing = ["typing-extensions (>=4.8)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "flatbuffers" @@ -1306,13 +1361,13 @@ files = [ [[package]] name = "fsspec" -version = "2024.6.1" +version = "2024.9.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2024.6.1-py3-none-any.whl", hash = "sha256:3cb443f8bcd2efb31295a5b9fdb02aee81d8452c80d28f97a6d0959e6cee101e"}, - {file = "fsspec-2024.6.1.tar.gz", hash = "sha256:fad7d7e209dd4c1208e3bbfda706620e0da5142bebbd9c384afb95b07e798e49"}, + {file = "fsspec-2024.9.0-py3-none-any.whl", hash = "sha256:a0947d552d8a6efa72cc2c730b12c41d043509156966cca4fb157b0f2a0c574b"}, + {file = "fsspec-2024.9.0.tar.gz", hash = "sha256:4b0afb90c2f21832df142f292649035d80b421f60a9e1c027802e5a0da2b04e8"}, ] [package.extras] @@ -1362,13 +1417,13 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "google-api-core" -version = "2.19.1" +version = "2.20.0" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.19.1.tar.gz", hash = "sha256:f4695f1e3650b316a795108a76a1c416e6afb036199d1c1f1f110916df479ffd"}, - {file = "google_api_core-2.19.1-py3-none-any.whl", hash = "sha256:f12a9b8309b5e21d92483bbd47ce2c445861ec7d269ef6784ecc0ea8c1fa6125"}, + {file = "google_api_core-2.20.0-py3-none-any.whl", hash = "sha256:ef0591ef03c30bb83f79b3d0575c3f31219001fc9c5cf37024d08310aeffed8a"}, + {file = "google_api_core-2.20.0.tar.gz", hash = "sha256:f74dff1889ba291a4b76c5079df0711810e2d9da81abfdc99957bc961c1eb28f"}, ] [package.dependencies] @@ -1393,13 +1448,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-auth" -version = "2.32.0" +version = "2.35.0" description = "Google Authentication Library" optional = false python-versions = ">=3.7" files = [ - {file = "google_auth-2.32.0-py2.py3-none-any.whl", hash = "sha256:53326ea2ebec768070a94bee4e1b9194c9646ea0c2bd72422785bd0f9abfad7b"}, - {file = "google_auth-2.32.0.tar.gz", hash = "sha256:49315be72c55a6a37d62819e3573f6b416aca00721f7e3e31a008d928bf64022"}, + {file = "google_auth-2.35.0-py2.py3-none-any.whl", hash = "sha256:25df55f327ef021de8be50bad0dfd4a916ad0de96da86cd05661c9297723ad3f"}, + {file = "google_auth-2.35.0.tar.gz", hash = "sha256:f4c64ed4e01e8e8b646ef34c018f8bf3338df0c8e37d8b3bba40e7f574a3278a"}, ] [package.dependencies] @@ -1409,20 +1464,20 @@ rsa = ">=3.1.4,<5" [package.extras] aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] -enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] +enterprise-cert = ["cryptography", "pyopenssl"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "google-cloud-aiplatform" -version = "1.59.0" +version = "1.67.1" description = "Vertex AI API client library" optional = false python-versions = ">=3.8" files = [ - {file = "google-cloud-aiplatform-1.59.0.tar.gz", hash = "sha256:2bebb59c0ba3e3b4b568305418ca1b021977988adbee8691a5bed09b037e7e63"}, - {file = "google_cloud_aiplatform-1.59.0-py2.py3-none-any.whl", hash = "sha256:549e6eb1844b0f853043309138ebe2db00de4bbd8197b3bde26804ac163ef52a"}, + {file = "google-cloud-aiplatform-1.67.1.tar.gz", hash = "sha256:701a19061c8c670baa93464ca0b8a1a8720494f802187cef06bc9fcf952db315"}, + {file = "google_cloud_aiplatform-1.67.1-py2.py3-none-any.whl", hash = "sha256:2ff0e1794839fcf74d644f3f54ff2de5d8099b3e388edecc48f6d620c1f3582c"}, ] [package.dependencies] @@ -1434,30 +1489,29 @@ google-cloud-resource-manager = ">=1.3.3,<3.0.0dev" google-cloud-storage = ">=1.32.0,<3.0.0dev" packaging = ">=14.3" proto-plus = ">=1.22.3,<2.0.0dev" -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" +protobuf = ">=3.20.2,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0dev" pydantic = "<3" shapely = "<3.0.0dev" [package.extras] -autologging = ["mlflow (>=1.27.0,<=2.1.1)"] +autologging = ["mlflow (>=1.27.0,<=2.16.0)"] cloud-profiler = ["tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "werkzeug (>=2.0.0,<2.1.0dev)"] datasets = ["pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)"] endpoint = ["requests (>=2.28.1)"] -full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.109.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "setuptools (<70.0.0)", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "tqdm (>=4.23.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)"] -langchain = ["langchain (>=0.1.16,<0.3)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)", "openinference-instrumentation-langchain (>=0.1.19,<0.2)", "tenacity (<=8.3)"] -langchain-testing = ["absl-py", "cloudpickle (>=3.0,<4.0)", "langchain (>=0.1.16,<0.3)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)", "openinference-instrumentation-langchain (>=0.1.19,<0.2)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "pydantic (>=2.6.3,<3)", "pytest-xdist", "tenacity (<=8.3)"] +evaluation = ["pandas (>=1.0.0,<2.2.0)", "tqdm (>=4.23.0)"] +full = ["docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.114.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.16.0)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "requests (>=2.28.1)", "setuptools (<70.0.0)", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "tqdm (>=4.23.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)"] +langchain = ["langchain (>=0.1.16,<0.3)", "langchain-core (<0.3)", "langchain-google-vertexai (<2)", "openinference-instrumentation-langchain (>=0.1.19,<0.2)", "orjson (<=3.10.6)", "tenacity (<=8.3)"] +langchain-testing = ["absl-py", "cloudpickle (>=3.0,<4.0)", "google-cloud-trace (<2)", "langchain (>=0.1.16,<0.3)", "langchain-core (<0.3)", "langchain-google-vertexai (<2)", "openinference-instrumentation-langchain (>=0.1.19,<0.2)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "orjson (<=3.10.6)", "pydantic (>=2.6.3,<3)", "pytest-xdist", "tenacity (<=8.3)"] lit = ["explainable-ai-sdk (>=1.0.0)", "lit-nlp (==0.4.0)", "pandas (>=1.0.0)", "tensorflow (>=2.3.0,<3.0.0dev)"] metadata = ["numpy (>=1.15.0)", "pandas (>=1.0.0)"] pipelines = ["pyyaml (>=5.3.1,<7)"] -prediction = ["docker (>=5.0.3)", "fastapi (>=0.71.0,<=0.109.1)", "httpx (>=0.23.0,<0.25.0)", "starlette (>=0.17.1)", "uvicorn[standard] (>=0.16.0)"] -preview = ["cloudpickle (<3.0)", "google-cloud-logging (<4.0)"] +prediction = ["docker (>=5.0.3)", "fastapi (>=0.71.0,<=0.114.0)", "httpx (>=0.23.0,<0.25.0)", "starlette (>=0.17.1)", "uvicorn[standard] (>=0.16.0)"] private-endpoints = ["requests (>=2.28.1)", "urllib3 (>=1.21.1,<1.27)"] -rapid-evaluation = ["pandas (>=1.0.0,<2.2.0)", "tqdm (>=4.23.0)"] -ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "setuptools (<70.0.0)"] -ray-testing = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pytest-xdist", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "ray[train] (==2.9.3)", "scikit-learn", "setuptools (<70.0.0)", "tensorflow", "torch (>=2.0.0,<2.1.0)", "xgboost", "xgboost-ray"] -reasoningengine = ["cloudpickle (>=3.0,<4.0)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "pydantic (>=2.6.3,<3)"] +ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "setuptools (<70.0.0)"] +ray-testing = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pytest-xdist", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "ray[train] (==2.9.3)", "scikit-learn", "setuptools (<70.0.0)", "tensorflow", "torch (>=2.0.0,<2.1.0)", "xgboost", "xgboost-ray"] +reasoningengine = ["cloudpickle (>=3.0,<4.0)", "google-cloud-trace (<2)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "pydantic (>=2.6.3,<3)"] tensorboard = ["tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "werkzeug (>=2.0.0,<2.1.0dev)"] -testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.109.1)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "nltk", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "sentencepiece (>=0.2.0)", "setuptools (<70.0.0)", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (==2.13.0)", "tensorflow (==2.16.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "torch (>=2.2.0)", "tqdm (>=4.23.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost"] +testing = ["bigframes", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.114.0)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.16.0)", "nltk", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pytest-asyncio", "pytest-xdist", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "sentencepiece (>=0.2.0)", "setuptools (<70.0.0)", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (==2.13.0)", "tensorflow (==2.16.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "torch (>=2.2.0)", "tqdm (>=4.23.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost"] tokenization = ["sentencepiece (>=0.2.0)"] vizier = ["google-vizier (>=0.1.6)"] xai = ["tensorflow (>=2.3.0,<3.0.0dev)"] @@ -1513,13 +1567,13 @@ grpc = ["grpcio (>=1.38.0,<2.0dev)", "grpcio-status (>=1.38.0,<2.0.dev0)"] [[package]] name = "google-cloud-resource-manager" -version = "1.12.4" +version = "1.12.5" description = "Google Cloud Resource Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-resource-manager-1.12.4.tar.gz", hash = "sha256:3eda914a925e92465ef80faaab7e0f7a9312d486dd4e123d2c76e04bac688ff0"}, - {file = "google_cloud_resource_manager-1.12.4-py2.py3-none-any.whl", hash = "sha256:0b6663585f7f862166c0fb4c55fdda721fce4dc2dc1d5b52d03ee4bf2653a85f"}, + {file = "google_cloud_resource_manager-1.12.5-py2.py3-none-any.whl", hash = "sha256:2708a718b45c79464b7b21559c701b5c92e6b0b1ab2146d0a256277a623dc175"}, + {file = "google_cloud_resource_manager-1.12.5.tar.gz", hash = "sha256:b7af4254401ed4efa3aba3a929cb3ddb803fa6baf91a78485e45583597de5891"}, ] [package.dependencies] @@ -1531,13 +1585,13 @@ protobuf = ">=3.20.2,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4 [[package]] name = "google-cloud-storage" -version = "2.17.0" +version = "2.18.2" description = "Google Cloud Storage API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-storage-2.17.0.tar.gz", hash = "sha256:49378abff54ef656b52dca5ef0f2eba9aa83dc2b2c72c78714b03a1a95fe9388"}, - {file = "google_cloud_storage-2.17.0-py2.py3-none-any.whl", hash = "sha256:5b393bc766b7a3bc6f5407b9e665b2450d36282614b7945e570b3480a456d1e1"}, + {file = "google_cloud_storage-2.18.2-py2.py3-none-any.whl", hash = "sha256:97a4d45c368b7d401ed48c4fdfe86e1e1cb96401c9e199e419d289e2c0370166"}, + {file = "google_cloud_storage-2.18.2.tar.gz", hash = "sha256:aaf7acd70cdad9f274d29332673fcab98708d0e1f4dceb5a5356aaef06af4d99"}, ] [package.dependencies] @@ -1545,87 +1599,47 @@ google-api-core = ">=2.15.0,<3.0.0dev" google-auth = ">=2.26.1,<3.0dev" google-cloud-core = ">=2.3.0,<3.0dev" google-crc32c = ">=1.0,<2.0dev" -google-resumable-media = ">=2.6.0" +google-resumable-media = ">=2.7.2" requests = ">=2.18.0,<3.0.0dev" [package.extras] -protobuf = ["protobuf (<5.0.0dev)"] +protobuf = ["protobuf (<6.0.0dev)"] +tracing = ["opentelemetry-api (>=1.1.0)"] [[package]] name = "google-crc32c" -version = "1.5.0" +version = "1.6.0" description = "A python wrapper of the C library 'Google CRC32C'" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "google-crc32c-1.5.0.tar.gz", hash = "sha256:89284716bc6a5a415d4eaa11b1726d2d60a0cd12aadf5439828353662ede9dd7"}, - {file = "google_crc32c-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:596d1f98fc70232fcb6590c439f43b350cb762fb5d61ce7b0e9db4539654cc13"}, - {file = "google_crc32c-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:be82c3c8cfb15b30f36768797a640e800513793d6ae1724aaaafe5bf86f8f346"}, - {file = "google_crc32c-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:461665ff58895f508e2866824a47bdee72497b091c730071f2b7575d5762ab65"}, - {file = "google_crc32c-1.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2096eddb4e7c7bdae4bd69ad364e55e07b8316653234a56552d9c988bd2d61b"}, - {file = "google_crc32c-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:116a7c3c616dd14a3de8c64a965828b197e5f2d121fedd2f8c5585c547e87b02"}, - {file = "google_crc32c-1.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5829b792bf5822fd0a6f6eb34c5f81dd074f01d570ed7f36aa101d6fc7a0a6e4"}, - {file = "google_crc32c-1.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:64e52e2b3970bd891309c113b54cf0e4384762c934d5ae56e283f9a0afcd953e"}, - {file = "google_crc32c-1.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:02ebb8bf46c13e36998aeaad1de9b48f4caf545e91d14041270d9dca767b780c"}, - {file = "google_crc32c-1.5.0-cp310-cp310-win32.whl", hash = "sha256:2e920d506ec85eb4ba50cd4228c2bec05642894d4c73c59b3a2fe20346bd00ee"}, - {file = "google_crc32c-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:07eb3c611ce363c51a933bf6bd7f8e3878a51d124acfc89452a75120bc436289"}, - {file = "google_crc32c-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273"}, - {file = "google_crc32c-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298"}, - {file = "google_crc32c-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57"}, - {file = "google_crc32c-1.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8485b340a6a9e76c62a7dce3c98e5f102c9219f4cfbf896a00cf48caf078d438"}, - {file = "google_crc32c-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77e2fd3057c9d78e225fa0a2160f96b64a824de17840351b26825b0848022906"}, - {file = "google_crc32c-1.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183"}, - {file = "google_crc32c-1.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a1fd716e7a01f8e717490fbe2e431d2905ab8aa598b9b12f8d10abebb36b04dd"}, - {file = "google_crc32c-1.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:72218785ce41b9cfd2fc1d6a017dc1ff7acfc4c17d01053265c41a2c0cc39b8c"}, - {file = "google_crc32c-1.5.0-cp311-cp311-win32.whl", hash = "sha256:66741ef4ee08ea0b2cc3c86916ab66b6aef03768525627fd6a1b34968b4e3709"}, - {file = "google_crc32c-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:98cb4d057f285bd80d8778ebc4fde6b4d509ac3f331758fb1528b733215443ae"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19e0a019d2c4dcc5e598cd4a4bc7b008546b0358bd322537c74ad47a5386884f"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c65b9817512edc6a4ae7c7e987fea799d2e0ee40c53ec573a692bee24de876"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6ac08d24c1f16bd2bf5eca8eaf8304812f44af5cfe5062006ec676e7e1d50afc"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3359fc442a743e870f4588fcf5dcbc1bf929df1fad8fb9905cd94e5edb02e84c"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e986b206dae4476f41bcec1faa057851f3889503a70e1bdb2378d406223994a"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:de06adc872bcd8c2a4e0dc51250e9e65ef2ca91be023b9d13ebd67c2ba552e1e"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-win32.whl", hash = "sha256:d3515f198eaa2f0ed49f8819d5732d70698c3fa37384146079b3799b97667a94"}, - {file = "google_crc32c-1.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:67b741654b851abafb7bc625b6d1cdd520a379074e64b6a128e3b688c3c04740"}, - {file = "google_crc32c-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c02ec1c5856179f171e032a31d6f8bf84e5a75c45c33b2e20a3de353b266ebd8"}, - {file = "google_crc32c-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:edfedb64740750e1a3b16152620220f51d58ff1b4abceb339ca92e934775c27a"}, - {file = "google_crc32c-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84e6e8cd997930fc66d5bb4fde61e2b62ba19d62b7abd7a69920406f9ecca946"}, - {file = "google_crc32c-1.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a"}, - {file = "google_crc32c-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:998679bf62b7fb599d2878aa3ed06b9ce688b8974893e7223c60db155f26bd8d"}, - {file = "google_crc32c-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:83c681c526a3439b5cf94f7420471705bbf96262f49a6fe546a6db5f687a3d4a"}, - {file = "google_crc32c-1.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4c6fdd4fccbec90cc8a01fc00773fcd5fa28db683c116ee3cb35cd5da9ef6c37"}, - {file = "google_crc32c-1.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5ae44e10a8e3407dbe138984f21e536583f2bba1be9491239f942c2464ac0894"}, - {file = "google_crc32c-1.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37933ec6e693e51a5b07505bd05de57eee12f3e8c32b07da7e73669398e6630a"}, - {file = "google_crc32c-1.5.0-cp38-cp38-win32.whl", hash = "sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4"}, - {file = "google_crc32c-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:74dea7751d98034887dbd821b7aae3e1d36eda111d6ca36c206c44478035709c"}, - {file = "google_crc32c-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c6c777a480337ac14f38564ac88ae82d4cd238bf293f0a22295b66eb89ffced7"}, - {file = "google_crc32c-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:759ce4851a4bb15ecabae28f4d2e18983c244eddd767f560165563bf9aefbc8d"}, - {file = "google_crc32c-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f13cae8cc389a440def0c8c52057f37359014ccbc9dc1f0827936bcd367c6100"}, - {file = "google_crc32c-1.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e560628513ed34759456a416bf86b54b2476c59144a9138165c9a1575801d0d9"}, - {file = "google_crc32c-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1674e4307fa3024fc897ca774e9c7562c957af85df55efe2988ed9056dc4e57"}, - {file = "google_crc32c-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:278d2ed7c16cfc075c91378c4f47924c0625f5fc84b2d50d921b18b7975bd210"}, - {file = "google_crc32c-1.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d5280312b9af0976231f9e317c20e4a61cd2f9629b7bfea6a693d1878a264ebd"}, - {file = "google_crc32c-1.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8b87e1a59c38f275c0e3676fc2ab6d59eccecfd460be267ac360cc31f7bcde96"}, - {file = "google_crc32c-1.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7c074fece789b5034b9b1404a1f8208fc2d4c6ce9decdd16e8220c5a793e6f61"}, - {file = "google_crc32c-1.5.0-cp39-cp39-win32.whl", hash = "sha256:7f57f14606cd1dd0f0de396e1e53824c371e9544a822648cd76c034d209b559c"}, - {file = "google_crc32c-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:a2355cba1f4ad8b6988a4ca3feed5bff33f6af2d7f134852cf279c2aebfde541"}, - {file = "google_crc32c-1.5.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f314013e7dcd5cf45ab1945d92e713eec788166262ae8deb2cfacd53def27325"}, - {file = "google_crc32c-1.5.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b747a674c20a67343cb61d43fdd9207ce5da6a99f629c6e2541aa0e89215bcd"}, - {file = "google_crc32c-1.5.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f24ed114432de109aa9fd317278518a5af2d31ac2ea6b952b2f7782b43da091"}, - {file = "google_crc32c-1.5.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8667b48e7a7ef66afba2c81e1094ef526388d35b873966d8a9a447974ed9178"}, - {file = "google_crc32c-1.5.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:1c7abdac90433b09bad6c43a43af253e688c9cfc1c86d332aed13f9a7c7f65e2"}, - {file = "google_crc32c-1.5.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6f998db4e71b645350b9ac28a2167e6632c239963ca9da411523bb439c5c514d"}, - {file = "google_crc32c-1.5.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c99616c853bb585301df6de07ca2cadad344fd1ada6d62bb30aec05219c45d2"}, - {file = "google_crc32c-1.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ad40e31093a4af319dadf503b2467ccdc8f67c72e4bcba97f8c10cb078207b5"}, - {file = "google_crc32c-1.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd67cf24a553339d5062eff51013780a00d6f97a39ca062781d06b3a73b15462"}, - {file = "google_crc32c-1.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:398af5e3ba9cf768787eef45c803ff9614cc3e22a5b2f7d7ae116df8b11e3314"}, - {file = "google_crc32c-1.5.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b1f8133c9a275df5613a451e73f36c2aea4fe13c5c8997e22cf355ebd7bd0728"}, - {file = "google_crc32c-1.5.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ba053c5f50430a3fcfd36f75aff9caeba0440b2d076afdb79a318d6ca245f88"}, - {file = "google_crc32c-1.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:272d3892a1e1a2dbc39cc5cde96834c236d5327e2122d3aaa19f6614531bb6eb"}, - {file = "google_crc32c-1.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:635f5d4dd18758a1fbd1049a8e8d2fee4ffed124462d837d1a02a0e009c3ab31"}, - {file = "google_crc32c-1.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c672d99a345849301784604bfeaeba4db0c7aae50b95be04dd651fd2a7310b93"}, + {file = "google_crc32c-1.6.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:5bcc90b34df28a4b38653c36bb5ada35671ad105c99cfe915fb5bed7ad6924aa"}, + {file = "google_crc32c-1.6.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d9e9913f7bd69e093b81da4535ce27af842e7bf371cde42d1ae9e9bd382dc0e9"}, + {file = "google_crc32c-1.6.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a184243544811e4a50d345838a883733461e67578959ac59964e43cca2c791e7"}, + {file = "google_crc32c-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:236c87a46cdf06384f614e9092b82c05f81bd34b80248021f729396a78e55d7e"}, + {file = "google_crc32c-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebab974b1687509e5c973b5c4b8b146683e101e102e17a86bd196ecaa4d099fc"}, + {file = "google_crc32c-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:50cf2a96da226dcbff8671233ecf37bf6e95de98b2a2ebadbfdf455e6d05df42"}, + {file = "google_crc32c-1.6.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f7a1fc29803712f80879b0806cb83ab24ce62fc8daf0569f2204a0cfd7f68ed4"}, + {file = "google_crc32c-1.6.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:40b05ab32a5067525670880eb5d169529089a26fe35dce8891127aeddc1950e8"}, + {file = "google_crc32c-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e4b426c3702f3cd23b933436487eb34e01e00327fac20c9aebb68ccf34117d"}, + {file = "google_crc32c-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51c4f54dd8c6dfeb58d1df5e4f7f97df8abf17a36626a217f169893d1d7f3e9f"}, + {file = "google_crc32c-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:bb8b3c75bd157010459b15222c3fd30577042a7060e29d42dabce449c087f2b3"}, + {file = "google_crc32c-1.6.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d"}, + {file = "google_crc32c-1.6.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b"}, + {file = "google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00"}, + {file = "google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3"}, + {file = "google_crc32c-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760"}, + {file = "google_crc32c-1.6.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e2806553238cd076f0a55bddab37a532b53580e699ed8e5606d0de1f856b5205"}, + {file = "google_crc32c-1.6.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:bb0966e1c50d0ef5bc743312cc730b533491d60585a9a08f897274e57c3f70e0"}, + {file = "google_crc32c-1.6.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:386122eeaaa76951a8196310432c5b0ef3b53590ef4c317ec7588ec554fec5d2"}, + {file = "google_crc32c-1.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2952396dc604544ea7476b33fe87faedc24d666fb0c2d5ac971a2b9576ab871"}, + {file = "google_crc32c-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35834855408429cecf495cac67ccbab802de269e948e27478b1e47dfb6465e57"}, + {file = "google_crc32c-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:d8797406499f28b5ef791f339594b0b5fdedf54e203b5066675c406ba69d705c"}, + {file = "google_crc32c-1.6.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48abd62ca76a2cbe034542ed1b6aee851b6f28aaca4e6551b5599b6f3ef175cc"}, + {file = "google_crc32c-1.6.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e311c64008f1f1379158158bb3f0c8d72635b9eb4f9545f8cf990c5668e59d"}, + {file = "google_crc32c-1.6.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24"}, + {file = "google_crc32c-1.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ca8145b060679ec9176e6de4f89b07363d6805bd4760631ef254905503598d"}, + {file = "google_crc32c-1.6.0.tar.gz", hash = "sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc"}, ] [package.extras] @@ -1633,13 +1647,13 @@ testing = ["pytest"] [[package]] name = "google-resumable-media" -version = "2.7.1" +version = "2.7.2" description = "Utilities for Google Media Downloads and Resumable Uploads" optional = false python-versions = ">=3.7" files = [ - {file = "google-resumable-media-2.7.1.tar.gz", hash = "sha256:eae451a7b2e2cdbaaa0fd2eb00cc8a1ee5e95e16b55597359cbc3d27d7d90e33"}, - {file = "google_resumable_media-2.7.1-py2.py3-none-any.whl", hash = "sha256:103ebc4ba331ab1bfdac0250f8033627a2cd7cde09e7ccff9181e31ba4315b2c"}, + {file = "google_resumable_media-2.7.2-py2.py3-none-any.whl", hash = "sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa"}, + {file = "google_resumable_media-2.7.2.tar.gz", hash = "sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0"}, ] [package.dependencies] @@ -1651,13 +1665,13 @@ requests = ["requests (>=2.18.0,<3.0.0dev)"] [[package]] name = "googleapis-common-protos" -version = "1.63.2" +version = "1.65.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.63.2.tar.gz", hash = "sha256:27c5abdffc4911f28101e635de1533fb4cfd2c37fbaa9174587c799fac90aa87"}, - {file = "googleapis_common_protos-1.63.2-py2.py3-none-any.whl", hash = "sha256:27a2499c7e8aff199665b22741997e485eccc8645aa9176c7c988e6fae507945"}, + {file = "googleapis_common_protos-1.65.0-py2.py3-none-any.whl", hash = "sha256:2972e6c496f435b92590fd54045060867f3fe9be2c82ab148fc8885035479a63"}, + {file = "googleapis_common_protos-1.65.0.tar.gz", hash = "sha256:334a29d07cddc3aa01dee4988f9afd9b2916ee2ff49d6b757155dc0d197852c0"}, ] [package.dependencies] @@ -1669,13 +1683,13 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "groq" -version = "0.9.0" +version = "0.11.0" description = "The official Python library for the groq API" optional = false python-versions = ">=3.7" files = [ - {file = "groq-0.9.0-py3-none-any.whl", hash = "sha256:d0e46f4ad645504672bb09c8100af3ced3a7db0d5119dc13e4aca535fc455874"}, - {file = "groq-0.9.0.tar.gz", hash = "sha256:130ed5e35d3acfaab46b9e7a078eeaebf91052f4a9d71f86f87fb319b5fec332"}, + {file = "groq-0.11.0-py3-none-any.whl", hash = "sha256:e328531c979542e563668c62260aec13b43a6ee0ca9e2fb22dff1d26f8c8ce54"}, + {file = "groq-0.11.0.tar.gz", hash = "sha256:dbb9aefedf388ddd4801ec7bf3eba7f5edb67948fec0cd2829d97244059f42a7"}, ] [package.dependencies] @@ -1704,76 +1718,76 @@ protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4 [[package]] name = "grpcio" -version = "1.64.1" +version = "1.66.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.64.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:55697ecec192bc3f2f3cc13a295ab670f51de29884ca9ae6cd6247df55df2502"}, - {file = "grpcio-1.64.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3b64ae304c175671efdaa7ec9ae2cc36996b681eb63ca39c464958396697daff"}, - {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:bac71b4b28bc9af61efcdc7630b166440bbfbaa80940c9a697271b5e1dabbc61"}, - {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c024ffc22d6dc59000faf8ad781696d81e8e38f4078cb0f2630b4a3cf231a90"}, - {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7cd5c1325f6808b8ae31657d281aadb2a51ac11ab081ae335f4f7fc44c1721d"}, - {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0a2813093ddb27418a4c99f9b1c223fab0b053157176a64cc9db0f4557b69bd9"}, - {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2981c7365a9353f9b5c864595c510c983251b1ab403e05b1ccc70a3d9541a73b"}, - {file = "grpcio-1.64.1-cp310-cp310-win32.whl", hash = "sha256:1262402af5a511c245c3ae918167eca57342c72320dffae5d9b51840c4b2f86d"}, - {file = "grpcio-1.64.1-cp310-cp310-win_amd64.whl", hash = "sha256:19264fc964576ddb065368cae953f8d0514ecc6cb3da8903766d9fb9d4554c33"}, - {file = "grpcio-1.64.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:58b1041e7c870bb30ee41d3090cbd6f0851f30ae4eb68228955d973d3efa2e61"}, - {file = "grpcio-1.64.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bbc5b1d78a7822b0a84c6f8917faa986c1a744e65d762ef6d8be9d75677af2ca"}, - {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5841dd1f284bd1b3d8a6eca3a7f062b06f1eec09b184397e1d1d43447e89a7ae"}, - {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8caee47e970b92b3dd948371230fcceb80d3f2277b3bf7fbd7c0564e7d39068e"}, - {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73819689c169417a4f978e562d24f2def2be75739c4bed1992435d007819da1b"}, - {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6503b64c8b2dfad299749cad1b595c650c91e5b2c8a1b775380fcf8d2cbba1e9"}, - {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1de403fc1305fd96cfa75e83be3dee8538f2413a6b1685b8452301c7ba33c294"}, - {file = "grpcio-1.64.1-cp311-cp311-win32.whl", hash = "sha256:d4d29cc612e1332237877dfa7fe687157973aab1d63bd0f84cf06692f04c0367"}, - {file = "grpcio-1.64.1-cp311-cp311-win_amd64.whl", hash = "sha256:5e56462b05a6f860b72f0fa50dca06d5b26543a4e88d0396259a07dc30f4e5aa"}, - {file = "grpcio-1.64.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:4657d24c8063e6095f850b68f2d1ba3b39f2b287a38242dcabc166453e950c59"}, - {file = "grpcio-1.64.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:62b4e6eb7bf901719fce0ca83e3ed474ae5022bb3827b0a501e056458c51c0a1"}, - {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:ee73a2f5ca4ba44fa33b4d7d2c71e2c8a9e9f78d53f6507ad68e7d2ad5f64a22"}, - {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:198908f9b22e2672a998870355e226a725aeab327ac4e6ff3a1399792ece4762"}, - {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39b9d0acaa8d835a6566c640f48b50054f422d03e77e49716d4c4e8e279665a1"}, - {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5e42634a989c3aa6049f132266faf6b949ec2a6f7d302dbb5c15395b77d757eb"}, - {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1a82e0b9b3022799c336e1fc0f6210adc019ae84efb7321d668129d28ee1efb"}, - {file = "grpcio-1.64.1-cp312-cp312-win32.whl", hash = "sha256:55260032b95c49bee69a423c2f5365baa9369d2f7d233e933564d8a47b893027"}, - {file = "grpcio-1.64.1-cp312-cp312-win_amd64.whl", hash = "sha256:c1a786ac592b47573a5bb7e35665c08064a5d77ab88a076eec11f8ae86b3e3f6"}, - {file = "grpcio-1.64.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:a011ac6c03cfe162ff2b727bcb530567826cec85eb8d4ad2bfb4bd023287a52d"}, - {file = "grpcio-1.64.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4d6dab6124225496010bd22690f2d9bd35c7cbb267b3f14e7a3eb05c911325d4"}, - {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:a5e771d0252e871ce194d0fdcafd13971f1aae0ddacc5f25615030d5df55c3a2"}, - {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c3c1b90ab93fed424e454e93c0ed0b9d552bdf1b0929712b094f5ecfe7a23ad"}, - {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20405cb8b13fd779135df23fabadc53b86522d0f1cba8cca0e87968587f50650"}, - {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0cc79c982ccb2feec8aad0e8fb0d168bcbca85bc77b080d0d3c5f2f15c24ea8f"}, - {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a3a035c37ce7565b8f4f35ff683a4db34d24e53dc487e47438e434eb3f701b2a"}, - {file = "grpcio-1.64.1-cp38-cp38-win32.whl", hash = "sha256:1257b76748612aca0f89beec7fa0615727fd6f2a1ad580a9638816a4b2eb18fd"}, - {file = "grpcio-1.64.1-cp38-cp38-win_amd64.whl", hash = "sha256:0a12ddb1678ebc6a84ec6b0487feac020ee2b1659cbe69b80f06dbffdb249122"}, - {file = "grpcio-1.64.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:75dbbf415026d2862192fe1b28d71f209e2fd87079d98470db90bebe57b33179"}, - {file = "grpcio-1.64.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e3d9f8d1221baa0ced7ec7322a981e28deb23749c76eeeb3d33e18b72935ab62"}, - {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5f8b75f64d5d324c565b263c67dbe4f0af595635bbdd93bb1a88189fc62ed2e5"}, - {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c84ad903d0d94311a2b7eea608da163dace97c5fe9412ea311e72c3684925602"}, - {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:940e3ec884520155f68a3b712d045e077d61c520a195d1a5932c531f11883489"}, - {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f10193c69fc9d3d726e83bbf0f3d316f1847c3071c8c93d8090cf5f326b14309"}, - {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac15b6c2c80a4d1338b04d42a02d376a53395ddf0ec9ab157cbaf44191f3ffdd"}, - {file = "grpcio-1.64.1-cp39-cp39-win32.whl", hash = "sha256:03b43d0ccf99c557ec671c7dede64f023c7da9bb632ac65dbc57f166e4970040"}, - {file = "grpcio-1.64.1-cp39-cp39-win_amd64.whl", hash = "sha256:ed6091fa0adcc7e4ff944090cf203a52da35c37a130efa564ded02b7aff63bcd"}, - {file = "grpcio-1.64.1.tar.gz", hash = "sha256:8d51dd1c59d5fa0f34266b80a3805ec29a1f26425c2a54736133f6d87fc4968a"}, + {file = "grpcio-1.66.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:4877ba180591acdf127afe21ec1c7ff8a5ecf0fe2600f0d3c50e8c4a1cbc6492"}, + {file = "grpcio-1.66.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3750c5a00bd644c75f4507f77a804d0189d97a107eb1481945a0cf3af3e7a5ac"}, + {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:a013c5fbb12bfb5f927444b477a26f1080755a931d5d362e6a9a720ca7dbae60"}, + {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1b24c23d51a1e8790b25514157d43f0a4dce1ac12b3f0b8e9f66a5e2c4c132f"}, + {file = "grpcio-1.66.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7ffb8ea674d68de4cac6f57d2498fef477cef582f1fa849e9f844863af50083"}, + {file = "grpcio-1.66.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:307b1d538140f19ccbd3aed7a93d8f71103c5d525f3c96f8616111614b14bf2a"}, + {file = "grpcio-1.66.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1c17ebcec157cfb8dd445890a03e20caf6209a5bd4ac5b040ae9dbc59eef091d"}, + {file = "grpcio-1.66.1-cp310-cp310-win32.whl", hash = "sha256:ef82d361ed5849d34cf09105d00b94b6728d289d6b9235513cb2fcc79f7c432c"}, + {file = "grpcio-1.66.1-cp310-cp310-win_amd64.whl", hash = "sha256:292a846b92cdcd40ecca46e694997dd6b9be6c4c01a94a0dfb3fcb75d20da858"}, + {file = "grpcio-1.66.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:c30aeceeaff11cd5ddbc348f37c58bcb96da8d5aa93fed78ab329de5f37a0d7a"}, + {file = "grpcio-1.66.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8a1e224ce6f740dbb6b24c58f885422deebd7eb724aff0671a847f8951857c26"}, + {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a66fe4dc35d2330c185cfbb42959f57ad36f257e0cc4557d11d9f0a3f14311df"}, + {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3ba04659e4fce609de2658fe4dbf7d6ed21987a94460f5f92df7579fd5d0e22"}, + {file = "grpcio-1.66.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4573608e23f7e091acfbe3e84ac2045680b69751d8d67685ffa193a4429fedb1"}, + {file = "grpcio-1.66.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7e06aa1f764ec8265b19d8f00140b8c4b6ca179a6dc67aa9413867c47e1fb04e"}, + {file = "grpcio-1.66.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3885f037eb11f1cacc41f207b705f38a44b69478086f40608959bf5ad85826dd"}, + {file = "grpcio-1.66.1-cp311-cp311-win32.whl", hash = "sha256:97ae7edd3f3f91480e48ede5d3e7d431ad6005bfdbd65c1b56913799ec79e791"}, + {file = "grpcio-1.66.1-cp311-cp311-win_amd64.whl", hash = "sha256:cfd349de4158d797db2bd82d2020554a121674e98fbe6b15328456b3bf2495bb"}, + {file = "grpcio-1.66.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:a92c4f58c01c77205df6ff999faa008540475c39b835277fb8883b11cada127a"}, + {file = "grpcio-1.66.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fdb14bad0835914f325349ed34a51940bc2ad965142eb3090081593c6e347be9"}, + {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f03a5884c56256e08fd9e262e11b5cfacf1af96e2ce78dc095d2c41ccae2c80d"}, + {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ca2559692d8e7e245d456877a85ee41525f3ed425aa97eb7a70fc9a79df91a0"}, + {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ca1be089fb4446490dd1135828bd42a7c7f8421e74fa581611f7afdf7ab761"}, + {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:d639c939ad7c440c7b2819a28d559179a4508783f7e5b991166f8d7a34b52815"}, + {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b9feb4e5ec8dc2d15709f4d5fc367794d69277f5d680baf1910fc9915c633524"}, + {file = "grpcio-1.66.1-cp312-cp312-win32.whl", hash = "sha256:7101db1bd4cd9b880294dec41a93fcdce465bdbb602cd8dc5bd2d6362b618759"}, + {file = "grpcio-1.66.1-cp312-cp312-win_amd64.whl", hash = "sha256:b0aa03d240b5539648d996cc60438f128c7f46050989e35b25f5c18286c86734"}, + {file = "grpcio-1.66.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:ecfe735e7a59e5a98208447293ff8580e9db1e890e232b8b292dc8bd15afc0d2"}, + {file = "grpcio-1.66.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4825a3aa5648010842e1c9d35a082187746aa0cdbf1b7a2a930595a94fb10fce"}, + {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:f517fd7259fe823ef3bd21e508b653d5492e706e9f0ef82c16ce3347a8a5620c"}, + {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1fe60d0772831d96d263b53d83fb9a3d050a94b0e94b6d004a5ad111faa5b5b"}, + {file = "grpcio-1.66.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31a049daa428f928f21090403e5d18ea02670e3d5d172581670be006100db9ef"}, + {file = "grpcio-1.66.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f914386e52cbdeb5d2a7ce3bf1fdfacbe9d818dd81b6099a05b741aaf3848bb"}, + {file = "grpcio-1.66.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bff2096bdba686019fb32d2dde45b95981f0d1490e054400f70fc9a8af34b49d"}, + {file = "grpcio-1.66.1-cp38-cp38-win32.whl", hash = "sha256:aa8ba945c96e73de29d25331b26f3e416e0c0f621e984a3ebdb2d0d0b596a3b3"}, + {file = "grpcio-1.66.1-cp38-cp38-win_amd64.whl", hash = "sha256:161d5c535c2bdf61b95080e7f0f017a1dfcb812bf54093e71e5562b16225b4ce"}, + {file = "grpcio-1.66.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:d0cd7050397b3609ea51727b1811e663ffda8bda39c6a5bb69525ef12414b503"}, + {file = "grpcio-1.66.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0e6c9b42ded5d02b6b1fea3a25f036a2236eeb75d0579bfd43c0018c88bf0a3e"}, + {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:c9f80f9fad93a8cf71c7f161778ba47fd730d13a343a46258065c4deb4b550c0"}, + {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dd67ed9da78e5121efc5c510f0122a972216808d6de70953a740560c572eb44"}, + {file = "grpcio-1.66.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48b0d92d45ce3be2084b92fb5bae2f64c208fea8ceed7fccf6a7b524d3c4942e"}, + {file = "grpcio-1.66.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4d813316d1a752be6f5c4360c49f55b06d4fe212d7df03253dfdae90c8a402bb"}, + {file = "grpcio-1.66.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c9bebc6627873ec27a70fc800f6083a13c70b23a5564788754b9ee52c5aef6c"}, + {file = "grpcio-1.66.1-cp39-cp39-win32.whl", hash = "sha256:30a1c2cf9390c894c90bbc70147f2372130ad189cffef161f0432d0157973f45"}, + {file = "grpcio-1.66.1-cp39-cp39-win_amd64.whl", hash = "sha256:17663598aadbedc3cacd7bbde432f541c8e07d2496564e22b214b22c7523dac8"}, + {file = "grpcio-1.66.1.tar.gz", hash = "sha256:35334f9c9745add3e357e3372756fd32d925bd52c41da97f4dfdafbde0bf0ee2"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.64.1)"] +protobuf = ["grpcio-tools (>=1.66.1)"] [[package]] name = "grpcio-status" -version = "1.62.2" +version = "1.62.3" description = "Status proto mapping for gRPC" optional = false python-versions = ">=3.6" files = [ - {file = "grpcio-status-1.62.2.tar.gz", hash = "sha256:62e1bfcb02025a1cd73732a2d33672d3e9d0df4d21c12c51e0bbcaf09bab742a"}, - {file = "grpcio_status-1.62.2-py3-none-any.whl", hash = "sha256:206ddf0eb36bc99b033f03b2c8e95d319f0044defae9b41ae21408e7e0cda48f"}, + {file = "grpcio-status-1.62.3.tar.gz", hash = "sha256:289bdd7b2459794a12cf95dc0cb727bd4a1742c37bd823f760236c937e53a485"}, + {file = "grpcio_status-1.62.3-py3-none-any.whl", hash = "sha256:f9049b762ba8de6b1086789d8315846e094edac2c50beaf462338b301a8fd4b8"}, ] [package.dependencies] googleapis-common-protos = ">=1.5.5" -grpcio = ">=1.62.2" +grpcio = ">=1.62.3" protobuf = ">=4.21.6" [[package]] @@ -1858,13 +1872,13 @@ test = ["Cython (>=0.29.24,<0.30.0)"] [[package]] name = "httpx" -version = "0.27.0" +version = "0.27.2" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, - {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, ] [package.dependencies] @@ -1879,6 +1893,7 @@ brotli = ["brotli", "brotlicffi"] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "httpx-sse" @@ -1893,13 +1908,13 @@ files = [ [[package]] name = "huggingface-hub" -version = "0.23.4" +version = "0.25.0" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.23.4-py3-none-any.whl", hash = "sha256:3a0b957aa87150addf0cc7bd71b4d954b78e749850e1e7fb29ebbd2db64ca037"}, - {file = "huggingface_hub-0.23.4.tar.gz", hash = "sha256:35d99016433900e44ae7efe1c209164a5a81dbbcd53a52f99c281dcd7ce22431"}, + {file = "huggingface_hub-0.25.0-py3-none-any.whl", hash = "sha256:e2f357b35d72d5012cfd127108c4e14abcd61ba4ebc90a5a374dc2456cb34e12"}, + {file = "huggingface_hub-0.25.0.tar.gz", hash = "sha256:fb5fbe6c12fcd99d187ec7db95db9110fb1a20505f23040a5449a717c1a0db4d"}, ] [package.dependencies] @@ -1912,17 +1927,17 @@ tqdm = ">=4.42.1" typing-extensions = ">=3.7.4.3" [package.extras] -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)"] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] cli = ["InquirerPy (==0.3.4)"] -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)"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] hf-transfer = ["hf-transfer (>=0.1.4)"] inference = ["aiohttp", "minijinja (>=1.0)"] -quality = ["mypy (==1.5.1)", "ruff (>=0.3.0)"] +quality = ["mypy (==1.5.1)", "ruff (>=0.5.0)"] tensorflow = ["graphviz", "pydot", "tensorflow"] tensorflow-testing = ["keras (<3.0)", "tensorflow"] -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)"] -torch = ["safetensors", "torch"] +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] +torch = ["safetensors[torch]", "torch"] typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] [[package]] @@ -1941,48 +1956,55 @@ pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_ve [[package]] name = "idna" -version = "3.7" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "importlib-metadata" -version = "7.1.0" +version = "8.4.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, + {file = "importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1"}, + {file = "importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "importlib-resources" -version = "6.4.0" +version = "6.4.5" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.4.0-py3-none-any.whl", hash = "sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c"}, - {file = "importlib_resources-6.4.0.tar.gz", hash = "sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145"}, + {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, + {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["jaraco.test (>=5.4)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] +type = ["pytest-mypy"] [[package]] name = "iniconfig" @@ -2024,20 +2046,6 @@ files = [ {file = "InstructorEmbedding-1.0.1.tar.gz", hash = "sha256:886495ddd561bad57e8e7d5e8ee44c4243b1d80b538a25d32d37350f6082ee62"}, ] -[[package]] -name = "intel-openmp" -version = "2021.4.0" -description = "Intel OpenMP* Runtime Library" -optional = false -python-versions = "*" -files = [ - {file = "intel_openmp-2021.4.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:41c01e266a7fdb631a7609191709322da2bbf24b252ba763f125dd651bcc7675"}, - {file = "intel_openmp-2021.4.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:3b921236a38384e2016f0f3d65af6732cf2c12918087128a9163225451e776f2"}, - {file = "intel_openmp-2021.4.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:e2240ab8d01472fed04f3544a878cda5da16c26232b7ea1b59132dbfb48b186e"}, - {file = "intel_openmp-2021.4.0-py2.py3-none-win32.whl", hash = "sha256:6e863d8fd3d7e8ef389d52cf97a50fe2afe1a19247e8c0d168ce021546f96fc9"}, - {file = "intel_openmp-2021.4.0-py2.py3-none-win_amd64.whl", hash = "sha256:eef4c8bcc8acefd7f5cd3b9384dbf73d59e2c99fc56545712ded913f43c4a94f"}, -] - [[package]] name = "isodate" version = "0.6.1" @@ -2207,17 +2215,18 @@ files = [ [[package]] name = "kubernetes" -version = "30.1.0" +version = "31.0.0" description = "Kubernetes python client" optional = false python-versions = ">=3.6" files = [ - {file = "kubernetes-30.1.0-py2.py3-none-any.whl", hash = "sha256:e212e8b7579031dd2e512168b617373bc1e03888d41ac4e04039240a292d478d"}, - {file = "kubernetes-30.1.0.tar.gz", hash = "sha256:41e4c77af9f28e7a6c314e3bd06a8c6229ddd787cad684e0ab9f69b498e98ebc"}, + {file = "kubernetes-31.0.0-py2.py3-none-any.whl", hash = "sha256:bf141e2d380c8520eada8b351f4e319ffee9636328c137aa432bc486ca1200e1"}, + {file = "kubernetes-31.0.0.tar.gz", hash = "sha256:28945de906c8c259c1ebe62703b56a03b714049372196f854105afe4e6d014c0"}, ] [package.dependencies] certifi = ">=14.05.14" +durationpy = ">=0.7" google-auth = ">=1.0.1" oauthlib = ">=3.2.2" python-dateutil = ">=2.5.3" @@ -2279,13 +2288,13 @@ files = [ [[package]] name = "markdown" -version = "3.6" +version = "3.7" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, - {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, + {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, + {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, ] [package.extras] @@ -2425,13 +2434,13 @@ pydantic = ">=2.5.2,<3" [[package]] name = "mkdocs" -version = "1.6.0" +version = "1.6.1" description = "Project documentation with Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"}, - {file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"}, + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, ] [package.dependencies] @@ -2455,13 +2464,13 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp [[package]] name = "mkdocs-awesome-pages-plugin" -version = "2.9.2" +version = "2.9.3" description = "An MkDocs plugin that simplifies configuring page titles and their order" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8.1" files = [ - {file = "mkdocs_awesome_pages_plugin-2.9.2-py3-none-any.whl", hash = "sha256:9c795587695bd1ee85a8b7e43293005418df5a8b9ef296a3e628be427b693b4d"}, - {file = "mkdocs_awesome_pages_plugin-2.9.2.tar.gz", hash = "sha256:c3f7d366ecfe99b64524c49a84d8e13c576c19a918ea2e6f59bb486a259313af"}, + {file = "mkdocs_awesome_pages_plugin-2.9.3-py3-none-any.whl", hash = "sha256:1ba433d4e7edaf8661b15b93267f78f78e2e06ca590fc0e651ea36b191d64ae4"}, + {file = "mkdocs_awesome_pages_plugin-2.9.3.tar.gz", hash = "sha256:bdf6369871f41bb17f09c3cfb573367732dfcceb5673d7a2c5c76ac2567b242f"}, ] [package.dependencies] @@ -2498,13 +2507,13 @@ files = [ [[package]] name = "mkdocs-material" -version = "9.5.29" +version = "9.5.36" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.29-py3-none-any.whl", hash = "sha256:afc1f508e2662ded95f0a35a329e8a5acd73ee88ca07ba73836eb6fcdae5d8b4"}, - {file = "mkdocs_material-9.5.29.tar.gz", hash = "sha256:3e977598ec15a4ddad5c4dfc9e08edab6023edb51e88f0729bd27be77e3d322a"}, + {file = "mkdocs_material-9.5.36-py3-none-any.whl", hash = "sha256:36734c1fd9404bea74236242ba3359b267fc930c7233b9fd086b0898825d0ac9"}, + {file = "mkdocs_material-9.5.36.tar.gz", hash = "sha256:140456f761320f72b399effc073fa3f8aac744c77b0970797c201cae2f6c967f"}, ] [package.dependencies] @@ -2536,115 +2545,118 @@ files = [ {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] -[[package]] -name = "mkl" -version = "2021.4.0" -description = "Intel® oneAPI Math Kernel Library" -optional = false -python-versions = "*" -files = [ - {file = "mkl-2021.4.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:67460f5cd7e30e405b54d70d1ed3ca78118370b65f7327d495e9c8847705e2fb"}, - {file = "mkl-2021.4.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:636d07d90e68ccc9630c654d47ce9fdeb036bb46e2b193b3a9ac8cfea683cce5"}, - {file = "mkl-2021.4.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:398dbf2b0d12acaf54117a5210e8f191827f373d362d796091d161f610c1ebfb"}, - {file = "mkl-2021.4.0-py2.py3-none-win32.whl", hash = "sha256:439c640b269a5668134e3dcbcea4350459c4a8bc46469669b2d67e07e3d330e8"}, - {file = "mkl-2021.4.0-py2.py3-none-win_amd64.whl", hash = "sha256:ceef3cafce4c009dd25f65d7ad0d833a0fbadc3d8903991ec92351fe5de1e718"}, -] - -[package.dependencies] -intel-openmp = "==2021.*" -tbb = "==2021.*" - [[package]] name = "mmh3" -version = "4.1.0" +version = "5.0.1" description = "Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "mmh3-4.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be5ac76a8b0cd8095784e51e4c1c9c318c19edcd1709a06eb14979c8d850c31a"}, - {file = "mmh3-4.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98a49121afdfab67cd80e912b36404139d7deceb6773a83620137aaa0da5714c"}, - {file = "mmh3-4.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5259ac0535874366e7d1a5423ef746e0d36a9e3c14509ce6511614bdc5a7ef5b"}, - {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5950827ca0453a2be357696da509ab39646044e3fa15cad364eb65d78797437"}, - {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1dd0f652ae99585b9dd26de458e5f08571522f0402155809fd1dc8852a613a39"}, - {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99d25548070942fab1e4a6f04d1626d67e66d0b81ed6571ecfca511f3edf07e6"}, - {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53db8d9bad3cb66c8f35cbc894f336273f63489ce4ac416634932e3cbe79eb5b"}, - {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75da0f615eb55295a437264cc0b736753f830b09d102aa4c2a7d719bc445ec05"}, - {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b926b07fd678ea84b3a2afc1fa22ce50aeb627839c44382f3d0291e945621e1a"}, - {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c5b053334f9b0af8559d6da9dc72cef0a65b325ebb3e630c680012323c950bb6"}, - {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bf33dc43cd6de2cb86e0aa73a1cc6530f557854bbbe5d59f41ef6de2e353d7b"}, - {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fa7eacd2b830727ba3dd65a365bed8a5c992ecd0c8348cf39a05cc77d22f4970"}, - {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:42dfd6742b9e3eec599f85270617debfa0bbb913c545bb980c8a4fa7b2d047da"}, - {file = "mmh3-4.1.0-cp310-cp310-win32.whl", hash = "sha256:2974ad343f0d39dcc88e93ee6afa96cedc35a9883bc067febd7ff736e207fa47"}, - {file = "mmh3-4.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:74699a8984ded645c1a24d6078351a056f5a5f1fe5838870412a68ac5e28d865"}, - {file = "mmh3-4.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:f0dc874cedc23d46fc488a987faa6ad08ffa79e44fb08e3cd4d4cf2877c00a00"}, - {file = "mmh3-4.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3280a463855b0eae64b681cd5b9ddd9464b73f81151e87bb7c91a811d25619e6"}, - {file = "mmh3-4.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:97ac57c6c3301769e757d444fa7c973ceb002cb66534b39cbab5e38de61cd896"}, - {file = "mmh3-4.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a7b6502cdb4dbd880244818ab363c8770a48cdccecf6d729ade0241b736b5ec0"}, - {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52ba2da04671a9621580ddabf72f06f0e72c1c9c3b7b608849b58b11080d8f14"}, - {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a5fef4c4ecc782e6e43fbeab09cff1bac82c998a1773d3a5ee6a3605cde343e"}, - {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5135358a7e00991f73b88cdc8eda5203bf9de22120d10a834c5761dbeb07dd13"}, - {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cff9ae76a54f7c6fe0167c9c4028c12c1f6de52d68a31d11b6790bb2ae685560"}, - {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f02576a4d106d7830ca90278868bf0983554dd69183b7bbe09f2fcd51cf54f"}, - {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:073d57425a23721730d3ff5485e2da489dd3c90b04e86243dd7211f889898106"}, - {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:71e32ddec7f573a1a0feb8d2cf2af474c50ec21e7a8263026e8d3b4b629805db"}, - {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7cbb20b29d57e76a58b40fd8b13a9130db495a12d678d651b459bf61c0714cea"}, - {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:a42ad267e131d7847076bb7e31050f6c4378cd38e8f1bf7a0edd32f30224d5c9"}, - {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4a013979fc9390abadc445ea2527426a0e7a4495c19b74589204f9b71bcaafeb"}, - {file = "mmh3-4.1.0-cp311-cp311-win32.whl", hash = "sha256:1d3b1cdad7c71b7b88966301789a478af142bddcb3a2bee563f7a7d40519a00f"}, - {file = "mmh3-4.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0dc6dc32eb03727467da8e17deffe004fbb65e8b5ee2b502d36250d7a3f4e2ec"}, - {file = "mmh3-4.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9ae3a5c1b32dda121c7dc26f9597ef7b01b4c56a98319a7fe86c35b8bc459ae6"}, - {file = "mmh3-4.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c"}, - {file = "mmh3-4.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d6af3e2287644b2b08b5924ed3a88c97b87b44ad08e79ca9f93d3470a54a41c5"}, - {file = "mmh3-4.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d82eb4defa245e02bb0b0dc4f1e7ee284f8d212633389c91f7fba99ba993f0a2"}, - {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba245e94b8d54765e14c2d7b6214e832557e7856d5183bc522e17884cab2f45d"}, - {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb04e2feeabaad6231e89cd43b3d01a4403579aa792c9ab6fdeef45cc58d4ec0"}, - {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e3b1a27def545ce11e36158ba5d5390cdbc300cfe456a942cc89d649cf7e3b2"}, - {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce0ab79ff736d7044e5e9b3bfe73958a55f79a4ae672e6213e92492ad5e734d5"}, - {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b02268be6e0a8eeb8a924d7db85f28e47344f35c438c1e149878bb1c47b1cd3"}, - {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:deb887f5fcdaf57cf646b1e062d56b06ef2f23421c80885fce18b37143cba828"}, - {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99dd564e9e2b512eb117bd0cbf0f79a50c45d961c2a02402787d581cec5448d5"}, - {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:08373082dfaa38fe97aa78753d1efd21a1969e51079056ff552e687764eafdfe"}, - {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:54b9c6a2ea571b714e4fe28d3e4e2db37abfd03c787a58074ea21ee9a8fd1740"}, - {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a7b1edf24c69e3513f879722b97ca85e52f9032f24a52284746877f6a7304086"}, - {file = "mmh3-4.1.0-cp312-cp312-win32.whl", hash = "sha256:411da64b951f635e1e2284b71d81a5a83580cea24994b328f8910d40bed67276"}, - {file = "mmh3-4.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:bebc3ecb6ba18292e3d40c8712482b4477abd6981c2ebf0e60869bd90f8ac3a9"}, - {file = "mmh3-4.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:168473dd608ade6a8d2ba069600b35199a9af837d96177d3088ca91f2b3798e3"}, - {file = "mmh3-4.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:372f4b7e1dcde175507640679a2a8790185bb71f3640fc28a4690f73da986a3b"}, - {file = "mmh3-4.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:438584b97f6fe13e944faf590c90fc127682b57ae969f73334040d9fa1c7ffa5"}, - {file = "mmh3-4.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6e27931b232fc676675fac8641c6ec6b596daa64d82170e8597f5a5b8bdcd3b6"}, - {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:571a92bad859d7b0330e47cfd1850b76c39b615a8d8e7aa5853c1f971fd0c4b1"}, - {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a69d6afe3190fa08f9e3a58e5145549f71f1f3fff27bd0800313426929c7068"}, - {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afb127be0be946b7630220908dbea0cee0d9d3c583fa9114a07156f98566dc28"}, - {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:940d86522f36348ef1a494cbf7248ab3f4a1638b84b59e6c9e90408bd11ad729"}, - {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3dcccc4935686619a8e3d1f7b6e97e3bd89a4a796247930ee97d35ea1a39341"}, - {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc"}, - {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bcb1b8b951a2c0b0fb8a5426c62a22557e2ffc52539e0a7cc46eb667b5d606a9"}, - {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6477a05d5e5ab3168e82e8b106e316210ac954134f46ec529356607900aea82a"}, - {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:da5892287e5bea6977364b15712a2573c16d134bc5fdcdd4cf460006cf849278"}, - {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:99180d7fd2327a6fffbaff270f760576839dc6ee66d045fa3a450f3490fda7f5"}, - {file = "mmh3-4.1.0-cp38-cp38-win32.whl", hash = "sha256:9b0d4f3949913a9f9a8fb1bb4cc6ecd52879730aab5ff8c5a3d8f5b593594b73"}, - {file = "mmh3-4.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:598c352da1d945108aee0c3c3cfdd0e9b3edef74108f53b49d481d3990402169"}, - {file = "mmh3-4.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:475d6d1445dd080f18f0f766277e1237fa2914e5fe3307a3b2a3044f30892103"}, - {file = "mmh3-4.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5ca07c41e6a2880991431ac717c2a049056fff497651a76e26fc22224e8b5732"}, - {file = "mmh3-4.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ebe052fef4bbe30c0548d12ee46d09f1b69035ca5208a7075e55adfe091be44"}, - {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaefd42e85afb70f2b855a011f7b4d8a3c7e19c3f2681fa13118e4d8627378c5"}, - {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0ae43caae5a47afe1b63a1ae3f0986dde54b5fb2d6c29786adbfb8edc9edfb"}, - {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6218666f74c8c013c221e7f5f8a693ac9cf68e5ac9a03f2373b32d77c48904de"}, - {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac59294a536ba447b5037f62d8367d7d93b696f80671c2c45645fa9f1109413c"}, - {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:086844830fcd1e5c84fec7017ea1ee8491487cfc877847d96f86f68881569d2e"}, - {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e42b38fad664f56f77f6fbca22d08450f2464baa68acdbf24841bf900eb98e87"}, - {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d08b790a63a9a1cde3b5d7d733ed97d4eb884bfbc92f075a091652d6bfd7709a"}, - {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:73ea4cc55e8aea28c86799ecacebca09e5f86500414870a8abaedfcbaf74d288"}, - {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f90938ff137130e47bcec8dc1f4ceb02f10178c766e2ef58a9f657ff1f62d124"}, - {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:aa1f13e94b8631c8cd53259250556edcf1de71738936b60febba95750d9632bd"}, - {file = "mmh3-4.1.0-cp39-cp39-win32.whl", hash = "sha256:a3b680b471c181490cf82da2142029edb4298e1bdfcb67c76922dedef789868d"}, - {file = "mmh3-4.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:fefef92e9c544a8dbc08f77a8d1b6d48006a750c4375bbcd5ff8199d761e263b"}, - {file = "mmh3-4.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:8e2c1f6a2b41723a4f82bd5a762a777836d29d664fc0095f17910bea0adfd4a6"}, - {file = "mmh3-4.1.0.tar.gz", hash = "sha256:a1cf25348b9acd229dda464a094d6170f47d2850a1fcb762a3b6172d2ce6ca4a"}, + {file = "mmh3-5.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f0a4b4bf05778ed77d820d6e7d0e9bd6beb0c01af10e1ce9233f5d2f814fcafa"}, + {file = "mmh3-5.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac7a391039aeab95810c2d020b69a94eb6b4b37d4e2374831e92db3a0cdf71c6"}, + {file = "mmh3-5.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3a2583b5521ca49756d8d8bceba80627a9cc295f255dcab4e3df7ccc2f09679a"}, + {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:081a8423fe53c1ac94f87165f3e4c500125d343410c1a0c5f1703e898a3ef038"}, + {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8b4d72713799755dc8954a7d36d5c20a6c8de7b233c82404d122c7c7c1707cc"}, + {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:389a6fd51efc76d3182d36ec306448559c1244f11227d2bb771bdd0e6cc91321"}, + {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39f4128edaa074bff721b1d31a72508cba4d2887ee7867f22082e1fe9d4edea0"}, + {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d5d23a94d91aabba3386b3769048d5f4210fdfef80393fece2f34ba5a7b466c"}, + {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:16347d038361f8b8f24fd2b7ef378c9b68ddee9f7706e46269b6e0d322814713"}, + {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6e299408565af7d61f2d20a5ffdd77cf2ed902460fe4e6726839d59ba4b72316"}, + {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42050af21ddfc5445ee5a66e73a8fc758c71790305e3ee9e4a85a8e69e810f94"}, + {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2ae9b1f5ef27ec54659920f0404b7ceb39966e28867c461bfe83a05e8d18ddb0"}, + {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:50c2495a02045f3047d71d4ae9cdd7a15efc0bcbb7ff17a18346834a8e2d1d19"}, + {file = "mmh3-5.0.1-cp310-cp310-win32.whl", hash = "sha256:c028fa77cddf351ca13b4a56d43c1775652cde0764cadb39120b68f02a23ecf6"}, + {file = "mmh3-5.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c5e741e421ec14400c4aae30890515c201f518403bdef29ae1e00d375bb4bbb5"}, + {file = "mmh3-5.0.1-cp310-cp310-win_arm64.whl", hash = "sha256:b17156d56fabc73dbf41bca677ceb6faed435cc8544f6566d72ea77d8a17e9d0"}, + {file = "mmh3-5.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a6d5a9b1b923f1643559ba1fc0bf7a5076c90cbb558878d3bf3641ce458f25d"}, + {file = "mmh3-5.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3349b968be555f7334bbcce839da98f50e1e80b1c615d8e2aa847ea4a964a012"}, + {file = "mmh3-5.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1bd3c94b110e55db02ab9b605029f48a2f7f677c6e58c09d44e42402d438b7e1"}, + {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ba84d48608f79adbb10bb09986b6dc33eeda5c2d1bd75d00820081b73bde9"}, + {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0217987a8b8525c8d9170f66d036dec4ab45cfbd53d47e8d76125791ceb155e"}, + {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2797063a34e78d1b61639a98b0edec1c856fa86ab80c7ec859f1796d10ba429"}, + {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8bba16340adcbd47853a2fbe5afdb397549e8f2e79324ff1dced69a3f8afe7c3"}, + {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:282797957c9f60b51b9d768a602c25f579420cc9af46feb77d457a27823d270a"}, + {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e4fb670c29e63f954f9e7a2cdcd57b36a854c2538f579ef62681ccbaa1de2b69"}, + {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ee7d85438dc6aff328e19ab052086a3c29e8a9b632998a49e5c4b0034e9e8d6"}, + {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b7fb5db231f3092444bc13901e6a8d299667126b00636ffbad4a7b45e1051e2f"}, + {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c100dd441703da5ec136b1d9003ed4a041d8a1136234c9acd887499796df6ad8"}, + {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71f3b765138260fd7a7a2dba0ea5727dabcd18c1f80323c9cfef97a7e86e01d0"}, + {file = "mmh3-5.0.1-cp311-cp311-win32.whl", hash = "sha256:9a76518336247fd17689ce3ae5b16883fd86a490947d46a0193d47fb913e26e3"}, + {file = "mmh3-5.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:336bc4df2e44271f1c302d289cc3d78bd52d3eed8d306c7e4bff8361a12bf148"}, + {file = "mmh3-5.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:af6522722fbbc5999aa66f7244d0986767a46f1fb05accc5200f75b72428a508"}, + {file = "mmh3-5.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f2730bb263ed9c388e8860438b057a53e3cc701134a6ea140f90443c4c11aa40"}, + {file = "mmh3-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6246927bc293f6d56724536400b85fb85f5be26101fa77d5f97dd5e2a4c69bf2"}, + {file = "mmh3-5.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fbca322519a6e6e25b6abf43e940e1667cf8ea12510e07fb4919b48a0cd1c411"}, + {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae8c19903ed8a1724ad9e67e86f15d198a7a1271a4f9be83d47e38f312ed672"}, + {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a09fd6cc72c07c0c07c3357714234b646d78052487c4a3bd5f7f6e08408cff60"}, + {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ff8551fee7ae3b11c5d986b6347ade0dccaadd4670ffdb2b944dee120ffcc84"}, + {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e39694c73a5a20c8bf36dfd8676ed351e5234d55751ba4f7562d85449b21ef3f"}, + {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba6001989a92f72a89c7cf382fda831678bd780707a66b4f8ca90239fdf2123"}, + {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0771f90c9911811cc606a5c7b7b58f33501c9ee896ed68a6ac22c7d55878ecc0"}, + {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:09b31ed0c0c0920363e96641fac4efde65b1ab62b8df86293142f35a254e72b4"}, + {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5cf4a8deda0235312db12075331cb417c4ba163770edfe789bde71d08a24b692"}, + {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:41f7090a95185ef20ac018581a99337f0cbc84a2135171ee3290a9c0d9519585"}, + {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b97b5b368fb7ff22194ec5854f5b12d8de9ab67a0f304728c7f16e5d12135b76"}, + {file = "mmh3-5.0.1-cp312-cp312-win32.whl", hash = "sha256:842516acf04da546f94fad52db125ee619ccbdcada179da51c326a22c4578cb9"}, + {file = "mmh3-5.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:d963be0dbfd9fca209c17172f6110787ebf78934af25e3694fe2ba40e55c1e2b"}, + {file = "mmh3-5.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:a5da292ceeed8ce8e32b68847261a462d30fd7b478c3f55daae841404f433c15"}, + {file = "mmh3-5.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:673e3f1c8d4231d6fb0271484ee34cb7146a6499fc0df80788adb56fd76842da"}, + {file = "mmh3-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f795a306bd16a52ad578b663462cc8e95500b3925d64118ae63453485d67282b"}, + {file = "mmh3-5.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5ed57a5e28e502a1d60436cc25c76c3a5ba57545f250f2969af231dc1221e0a5"}, + {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:632c28e7612e909dbb6cbe2fe496201ada4695b7715584005689c5dc038e59ad"}, + {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53fd6bd525a5985e391c43384672d9d6b317fcb36726447347c7fc75bfed34ec"}, + {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dceacf6b0b961a0e499836af3aa62d60633265607aef551b2a3e3c48cdaa5edd"}, + {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f0738d478fdfb5d920f6aff5452c78f2c35b0eff72caa2a97dfe38e82f93da2"}, + {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e70285e7391ab88b872e5bef632bad16b9d99a6d3ca0590656a4753d55988af"}, + {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:27e5fc6360aa6b828546a4318da1a7da6bf6e5474ccb053c3a6aa8ef19ff97bd"}, + {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7989530c3c1e2c17bf5a0ec2bba09fd19819078ba90beedabb1c3885f5040b0d"}, + {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:cdad7bee649950da7ecd3cbbbd12fb81f1161072ecbdb5acfa0018338c5cb9cf"}, + {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e143b8f184c1bb58cecd85ab4a4fd6dc65a2d71aee74157392c3fddac2a4a331"}, + {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e5eb12e886f3646dd636f16b76eb23fc0c27e8ff3c1ae73d4391e50ef60b40f6"}, + {file = "mmh3-5.0.1-cp313-cp313-win32.whl", hash = "sha256:16e6dddfa98e1c2d021268e72c78951234186deb4df6630e984ac82df63d0a5d"}, + {file = "mmh3-5.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3ffb792d70b8c4a2382af3598dad6ae0c5bd9cee5b7ffcc99aa2f5fd2c1bf70"}, + {file = "mmh3-5.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:122fa9ec148383f9124292962bda745f192b47bfd470b2af5fe7bb3982b17896"}, + {file = "mmh3-5.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b12bad8c75e6ff5d67319794fb6a5e8c713826c818d47f850ad08b4aa06960c6"}, + {file = "mmh3-5.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e5bbb066538c1048d542246fc347bb7994bdda29a3aea61c22f9f8b57111ce69"}, + {file = "mmh3-5.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:eee6134273f64e2a106827cc8fd77e70cc7239a285006fc6ab4977d59b015af2"}, + {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d04d9aa19d48e4c7bbec9cabc2c4dccc6ff3b2402f856d5bf0de03e10f167b5b"}, + {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79f37da1eed034d06567a69a7988456345c7f29e49192831c3975b464493b16e"}, + {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:242f77666743337aa828a2bf2da71b6ba79623ee7f93edb11e009f69237c8561"}, + {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffd943fff690463945f6441a2465555b3146deaadf6a5e88f2590d14c655d71b"}, + {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565b15f8d7df43acb791ff5a360795c20bfa68bca8b352509e0fbabd06cc48cd"}, + {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc6aafb867c2030df98ac7760ff76b500359252867985f357bd387739f3d5287"}, + {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:32898170644d45aa27c974ab0d067809c066205110f5c6d09f47d9ece6978bfe"}, + {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:42865567838d2193eb64e0ef571f678bf361a254fcdef0c5c8e73243217829bd"}, + {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:5ff5c1f301c4a8b6916498969c0fcc7e3dbc56b4bfce5cfe3fe31f3f4609e5ae"}, + {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:be74c2dda8a6f44a504450aa2c3507f8067a159201586fc01dd41ab80efc350f"}, + {file = "mmh3-5.0.1-cp38-cp38-win32.whl", hash = "sha256:5610a842621ff76c04b20b29cf5f809b131f241a19d4937971ba77dc99a7f330"}, + {file = "mmh3-5.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:de15739ac50776fe8aa1ef13f1be46a6ee1fbd45f6d0651084097eb2be0a5aa4"}, + {file = "mmh3-5.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:48e84cf3cc7e8c41bc07de72299a73b92d9e3cde51d97851420055b1484995f7"}, + {file = "mmh3-5.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd9dc28c2d168c49928195c2e29b96f9582a5d07bd690a28aede4cc07b0e696"}, + {file = "mmh3-5.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2771a1c56a3d4bdad990309cff5d0a8051f29c8ec752d001f97d6392194ae880"}, + {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5ff2a8322ba40951a84411550352fba1073ce1c1d1213bb7530f09aed7f8caf"}, + {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a16bd3ec90682c9e0a343e6bd4c778c09947c8c5395cdb9e5d9b82b2559efbca"}, + {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d45733a78d68b5b05ff4a823aea51fa664df1d3bf4929b152ff4fd6dea2dd69b"}, + {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:904285e83cedebc8873b0838ed54c20f7344120be26e2ca5a907ab007a18a7a0"}, + {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac4aeb1784e43df728034d0ed72e4b2648db1a69fef48fa58e810e13230ae5ff"}, + {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:cb3d4f751a0b8b4c8d06ef1c085216c8fddcc8b8c8d72445976b5167a40c6d1e"}, + {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8021851935600e60c42122ed1176399d7692df338d606195cd599d228a04c1c6"}, + {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:6182d5924a5efc451900f864cbb021d7e8ad5d524816ca17304a0f663bc09bb5"}, + {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:5f30b834552a4f79c92e3d266336fb87fd92ce1d36dc6813d3e151035890abbd"}, + {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cd4383f35e915e06d077df27e04ffd3be7513ec6a9de2d31f430393f67e192a7"}, + {file = "mmh3-5.0.1-cp39-cp39-win32.whl", hash = "sha256:1455fb6b42665a97db8fc66e89a861e52b567bce27ed054c47877183f86ea6e3"}, + {file = "mmh3-5.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:9e26a0f4eb9855a143f5938a53592fa14c2d3b25801c2106886ab6c173982780"}, + {file = "mmh3-5.0.1-cp39-cp39-win_arm64.whl", hash = "sha256:0d0a35a69abdad7549c4030a714bb4ad07902edb3bbe61e1bbc403ded5d678be"}, + {file = "mmh3-5.0.1.tar.gz", hash = "sha256:7dab080061aeb31a6069a181f27c473a1f67933854e36a3464931f2716508896"}, ] [package.extras] -test = ["mypy (>=1.0)", "pytest (>=7.0.0)"] +benchmark = ["pymmh3 (==0.0.5)", "pyperf (==2.7.0)", "xxhash (==3.5.0)"] +docs = ["myst-parser (==4.0.0)", "shibuya (==2024.8.30)", "sphinx (==8.0.2)", "sphinx-copybutton (==0.5.2)"] +lint = ["black (==24.8.0)", "clang-format (==18.1.8)", "isort (==5.13.2)", "pylint (==3.2.7)"] +plot = ["matplotlib (==3.9.2)", "pandas (==2.2.2)"] +test = ["pytest (==8.3.3)", "pytest-sugar (==1.0.0)"] +type = ["mypy (==1.11.2)"] [[package]] name = "monotonic" @@ -2676,103 +2688,108 @@ tests = ["pytest (>=4.6)"] [[package]] name = "multidict" -version = "6.0.5" +version = "6.1.0" description = "multidict implementation" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, - {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, - {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, - {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, - {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, - {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, - {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, - {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, - {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, - {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, - {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, - {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, - {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, - {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, - {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, - {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + [[package]] name = "mypy" version = "0.910" @@ -2870,13 +2887,13 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "nltk" -version = "3.8.1" +version = "3.9.1" description = "Natural Language Toolkit" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, - {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, + {file = "nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1"}, + {file = "nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868"}, ] [package.dependencies] @@ -2984,12 +3001,13 @@ files = [ [[package]] name = "nvidia-cudnn-cu12" -version = "8.9.2.26" +version = "9.1.0.70" description = "cuDNN runtime libraries" optional = false python-versions = ">=3" files = [ - {file = "nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl", hash = "sha256:5ccb288774fdfb07a7e7025ffec286971c06d8d7b4fb162525334616d7629ff9"}, + {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f"}, + {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-win_amd64.whl", hash = "sha256:6278562929433d68365a07a4a1546c237ba2849852c0d4b2262a486e805b977a"}, ] [package.dependencies] @@ -3060,13 +3078,14 @@ files = [ [[package]] name = "nvidia-nvjitlink-cu12" -version = "12.5.82" +version = "12.6.68" description = "Nvidia JIT LTO Library" optional = false python-versions = ">=3" files = [ - {file = "nvidia_nvjitlink_cu12-12.5.82-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f9b37bc5c8cf7509665cb6ada5aaa0ce65618f2332b7d3e78e9790511f111212"}, - {file = "nvidia_nvjitlink_cu12-12.5.82-py3-none-win_amd64.whl", hash = "sha256:e782564d705ff0bf61ac3e1bf730166da66dd2fe9012f111ede5fc49b64ae697"}, + {file = "nvidia_nvjitlink_cu12-12.6.68-py3-none-manylinux2014_aarch64.whl", hash = "sha256:b3fd0779845f68b92063ab1393abab1ed0a23412fc520df79a8190d098b5cd6b"}, + {file = "nvidia_nvjitlink_cu12-12.6.68-py3-none-manylinux2014_x86_64.whl", hash = "sha256:125a6c2a44e96386dda634e13d944e60b07a0402d391a070e8fb4104b34ea1ab"}, + {file = "nvidia_nvjitlink_cu12-12.6.68-py3-none-win_amd64.whl", hash = "sha256:a55744c98d70317c5e23db14866a8cc2b733f7324509e941fc96276f9f37801d"}, ] [[package]] @@ -3098,107 +3117,108 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "onnxruntime" -version = "1.18.1" +version = "1.19.2" description = "ONNX Runtime is a runtime accelerator for Machine Learning models" optional = false python-versions = "*" files = [ - {file = "onnxruntime-1.18.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:29ef7683312393d4ba04252f1b287d964bd67d5e6048b94d2da3643986c74d80"}, - {file = "onnxruntime-1.18.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc706eb1df06ddf55776e15a30519fb15dda7697f987a2bbda4962845e3cec05"}, - {file = "onnxruntime-1.18.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7de69f5ced2a263531923fa68bbec52a56e793b802fcd81a03487b5e292bc3a"}, - {file = "onnxruntime-1.18.1-cp310-cp310-win32.whl", hash = "sha256:221e5b16173926e6c7de2cd437764492aa12b6811f45abd37024e7cf2ae5d7e3"}, - {file = "onnxruntime-1.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:75211b619275199c861ee94d317243b8a0fcde6032e5a80e1aa9ded8ab4c6060"}, - {file = "onnxruntime-1.18.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:f26582882f2dc581b809cfa41a125ba71ad9e715738ec6402418df356969774a"}, - {file = "onnxruntime-1.18.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef36f3a8b768506d02be349ac303fd95d92813ba3ba70304d40c3cd5c25d6a4c"}, - {file = "onnxruntime-1.18.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:170e711393e0618efa8ed27b59b9de0ee2383bd2a1f93622a97006a5ad48e434"}, - {file = "onnxruntime-1.18.1-cp311-cp311-win32.whl", hash = "sha256:9b6a33419b6949ea34e0dc009bc4470e550155b6da644571ecace4b198b0d88f"}, - {file = "onnxruntime-1.18.1-cp311-cp311-win_amd64.whl", hash = "sha256:5c1380a9f1b7788da742c759b6a02ba771fe1ce620519b2b07309decbd1a2fe1"}, - {file = "onnxruntime-1.18.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:31bd57a55e3f983b598675dfc7e5d6f0877b70ec9864b3cc3c3e1923d0a01919"}, - {file = "onnxruntime-1.18.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9e03c4ba9f734500691a4d7d5b381cd71ee2f3ce80a1154ac8f7aed99d1ecaa"}, - {file = "onnxruntime-1.18.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:781aa9873640f5df24524f96f6070b8c550c66cb6af35710fd9f92a20b4bfbf6"}, - {file = "onnxruntime-1.18.1-cp312-cp312-win32.whl", hash = "sha256:3a2d9ab6254ca62adbb448222e630dc6883210f718065063518c8f93a32432be"}, - {file = "onnxruntime-1.18.1-cp312-cp312-win_amd64.whl", hash = "sha256:ad93c560b1c38c27c0275ffd15cd7f45b3ad3fc96653c09ce2931179982ff204"}, - {file = "onnxruntime-1.18.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:3b55dc9d3c67626388958a3eb7ad87eb7c70f75cb0f7ff4908d27b8b42f2475c"}, - {file = "onnxruntime-1.18.1-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f80dbcfb6763cc0177a31168b29b4bd7662545b99a19e211de8c734b657e0669"}, - {file = "onnxruntime-1.18.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f1ff2c61a16d6c8631796c54139bafea41ee7736077a0fc64ee8ae59432f5c58"}, - {file = "onnxruntime-1.18.1-cp38-cp38-win32.whl", hash = "sha256:219855bd272fe0c667b850bf1a1a5a02499269a70d59c48e6f27f9c8bcb25d02"}, - {file = "onnxruntime-1.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:afdf16aa607eb9a2c60d5ca2d5abf9f448e90c345b6b94c3ed14f4fb7e6a2d07"}, - {file = "onnxruntime-1.18.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:128df253ade673e60cea0955ec9d0e89617443a6d9ce47c2d79eb3f72a3be3de"}, - {file = "onnxruntime-1.18.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9839491e77e5c5a175cab3621e184d5a88925ee297ff4c311b68897197f4cde9"}, - {file = "onnxruntime-1.18.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad3187c1faff3ac15f7f0e7373ef4788c582cafa655a80fdbb33eaec88976c66"}, - {file = "onnxruntime-1.18.1-cp39-cp39-win32.whl", hash = "sha256:34657c78aa4e0b5145f9188b550ded3af626651b15017bf43d280d7e23dbf195"}, - {file = "onnxruntime-1.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:9c14fd97c3ddfa97da5feef595e2c73f14c2d0ec1d4ecbea99c8d96603c89589"}, + {file = "onnxruntime-1.19.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:84fa57369c06cadd3c2a538ae2a26d76d583e7c34bdecd5769d71ca5c0fc750e"}, + {file = "onnxruntime-1.19.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdc471a66df0c1cdef774accef69e9f2ca168c851ab5e4f2f3341512c7ef4666"}, + {file = "onnxruntime-1.19.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e3a4ce906105d99ebbe817f536d50a91ed8a4d1592553f49b3c23c4be2560ae6"}, + {file = "onnxruntime-1.19.2-cp310-cp310-win32.whl", hash = "sha256:4b3d723cc154c8ddeb9f6d0a8c0d6243774c6b5930847cc83170bfe4678fafb3"}, + {file = "onnxruntime-1.19.2-cp310-cp310-win_amd64.whl", hash = "sha256:17ed7382d2c58d4b7354fb2b301ff30b9bf308a1c7eac9546449cd122d21cae5"}, + {file = "onnxruntime-1.19.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:d863e8acdc7232d705d49e41087e10b274c42f09e259016a46f32c34e06dc4fd"}, + {file = "onnxruntime-1.19.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c1dfe4f660a71b31caa81fc298a25f9612815215a47b286236e61d540350d7b6"}, + {file = "onnxruntime-1.19.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a36511dc07c5c964b916697e42e366fa43c48cdb3d3503578d78cef30417cb84"}, + {file = "onnxruntime-1.19.2-cp311-cp311-win32.whl", hash = "sha256:50cbb8dc69d6befad4746a69760e5b00cc3ff0a59c6c3fb27f8afa20e2cab7e7"}, + {file = "onnxruntime-1.19.2-cp311-cp311-win_amd64.whl", hash = "sha256:1c3e5d415b78337fa0b1b75291e9ea9fb2a4c1f148eb5811e7212fed02cfffa8"}, + {file = "onnxruntime-1.19.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:68e7051bef9cfefcbb858d2d2646536829894d72a4130c24019219442b1dd2ed"}, + {file = "onnxruntime-1.19.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2d366fbcc205ce68a8a3bde2185fd15c604d9645888703785b61ef174265168"}, + {file = "onnxruntime-1.19.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:477b93df4db467e9cbf34051662a4b27c18e131fa1836e05974eae0d6e4cf29b"}, + {file = "onnxruntime-1.19.2-cp312-cp312-win32.whl", hash = "sha256:9a174073dc5608fad05f7cf7f320b52e8035e73d80b0a23c80f840e5a97c0147"}, + {file = "onnxruntime-1.19.2-cp312-cp312-win_amd64.whl", hash = "sha256:190103273ea4507638ffc31d66a980594b237874b65379e273125150eb044857"}, + {file = "onnxruntime-1.19.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:636bc1d4cc051d40bc52e1f9da87fbb9c57d9d47164695dfb1c41646ea51ea66"}, + {file = "onnxruntime-1.19.2-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5bd8b875757ea941cbcfe01582970cc299893d1b65bd56731e326a8333f638a3"}, + {file = "onnxruntime-1.19.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b2046fc9560f97947bbc1acbe4c6d48585ef0f12742744307d3364b131ac5778"}, + {file = "onnxruntime-1.19.2-cp38-cp38-win32.whl", hash = "sha256:31c12840b1cde4ac1f7d27d540c44e13e34f2345cf3642762d2a3333621abb6a"}, + {file = "onnxruntime-1.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:016229660adea180e9a32ce218b95f8f84860a200f0f13b50070d7d90e92956c"}, + {file = "onnxruntime-1.19.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:006c8d326835c017a9e9f74c9c77ebb570a71174a1e89fe078b29a557d9c3848"}, + {file = "onnxruntime-1.19.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df2a94179a42d530b936f154615b54748239c2908ee44f0d722cb4df10670f68"}, + {file = "onnxruntime-1.19.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fae4b4de45894b9ce7ae418c5484cbf0341db6813effec01bb2216091c52f7fb"}, + {file = "onnxruntime-1.19.2-cp39-cp39-win32.whl", hash = "sha256:dc5430f473e8706fff837ae01323be9dcfddd3ea471c900a91fa7c9b807ec5d3"}, + {file = "onnxruntime-1.19.2-cp39-cp39-win_amd64.whl", hash = "sha256:38475e29a95c5f6c62c2c603d69fc7d4c6ccbf4df602bd567b86ae1138881c49"}, ] [package.dependencies] coloredlogs = "*" flatbuffers = "*" -numpy = ">=1.21.6,<2.0" +numpy = ">=1.21.6" packaging = "*" protobuf = "*" sympy = "*" [[package]] name = "openai" -version = "1.35.13" +version = "1.47.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.35.13-py3-none-any.whl", hash = "sha256:36ec3e93e0d1f243f69be85c89b9221a471c3e450dfd9df16c9829e3cdf63e60"}, - {file = "openai-1.35.13.tar.gz", hash = "sha256:c684f3945608baf7d2dcc0ef3ee6f3e27e4c66f21076df0b47be45d57e6ae6e4"}, + {file = "openai-1.47.0-py3-none-any.whl", hash = "sha256:9ccc8737dfa791f7bd903db4758c176b8544a8cd89d3a3d2add3cea02a34c3a0"}, + {file = "openai-1.47.0.tar.gz", hash = "sha256:6e14d6f77c8cf546646afcd87a2ef752505b3710d2564a2e433e17307dfa86a0"}, ] [package.dependencies] anyio = ">=3.5.0,<5" distro = ">=1.7.0,<2" httpx = ">=0.23.0,<1" +jiter = ">=0.4.0,<1" pydantic = ">=1.9.0,<3" sniffio = "*" tqdm = ">4" -typing-extensions = ">=4.7,<5" +typing-extensions = ">=4.11,<5" [package.extras] datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] [[package]] name = "opentelemetry-api" -version = "1.25.0" +version = "1.27.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.25.0-py3-none-any.whl", hash = "sha256:757fa1aa020a0f8fa139f8959e53dec2051cc26b832e76fa839a6d76ecefd737"}, - {file = "opentelemetry_api-1.25.0.tar.gz", hash = "sha256:77c4985f62f2614e42ce77ee4c9da5fa5f0bc1e1821085e9a47533a9323ae869"}, + {file = "opentelemetry_api-1.27.0-py3-none-any.whl", hash = "sha256:953d5871815e7c30c81b56d910c707588000fff7a3ca1c73e6531911d53065e7"}, + {file = "opentelemetry_api-1.27.0.tar.gz", hash = "sha256:ed673583eaa5f81b5ce5e86ef7cdaf622f88ef65f0b9aab40b843dcae5bef342"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=7.1" +importlib-metadata = ">=6.0,<=8.4.0" [[package]] name = "opentelemetry-exporter-otlp-proto-common" -version = "1.25.0" +version = "1.27.0" description = "OpenTelemetry Protobuf encoding" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_exporter_otlp_proto_common-1.25.0-py3-none-any.whl", hash = "sha256:15637b7d580c2675f70246563363775b4e6de947871e01d0f4e3881d1848d693"}, - {file = "opentelemetry_exporter_otlp_proto_common-1.25.0.tar.gz", hash = "sha256:c93f4e30da4eee02bacd1e004eb82ce4da143a2f8e15b987a9f603e0a85407d3"}, + {file = "opentelemetry_exporter_otlp_proto_common-1.27.0-py3-none-any.whl", hash = "sha256:675db7fffcb60946f3a5c43e17d1168a3307a94a930ecf8d2ea1f286f3d4f79a"}, + {file = "opentelemetry_exporter_otlp_proto_common-1.27.0.tar.gz", hash = "sha256:159d27cf49f359e3798c4c3eb8da6ef4020e292571bd8c5604a2a573231dd5c8"}, ] [package.dependencies] -opentelemetry-proto = "1.25.0" +opentelemetry-proto = "1.27.0" [[package]] name = "opentelemetry-exporter-otlp-proto-grpc" -version = "1.25.0" +version = "1.27.0" description = "OpenTelemetry Collector Protobuf over gRPC Exporter" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_exporter_otlp_proto_grpc-1.25.0-py3-none-any.whl", hash = "sha256:3131028f0c0a155a64c430ca600fd658e8e37043cb13209f0109db5c1a3e4eb4"}, - {file = "opentelemetry_exporter_otlp_proto_grpc-1.25.0.tar.gz", hash = "sha256:c0b1661415acec5af87625587efa1ccab68b873745ca0ee96b69bb1042087eac"}, + {file = "opentelemetry_exporter_otlp_proto_grpc-1.27.0-py3-none-any.whl", hash = "sha256:56b5bbd5d61aab05e300d9d62a6b3c134827bbd28d0b12f2649c2da368006c9e"}, + {file = "opentelemetry_exporter_otlp_proto_grpc-1.27.0.tar.gz", hash = "sha256:af6f72f76bcf425dfb5ad11c1a6d6eca2863b91e63575f89bb7b4b55099d968f"}, ] [package.dependencies] @@ -3206,19 +3226,19 @@ deprecated = ">=1.2.6" googleapis-common-protos = ">=1.52,<2.0" grpcio = ">=1.0.0,<2.0.0" opentelemetry-api = ">=1.15,<2.0" -opentelemetry-exporter-otlp-proto-common = "1.25.0" -opentelemetry-proto = "1.25.0" -opentelemetry-sdk = ">=1.25.0,<1.26.0" +opentelemetry-exporter-otlp-proto-common = "1.27.0" +opentelemetry-proto = "1.27.0" +opentelemetry-sdk = ">=1.27.0,<1.28.0" [[package]] name = "opentelemetry-instrumentation" -version = "0.46b0" +version = "0.48b0" description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_instrumentation-0.46b0-py3-none-any.whl", hash = "sha256:89cd721b9c18c014ca848ccd11181e6b3fd3f6c7669e35d59c48dc527408c18b"}, - {file = "opentelemetry_instrumentation-0.46b0.tar.gz", hash = "sha256:974e0888fb2a1e01c38fbacc9483d024bb1132aad92d6d24e2e5543887a7adda"}, + {file = "opentelemetry_instrumentation-0.48b0-py3-none-any.whl", hash = "sha256:a69750dc4ba6a5c3eb67986a337185a25b739966d80479befe37b546fc870b44"}, + {file = "opentelemetry_instrumentation-0.48b0.tar.gz", hash = "sha256:94929685d906380743a71c3970f76b5f07476eea1834abd5dd9d17abfe23cc35"}, ] [package.dependencies] @@ -3228,55 +3248,55 @@ wrapt = ">=1.0.0,<2.0.0" [[package]] name = "opentelemetry-instrumentation-asgi" -version = "0.46b0" +version = "0.48b0" description = "ASGI instrumentation for OpenTelemetry" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_instrumentation_asgi-0.46b0-py3-none-any.whl", hash = "sha256:f13c55c852689573057837a9500aeeffc010c4ba59933c322e8f866573374759"}, - {file = "opentelemetry_instrumentation_asgi-0.46b0.tar.gz", hash = "sha256:02559f30cf4b7e2a737ab17eb52aa0779bcf4cc06573064f3e2cb4dcc7d3040a"}, + {file = "opentelemetry_instrumentation_asgi-0.48b0-py3-none-any.whl", hash = "sha256:ddb1b5fc800ae66e85a4e2eca4d9ecd66367a8c7b556169d9e7b57e10676e44d"}, + {file = "opentelemetry_instrumentation_asgi-0.48b0.tar.gz", hash = "sha256:04c32174b23c7fa72ddfe192dad874954968a6a924608079af9952964ecdf785"}, ] [package.dependencies] asgiref = ">=3.0,<4.0" opentelemetry-api = ">=1.12,<2.0" -opentelemetry-instrumentation = "0.46b0" -opentelemetry-semantic-conventions = "0.46b0" -opentelemetry-util-http = "0.46b0" +opentelemetry-instrumentation = "0.48b0" +opentelemetry-semantic-conventions = "0.48b0" +opentelemetry-util-http = "0.48b0" [package.extras] instruments = ["asgiref (>=3.0,<4.0)"] [[package]] name = "opentelemetry-instrumentation-fastapi" -version = "0.46b0" +version = "0.48b0" description = "OpenTelemetry FastAPI Instrumentation" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_instrumentation_fastapi-0.46b0-py3-none-any.whl", hash = "sha256:e0f5d150c6c36833dd011f0e6ef5ede6d7406c1aed0c7c98b2d3b38a018d1b33"}, - {file = "opentelemetry_instrumentation_fastapi-0.46b0.tar.gz", hash = "sha256:928a883a36fc89f9702f15edce43d1a7104da93d740281e32d50ffd03dbb4365"}, + {file = "opentelemetry_instrumentation_fastapi-0.48b0-py3-none-any.whl", hash = "sha256:afeb820a59e139d3e5d96619600f11ce0187658b8ae9e3480857dd790bc024f2"}, + {file = "opentelemetry_instrumentation_fastapi-0.48b0.tar.gz", hash = "sha256:21a72563ea412c0b535815aeed75fc580240f1f02ebc72381cfab672648637a2"}, ] [package.dependencies] opentelemetry-api = ">=1.12,<2.0" -opentelemetry-instrumentation = "0.46b0" -opentelemetry-instrumentation-asgi = "0.46b0" -opentelemetry-semantic-conventions = "0.46b0" -opentelemetry-util-http = "0.46b0" +opentelemetry-instrumentation = "0.48b0" +opentelemetry-instrumentation-asgi = "0.48b0" +opentelemetry-semantic-conventions = "0.48b0" +opentelemetry-util-http = "0.48b0" [package.extras] instruments = ["fastapi (>=0.58,<1.0)"] [[package]] name = "opentelemetry-proto" -version = "1.25.0" +version = "1.27.0" description = "OpenTelemetry Python Proto" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_proto-1.25.0-py3-none-any.whl", hash = "sha256:f07e3341c78d835d9b86665903b199893befa5e98866f63d22b00d0b7ca4972f"}, - {file = "opentelemetry_proto-1.25.0.tar.gz", hash = "sha256:35b6ef9dc4a9f7853ecc5006738ad40443701e52c26099e197895cbda8b815a3"}, + {file = "opentelemetry_proto-1.27.0-py3-none-any.whl", hash = "sha256:b133873de5581a50063e1e4b29cdcf0c5e253a8c2d8dc1229add20a4c3830ace"}, + {file = "opentelemetry_proto-1.27.0.tar.gz", hash = "sha256:33c9345d91dafd8a74fc3d7576c5a38f18b7fdf8d02983ac67485386132aedd6"}, ] [package.dependencies] @@ -3284,103 +3304,110 @@ protobuf = ">=3.19,<5.0" [[package]] name = "opentelemetry-sdk" -version = "1.25.0" +version = "1.27.0" description = "OpenTelemetry Python SDK" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_sdk-1.25.0-py3-none-any.whl", hash = "sha256:d97ff7ec4b351692e9d5a15af570c693b8715ad78b8aafbec5c7100fe966b4c9"}, - {file = "opentelemetry_sdk-1.25.0.tar.gz", hash = "sha256:ce7fc319c57707ef5bf8b74fb9f8ebdb8bfafbe11898410e0d2a761d08a98ec7"}, + {file = "opentelemetry_sdk-1.27.0-py3-none-any.whl", hash = "sha256:365f5e32f920faf0fd9e14fdfd92c086e317eaa5f860edba9cdc17a380d9197d"}, + {file = "opentelemetry_sdk-1.27.0.tar.gz", hash = "sha256:d525017dea0ccce9ba4e0245100ec46ecdc043f2d7b8315d56b19aff0904fa6f"}, ] [package.dependencies] -opentelemetry-api = "1.25.0" -opentelemetry-semantic-conventions = "0.46b0" +opentelemetry-api = "1.27.0" +opentelemetry-semantic-conventions = "0.48b0" typing-extensions = ">=3.7.4" [[package]] name = "opentelemetry-semantic-conventions" -version = "0.46b0" +version = "0.48b0" description = "OpenTelemetry Semantic Conventions" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_semantic_conventions-0.46b0-py3-none-any.whl", hash = "sha256:6daef4ef9fa51d51855d9f8e0ccd3a1bd59e0e545abe99ac6203804e36ab3e07"}, - {file = "opentelemetry_semantic_conventions-0.46b0.tar.gz", hash = "sha256:fbc982ecbb6a6e90869b15c1673be90bd18c8a56ff1cffc0864e38e2edffaefa"}, + {file = "opentelemetry_semantic_conventions-0.48b0-py3-none-any.whl", hash = "sha256:a0de9f45c413a8669788a38569c7e0a11ce6ce97861a628cca785deecdc32a1f"}, + {file = "opentelemetry_semantic_conventions-0.48b0.tar.gz", hash = "sha256:12d74983783b6878162208be57c9effcb89dc88691c64992d70bb89dc00daa1a"}, ] [package.dependencies] -opentelemetry-api = "1.25.0" +deprecated = ">=1.2.6" +opentelemetry-api = "1.27.0" [[package]] name = "opentelemetry-util-http" -version = "0.46b0" +version = "0.48b0" description = "Web util for OpenTelemetry" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_util_http-0.46b0-py3-none-any.whl", hash = "sha256:8dc1949ce63caef08db84ae977fdc1848fe6dc38e6bbaad0ae3e6ecd0d451629"}, - {file = "opentelemetry_util_http-0.46b0.tar.gz", hash = "sha256:03b6e222642f9c7eae58d9132343e045b50aca9761fcb53709bd2b663571fdf6"}, + {file = "opentelemetry_util_http-0.48b0-py3-none-any.whl", hash = "sha256:76f598af93aab50328d2a69c786beaedc8b6a7770f7a818cc307eb353debfffb"}, + {file = "opentelemetry_util_http-0.48b0.tar.gz", hash = "sha256:60312015153580cc20f322e5cdc3d3ecad80a71743235bdb77716e742814623c"}, ] [[package]] name = "orjson" -version = "3.10.6" +version = "3.10.7" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.6-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2"}, - {file = "orjson-3.10.6-cp310-none-win32.whl", hash = "sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3"}, - {file = "orjson-3.10.6-cp310-none-win_amd64.whl", hash = "sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c"}, - {file = "orjson-3.10.6-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5"}, - {file = "orjson-3.10.6-cp311-none-win32.whl", hash = "sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd"}, - {file = "orjson-3.10.6-cp311-none-win_amd64.whl", hash = "sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b"}, - {file = "orjson-3.10.6-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, - {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, - {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, - {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b"}, - {file = "orjson-3.10.6-cp38-none-win32.whl", hash = "sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6"}, - {file = "orjson-3.10.6-cp38-none-win_amd64.whl", hash = "sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7"}, - {file = "orjson-3.10.6-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a"}, - {file = "orjson-3.10.6-cp39-none-win32.whl", hash = "sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219"}, - {file = "orjson-3.10.6-cp39-none-win_amd64.whl", hash = "sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844"}, - {file = "orjson-3.10.6.tar.gz", hash = "sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7"}, + {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, + {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, + {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, + {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, + {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, + {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, + {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, + {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, + {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, + {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, + {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, + {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, + {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, + {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, + {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, + {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, + {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, + {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, + {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, + {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, ] [[package]] @@ -3407,14 +3434,19 @@ files = [ [[package]] name = "paginate" -version = "0.5.6" +version = "0.5.7" description = "Divides large result sets into pages for easier browsing" optional = false python-versions = "*" files = [ - {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] +[package.extras] +dev = ["pytest", "tox"] +lint = ["black"] + [[package]] name = "parameterized" version = "0.9.0" @@ -3431,13 +3463,13 @@ dev = ["jinja2"] [[package]] name = "paramiko" -version = "3.4.0" +version = "3.5.0" description = "SSH2 protocol library" optional = false python-versions = ">=3.6" files = [ - {file = "paramiko-3.4.0-py3-none-any.whl", hash = "sha256:43f0b51115a896f9c00f59618023484cb3a14b98bbceab43394a39c6739b7ee7"}, - {file = "paramiko-3.4.0.tar.gz", hash = "sha256:aac08f26a31dc4dffd92821527d1682d99d52f9ef6851968114a8728f3c274d3"}, + {file = "paramiko-3.5.0-py3-none-any.whl", hash = "sha256:1fedf06b085359051cd7d0d270cebe19e755a8a921cc2ddbfa647fb0cd7d68f9"}, + {file = "paramiko-3.5.0.tar.gz", hash = "sha256:ad11e540da4f55cedda52931f1a3f812a8238a7af7f62a60de538cd80bb28124"}, ] [package.dependencies] @@ -3600,19 +3632,19 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" @@ -3631,13 +3663,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "posthog" -version = "3.5.0" +version = "3.6.6" description = "Integrate PostHog into any python application." optional = false python-versions = "*" files = [ - {file = "posthog-3.5.0-py2.py3-none-any.whl", hash = "sha256:3c672be7ba6f95d555ea207d4486c171d06657eb34b3ce25eb043bfe7b6b5b76"}, - {file = "posthog-3.5.0.tar.gz", hash = "sha256:8f7e3b2c6e8714d0c0c542a2109b83a7549f63b7113a133ab2763a89245ef2ef"}, + {file = "posthog-3.6.6-py2.py3-none-any.whl", hash = "sha256:38834fd7f0732582a20d4eb4674c8d5c088e464d14d1b3f8c176e389aecaa4ef"}, + {file = "posthog-3.6.6.tar.gz", hash = "sha256:1e04783293117109189ad7048f3eedbe21caff0e39bee5e2d47a93dd790fefac"}, ] [package.dependencies] @@ -3650,17 +3682,17 @@ six = ">=1.5" [package.extras] dev = ["black", "flake8", "flake8-print", "isort", "pre-commit"] sentry = ["django", "sentry-sdk"] -test = ["coverage", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint", "pytest", "pytest-timeout"] +test = ["coverage", "django", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint", "pytest", "pytest-timeout"] [[package]] name = "prettytable" -version = "3.10.2" +version = "3.11.0" description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" optional = false python-versions = ">=3.8" files = [ - {file = "prettytable-3.10.2-py3-none-any.whl", hash = "sha256:1cbfdeb4bcc73976a778a0fb33cb6d752e75396f16574dcb3e2d6332fd93c76a"}, - {file = "prettytable-3.10.2.tar.gz", hash = "sha256:29ec6c34260191d42cd4928c28d56adec360ac2b1208a26c7e4f14b90cc8bc84"}, + {file = "prettytable-3.11.0-py3-none-any.whl", hash = "sha256:aa17083feb6c71da11a68b2c213b04675c4af4ce9c541762632ca3f2cb3546dd"}, + {file = "prettytable-3.11.0.tar.gz", hash = "sha256:7e23ca1e68bbfd06ba8de98bf553bf3493264c96d5e8a615c0471025deeba722"}, ] [package.dependencies] @@ -3702,22 +3734,22 @@ testing = ["google-api-core (>=1.31.5)"] [[package]] name = "protobuf" -version = "4.25.3" +version = "4.25.5" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, + {file = "protobuf-4.25.5-cp310-abi3-win32.whl", hash = "sha256:5e61fd921603f58d2f5acb2806a929b4675f8874ff5f330b7d6f7e2e784bbcd8"}, + {file = "protobuf-4.25.5-cp310-abi3-win_amd64.whl", hash = "sha256:4be0571adcbe712b282a330c6e89eae24281344429ae95c6d85e79e84780f5ea"}, + {file = "protobuf-4.25.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:b2fde3d805354df675ea4c7c6338c1aecd254dfc9925e88c6d31a2bcb97eb173"}, + {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:919ad92d9b0310070f8356c24b855c98df2b8bd207ebc1c0c6fcc9ab1e007f3d"}, + {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fe14e16c22be926d3abfcb500e60cab068baf10b542b8c858fa27e098123e331"}, + {file = "protobuf-4.25.5-cp38-cp38-win32.whl", hash = "sha256:98d8d8aa50de6a2747efd9cceba361c9034050ecce3e09136f90de37ddba66e1"}, + {file = "protobuf-4.25.5-cp38-cp38-win_amd64.whl", hash = "sha256:b0234dd5a03049e4ddd94b93400b67803c823cfc405689688f59b34e0742381a"}, + {file = "protobuf-4.25.5-cp39-cp39-win32.whl", hash = "sha256:abe32aad8561aa7cc94fc7ba4fdef646e576983edb94a73381b03c53728a626f"}, + {file = "protobuf-4.25.5-cp39-cp39-win_amd64.whl", hash = "sha256:7a183f592dc80aa7c8da7ad9e55091c4ffc9497b3054452d629bb85fa27c2a45"}, + {file = "protobuf-4.25.5-py3-none-any.whl", hash = "sha256:0aebecb809cae990f8129ada5ca273d9d670b76d9bfc9b1809f0a9c02b7dbf41"}, + {file = "protobuf-4.25.5.tar.gz", hash = "sha256:7f8249476b4a9473645db7f8ab42b02fe1488cbe5fb72fddd445e0665afd8584"}, ] [[package]] @@ -3744,24 +3776,24 @@ files = [ [[package]] name = "pyasn1" -version = "0.6.0" +version = "0.6.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false python-versions = ">=3.8" files = [ - {file = "pyasn1-0.6.0-py2.py3-none-any.whl", hash = "sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473"}, - {file = "pyasn1-0.6.0.tar.gz", hash = "sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c"}, + {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, + {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, ] [[package]] name = "pyasn1-modules" -version = "0.4.0" +version = "0.4.1" description = "A collection of ASN.1-based protocols modules" optional = false python-versions = ">=3.8" files = [ - {file = "pyasn1_modules-0.4.0-py3-none-any.whl", hash = "sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b"}, - {file = "pyasn1_modules-0.4.0.tar.gz", hash = "sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6"}, + {file = "pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd"}, + {file = "pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c"}, ] [package.dependencies] @@ -3846,119 +3878,120 @@ files = [ [[package]] name = "pydantic" -version = "2.8.2" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, - {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] -annotated-types = ">=0.4.0" -pydantic-core = "2.20.1" +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.20.1" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, - {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, - {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, - {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, - {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, - {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, - {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, - {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, - {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, - {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, - {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, - {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, - {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, - {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -3988,13 +4021,13 @@ semver = ["semver (>=3.0.2)"] [[package]] name = "pydantic-settings" -version = "2.3.4" +version = "2.5.2" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.3.4-py3-none-any.whl", hash = "sha256:11ad8bacb68a045f00e4f862c7a718c8a9ec766aa8fd4c32e39a0594b207b53a"}, - {file = "pydantic_settings-2.3.4.tar.gz", hash = "sha256:c5802e3d62b78e82522319bbc9b8f8ffb28ad1c988a99311d04f2a6051fca0a7"}, + {file = "pydantic_settings-2.5.2-py3-none-any.whl", hash = "sha256:2c912e55fd5794a59bf8c832b9de832dcfdf4778d79ff79b708744eed499a907"}, + {file = "pydantic_settings-2.5.2.tar.gz", hash = "sha256:f90b139682bee4d2065273d5185d71d37ea46cfe57e1b5ae184fc6a0b2484ca0"}, ] [package.dependencies] @@ -4002,6 +4035,7 @@ pydantic = ">=2.7.0" python-dotenv = ">=0.21.0" [package.extras] +azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"] toml = ["tomli (>=2.0.1)"] yaml = ["pyyaml (>=6.0.1)"] @@ -4021,13 +4055,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.8.1" +version = "10.10.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.8.1-py3-none-any.whl", hash = "sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"}, - {file = "pymdown_extensions-10.8.1.tar.gz", hash = "sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940"}, + {file = "pymdown_extensions-10.10.1-py3-none-any.whl", hash = "sha256:6c74ea6c2e2285186a241417480fc2d3cc52941b3ec2dced4014c84dc78c5493"}, + {file = "pymdown_extensions-10.10.1.tar.gz", hash = "sha256:ad277ee4739ced051c3b6328d22ce782358a3bec39bc6ca52815ccbf44f7acdc"}, ] [package.dependencies] @@ -4086,15 +4120,18 @@ files = [ [[package]] name = "pyreadline3" -version = "3.4.1" +version = "3.5.4" description = "A python implementation of GNU readline." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, - {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, + {file = "pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6"}, + {file = "pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7"}, ] +[package.extras] +dev = ["build", "flake8", "mypy", "pytest", "twine"] + [[package]] name = "pytest" version = "6.2.5" @@ -4149,75 +4186,75 @@ cli = ["click (>=5.0)"] [[package]] name = "python-multipart" -version = "0.0.9" +version = "0.0.10" description = "A streaming multipart parser for Python" optional = false python-versions = ">=3.8" files = [ - {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, - {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, + {file = "python_multipart-0.0.10-py3-none-any.whl", hash = "sha256:2b06ad9e8d50c7a8db80e3b56dab590137b323410605af2be20d62a5f1ba1dc8"}, + {file = "python_multipart-0.0.10.tar.gz", hash = "sha256:46eb3c6ce6fdda5fb1a03c7e11d490e407c6930a2703fe7aef4da71c374688fa"}, ] -[package.extras] -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)"] - [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] @@ -4236,104 +4273,119 @@ pyyaml = "*" [[package]] name = "rapidfuzz" -version = "3.9.4" +version = "3.9.7" description = "rapid fuzzy string matching" optional = false python-versions = ">=3.8" files = [ - {file = "rapidfuzz-3.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9b9793c19bdf38656c8eaefbcf4549d798572dadd70581379e666035c9df781"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:015b5080b999404fe06ec2cb4f40b0be62f0710c926ab41e82dfbc28e80675b4"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acc5ceca9c1e1663f3e6c23fb89a311f69b7615a40ddd7645e3435bf3082688a"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1424e238bc3f20e1759db1e0afb48a988a9ece183724bef91ea2a291c0b92a95"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed01378f605aa1f449bee82cd9c83772883120d6483e90aa6c5a4ce95dc5c3aa"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb26d412271e5a76cdee1c2d6bf9881310665d3fe43b882d0ed24edfcb891a84"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f37e9e1f17be193c41a31c864ad4cd3ebd2b40780db11cd5c04abf2bcf4201b"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d070ec5cf96b927c4dc5133c598c7ff6db3b833b363b2919b13417f1002560bc"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:10e61bb7bc807968cef09a0e32ce253711a2d450a4dce7841d21d45330ffdb24"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:31a2fc60bb2c7face4140010a7aeeafed18b4f9cdfa495cc644a68a8c60d1ff7"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fbebf1791a71a2e89f5c12b78abddc018354d5859e305ec3372fdae14f80a826"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:aee9fc9e3bb488d040afc590c0a7904597bf4ccd50d1491c3f4a5e7e67e6cd2c"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-win32.whl", hash = "sha256:005a02688a51c7d2451a2d41c79d737aa326ff54167211b78a383fc2aace2c2c"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:3a2e75e41ee3274754d3b2163cc6c82cd95b892a85ab031f57112e09da36455f"}, - {file = "rapidfuzz-3.9.4-cp310-cp310-win_arm64.whl", hash = "sha256:2c99d355f37f2b289e978e761f2f8efeedc2b14f4751d9ff7ee344a9a5ca98d9"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:07141aa6099e39d48637ce72a25b893fc1e433c50b3e837c75d8edf99e0c63e1"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:db1664eaff5d7d0f2542dd9c25d272478deaf2c8412e4ad93770e2e2d828e175"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc01a223f6605737bec3202e94dcb1a449b6c76d46082cfc4aa980f2a60fd40e"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1869c42e73e2a8910b479be204fa736418741b63ea2325f9cc583c30f2ded41a"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:62ea7007941fb2795fff305ac858f3521ec694c829d5126e8f52a3e92ae75526"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:698e992436bf7f0afc750690c301215a36ff952a6dcd62882ec13b9a1ebf7a39"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b76f611935f15a209d3730c360c56b6df8911a9e81e6a38022efbfb96e433bab"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129627d730db2e11f76169344a032f4e3883d34f20829419916df31d6d1338b1"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:90a82143c14e9a14b723a118c9ef8d1bbc0c5a16b1ac622a1e6c916caff44dd8"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ded58612fe3b0e0d06e935eaeaf5a9fd27da8ba9ed3e2596307f40351923bf72"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f16f5d1c4f02fab18366f2d703391fcdbd87c944ea10736ca1dc3d70d8bd2d8b"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:26aa7eece23e0df55fb75fbc2a8fb678322e07c77d1fd0e9540496e6e2b5f03e"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-win32.whl", hash = "sha256:f187a9c3b940ce1ee324710626daf72c05599946bd6748abe9e289f1daa9a077"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d8e9130fe5d7c9182990b366ad78fd632f744097e753e08ace573877d67c32f8"}, - {file = "rapidfuzz-3.9.4-cp311-cp311-win_arm64.whl", hash = "sha256:40419e98b10cd6a00ce26e4837a67362f658fc3cd7a71bd8bd25c99f7ee8fea5"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b5d5072b548db1b313a07d62d88fe0b037bd2783c16607c647e01b070f6cf9e5"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf5bcf22e1f0fd273354462631d443ef78d677f7d2fc292de2aec72ae1473e66"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c8fc973adde8ed52810f590410e03fb6f0b541bbaeb04c38d77e63442b2df4c"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2464bb120f135293e9a712e342c43695d3d83168907df05f8c4ead1612310c7"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d9d58689aca22057cf1a5851677b8a3ccc9b535ca008c7ed06dc6e1899f7844"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167e745f98baa0f3034c13583e6302fb69249a01239f1483d68c27abb841e0a1"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db0bf0663b4b6da1507869722420ea9356b6195aa907228d6201303e69837af9"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd6ac61b74fdb9e23f04d5f068e6cf554f47e77228ca28aa2347a6ca8903972f"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:60ff67c690acecf381759c16cb06c878328fe2361ddf77b25d0e434ea48a29da"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:cb934363380c60f3a57d14af94325125cd8cded9822611a9f78220444034e36e"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fe833493fb5cc5682c823ea3e2f7066b07612ee8f61ecdf03e1268f262106cdd"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2797fb847d89e04040d281cb1902cbeffbc4b5131a5c53fc0db490fd76b2a547"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-win32.whl", hash = "sha256:52e3d89377744dae68ed7c84ad0ddd3f5e891c82d48d26423b9e066fc835cc7c"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:c76da20481c906e08400ee9be230f9e611d5931a33707d9df40337c2655c84b5"}, - {file = "rapidfuzz-3.9.4-cp312-cp312-win_arm64.whl", hash = "sha256:f2d2846f3980445864c7e8b8818a29707fcaff2f0261159ef6b7bd27ba139296"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:355fc4a268ffa07bab88d9adee173783ec8d20136059e028d2a9135c623c44e6"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d81a78f90269190b568a8353d4ea86015289c36d7e525cd4d43176c88eff429"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e618625ffc4660b26dc8e56225f8b966d5842fa190e70c60db6cd393e25b86e"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b712336ad6f2bacdbc9f1452556e8942269ef71f60a9e6883ef1726b52d9228a"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc1ee19fdad05770c897e793836c002344524301501d71ef2e832847425707"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1950f8597890c0c707cb7e0416c62a1cf03dcdb0384bc0b2dbda7e05efe738ec"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a6c35f272ec9c430568dc8c1c30cb873f6bc96be2c79795e0bce6db4e0e101d"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:1df0f9e9239132a231c86ae4f545ec2b55409fa44470692fcfb36b1bd00157ad"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d2c51955329bfccf99ae26f63d5928bf5be9fcfcd9f458f6847fd4b7e2b8986c"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:3c522f462d9fc504f2ea8d82e44aa580e60566acc754422c829ad75c752fbf8d"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:d8a52fc50ded60d81117d7647f262c529659fb21d23e14ebfd0b35efa4f1b83d"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:04dbdfb0f0bfd3f99cf1e9e24fadc6ded2736d7933f32f1151b0f2abb38f9a25"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-win32.whl", hash = "sha256:4968c8bd1df84b42f382549e6226710ad3476f976389839168db3e68fd373298"}, - {file = "rapidfuzz-3.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:3fe4545f89f8d6c27b6bbbabfe40839624873c08bd6700f63ac36970a179f8f5"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f256c8fb8f3125574c8c0c919ab0a1f75d7cba4d053dda2e762dcc36357969d"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5fdc09cf6e9d8eac3ce48a4615b3a3ee332ea84ac9657dbbefef913b13e632f"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d395d46b80063d3b5d13c0af43d2c2cedf3ab48c6a0c2aeec715aa5455b0c632"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7fa714fb96ce9e70c37e64c83b62fe8307030081a0bfae74a76fac7ba0f91715"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bc1a0f29f9119be7a8d3c720f1d2068317ae532e39e4f7f948607c3a6de8396"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6022674aa1747d6300f699cd7c54d7dae89bfe1f84556de699c4ac5df0838082"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcb72e5f9762fd469701a7e12e94b924af9004954f8c739f925cb19c00862e38"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ad04ae301129f0eb5b350a333accd375ce155a0c1cec85ab0ec01f770214e2e4"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f46a22506f17c0433e349f2d1dc11907c393d9b3601b91d4e334fa9a439a6a4d"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:01b42a8728c36011718da409aa86b84984396bf0ca3bfb6e62624f2014f6022c"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e590d5d5443cf56f83a51d3c4867bd1f6be8ef8cfcc44279522bcef3845b2a51"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4c72078b5fdce34ba5753f9299ae304e282420e6455e043ad08e4488ca13a2b0"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-win32.whl", hash = "sha256:f75639277304e9b75e6a7b3c07042d2264e16740a11e449645689ed28e9c2124"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:e81e27e8c32a1e1278a4bb1ce31401bfaa8c2cc697a053b985a6f8d013df83ec"}, - {file = "rapidfuzz-3.9.4-cp39-cp39-win_arm64.whl", hash = "sha256:15bc397ee9a3ed1210b629b9f5f1da809244adc51ce620c504138c6e7095b7bd"}, - {file = "rapidfuzz-3.9.4-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:20488ade4e1ddba3cfad04f400da7a9c1b91eff5b7bd3d1c50b385d78b587f4f"}, - {file = "rapidfuzz-3.9.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:e61b03509b1a6eb31bc5582694f6df837d340535da7eba7bedb8ae42a2fcd0b9"}, - {file = "rapidfuzz-3.9.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:098d231d4e51644d421a641f4a5f2f151f856f53c252b03516e01389b2bfef99"}, - {file = "rapidfuzz-3.9.4-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17ab8b7d10fde8dd763ad428aa961c0f30a1b44426e675186af8903b5d134fb0"}, - {file = "rapidfuzz-3.9.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e272df61bee0a056a3daf99f9b1bd82cf73ace7d668894788139c868fdf37d6f"}, - {file = "rapidfuzz-3.9.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d6481e099ff8c4edda85b8b9b5174c200540fd23c8f38120016c765a86fa01f5"}, - {file = "rapidfuzz-3.9.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ad61676e9bdae677d577fe80ec1c2cea1d150c86be647e652551dcfe505b1113"}, - {file = "rapidfuzz-3.9.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:af65020c0dd48d0d8ae405e7e69b9d8ae306eb9b6249ca8bf511a13f465fad85"}, - {file = "rapidfuzz-3.9.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d38b4e026fcd580e0bda6c0ae941e0e9a52c6bc66cdce0b8b0da61e1959f5f8"}, - {file = "rapidfuzz-3.9.4-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f74ed072c2b9dc6743fb19994319d443a4330b0e64aeba0aa9105406c7c5b9c2"}, - {file = "rapidfuzz-3.9.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aee5f6b8321f90615c184bd8a4c676e9becda69b8e4e451a90923db719d6857c"}, - {file = "rapidfuzz-3.9.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3a555e3c841d6efa350f862204bb0a3fea0c006b8acc9b152b374fa36518a1c6"}, - {file = "rapidfuzz-3.9.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0772150d37bf018110351c01d032bf9ab25127b966a29830faa8ad69b7e2f651"}, - {file = "rapidfuzz-3.9.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:addcdd3c3deef1bd54075bd7aba0a6ea9f1d01764a08620074b7a7b1e5447cb9"}, - {file = "rapidfuzz-3.9.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fe86b82b776554add8f900b6af202b74eb5efe8f25acdb8680a5c977608727f"}, - {file = "rapidfuzz-3.9.4-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0fc91ac59f4414d8542454dfd6287a154b8e6f1256718c898f695bdbb993467"}, - {file = "rapidfuzz-3.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a944e546a296a5fdcaabb537b01459f1b14d66f74e584cb2a91448bffadc3c1"}, - {file = "rapidfuzz-3.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4fb96ba96d58c668a17a06b5b5e8340fedc26188e87b0d229d38104556f30cd8"}, - {file = "rapidfuzz-3.9.4.tar.gz", hash = "sha256:366bf8947b84e37f2f4cf31aaf5f37c39f620d8c0eddb8b633e6ba0129ca4a0a"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ccf68e30b80e903f2309f90a438dbd640dd98e878eeb5ad361a288051ee5b75c"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:696a79018ef989bf1c9abd9005841cee18005ccad4748bad8a4c274c47b6241a"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4eebf6c93af0ae866c22b403a84747580bb5c10f0d7b51c82a87f25405d4dcb"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e9125377fa3d21a8abd4fbdbcf1c27be73e8b1850f0b61b5b711364bf3b59db"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c12d180b17a22d107c8747de9c68d0b9c1d15dcda5445ff9bf9f4ccfb67c3e16"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1318d42610c26dcd68bd3279a1bf9e3605377260867c9a8ed22eafc1bd93a7c"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5fa6e3c6e0333051c1f3a49f0807b3366f4131c8d6ac8c3e05fd0d0ce3755c"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fcf79b686962d7bec458a0babc904cb4fa319808805e036b9d5a531ee6b9b835"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8b01153c7466d0bad48fba77a303d5a768e66f24b763853469f47220b3de4661"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:94baaeea0b4f8632a6da69348b1e741043eba18d4e3088d674d3f76586b6223d"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6c5b32875646cb7f60c193ade99b2e4b124f19583492115293cd00f6fb198b17"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:110b6294396bc0a447648627479c9320f095c2034c0537f687592e0f58622638"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-win32.whl", hash = "sha256:3445a35c4c8d288f2b2011eb61bce1227c633ce85a3154e727170f37c0266bb2"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:0d1415a732ee75e74a90af12020b77a0b396b36c60afae1bde3208a78cd2c9fc"}, + {file = "rapidfuzz-3.9.7-cp310-cp310-win_arm64.whl", hash = "sha256:836f4d88b8bd0fff2ebe815dcaab8aa6c8d07d1d566a7e21dd137cf6fe11ed5b"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d098ce6162eb5e48fceb0745455bc950af059df6113eec83e916c129fca11408"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:048d55d36c02c6685a2b2741688503c3d15149694506655b6169dcfd3b6c2585"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c33211cfff9aec425bb1bfedaf94afcf337063aa273754f22779d6dadebef4c2"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6d9db2fa4e9be171e9bb31cf2d2575574774966b43f5b951062bb2e67885852"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4e049d5ad61448c9a020d1061eba20944c4887d720c4069724beb6ea1692507"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cfa74aac64c85898b93d9c80bb935a96bf64985e28d4ee0f1a3d1f3bf11a5106"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965693c2e9efd425b0f059f5be50ef830129f82892fa1858e220e424d9d0160f"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8501000a5eb8037c4b56857724797fe5a8b01853c363de91c8d0d0ad56bef319"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d92c552c6b7577402afdd547dcf5d31ea6c8ae31ad03f78226e055cfa37f3c6"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1ee2086f490cb501d86b7e386c1eb4e3a0ccbb0c99067089efaa8c79012c8952"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1de91e7fd7f525e10ea79a6e62c559d1b0278ec097ad83d9da378b6fab65a265"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a4da514d13f4433e16960a17f05b67e0af30ac771719c9a9fb877e5004f74477"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-win32.whl", hash = "sha256:a40184c67db8252593ec518e17fb8a6e86d7259dc9f2d6c0bf4ff4db8cf1ad4b"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:c4f28f1930b09a2c300357d8465b388cecb7e8b2f454a5d5425561710b7fd07f"}, + {file = "rapidfuzz-3.9.7-cp311-cp311-win_arm64.whl", hash = "sha256:675b75412a943bb83f1f53e2e54fd18c80ef15ed642dc6eb0382d1949419d904"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1ef6a1a8f0b12f8722f595f15c62950c9a02d5abc64742561299ffd49f6c6944"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:32532af1d70c6ec02ea5ac7ee2766dfff7c8ae8c761abfe8da9e527314e634e8"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae1a38bade755aa9dd95a81cda949e1bf9cd92b79341ccc5e2189c9e7bdfc5ec"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d73ee2df41224c87336448d279b5b6a3a75f36e41dd3dcf538c0c9cce36360d8"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be3a1fc3e2ab3bdf93dc0c83c00acca8afd2a80602297d96cf4a0ba028333cdf"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603f48f621272a448ff58bb556feb4371252a02156593303391f5c3281dfaeac"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:268f8e1ca50fc61c0736f3fe9d47891424adf62d96ed30196f30f4bd8216b41f"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f8bf3f0d02935751d8660abda6044821a861f6229f7d359f98bcdcc7e66c39b"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b997ff3b39d4cee9fb025d6c46b0a24bd67595ce5a5b652a97fb3a9d60beb651"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca66676c8ef6557f9b81c5b2b519097817a7c776a6599b8d6fcc3e16edd216fe"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:35d3044cb635ca6b1b2b7b67b3597bd19f34f1753b129eb6d2ae04cf98cd3945"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a93c9e60904cb76e7aefef67afffb8b37c4894f81415ed513db090f29d01101"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-win32.whl", hash = "sha256:579d107102c0725f7c79b4e79f16d3cf4d7c9208f29c66b064fa1fd4641d5155"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-win_amd64.whl", hash = "sha256:953b3780765c8846866faf891ee4290f6a41a6dacf4fbcd3926f78c9de412ca6"}, + {file = "rapidfuzz-3.9.7-cp312-cp312-win_arm64.whl", hash = "sha256:7c20c1474b068c4bd45bf2fd0ad548df284f74e9a14a68b06746c56e3aa8eb70"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fde81b1da9a947f931711febe2e2bee694e891f6d3e6aa6bc02c1884702aea19"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47e92c155a14f44511ea8ebcc6bc1535a1fe8d0a7d67ad3cc47ba61606df7bcf"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8772b745668260c5c4d069c678bbaa68812e6c69830f3771eaad521af7bc17f8"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:578302828dd97ee2ba507d2f71d62164e28d2fc7bc73aad0d2d1d2afc021a5d5"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc3e6081069eea61593f1d6839029da53d00c8c9b205c5534853eaa3f031085c"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0b1c2d504eddf97bc0f2eba422c8915576dbf025062ceaca2d68aecd66324ad9"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb76e5a21034f0307c51c5a2fc08856f698c53a4c593b17d291f7d6e9d09ca3"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d4ba2318ef670ce505f42881a5d2af70f948124646947341a3c6ccb33cd70369"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:057bb03f39e285047d7e9412e01ecf31bb2d42b9466a5409d715d587460dd59b"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a8feac9006d5c9758438906f093befffc4290de75663dbb2098461df7c7d28dd"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:95b8292383e717e10455f2c917df45032b611141e43d1adf70f71b1566136b11"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e9fbf659537d246086d0297628b3795dc3e4a384101ecc01e5791c827b8d7345"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-win32.whl", hash = "sha256:1dc516ac6d32027be2b0196bedf6d977ac26debd09ca182376322ad620460feb"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-win_amd64.whl", hash = "sha256:b4f86e09d3064dca0b014cd48688964036a904a2d28048f00c8f4640796d06a8"}, + {file = "rapidfuzz-3.9.7-cp313-cp313-win_arm64.whl", hash = "sha256:19c64d8ddb2940b42a4567b23f1681af77f50a5ff6c9b8e85daba079c210716e"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fbda3dd68d8b28ccb20ffb6f756fefd9b5ba570a772bedd7643ed441f5793308"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2379e0b2578ad3ac7004f223251550f08bca873ff76c169b09410ec562ad78d8"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d1eff95362f993b0276fd3839aee48625b09aac8938bb0c23b40d219cba5dc5"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd9360e30041690912525a210e48a897b49b230768cc8af1c702e5395690464f"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a93cd834b3c315ab437f0565ee3a2f42dd33768dc885ccbabf9710b131cf70d2"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff196996240db7075f62c7bc4506f40a3c80cd4ae3ab0e79ac6892283a90859"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948dcee7aaa1cd14358b2a7ef08bf0be42bf89049c3a906669874a715fc2c937"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95751f505a301af1aaf086c19f34536056d6c8efa91b2240de532a3db57b543"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:90db86fa196eecf96cb6db09f1083912ea945c50c57188039392d810d0b784e1"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:3171653212218a162540a3c8eb8ae7d3dcc8548540b69eaecaf3b47c14d89c90"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:36dd6e820379c37a1ffefc8a52b648758e867cd9d78ee5b5dc0c9a6a10145378"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:7b702de95666a1f7d5c6b47eacadfe2d2794af3742d63d2134767d13e5d1c713"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-win32.whl", hash = "sha256:9030e7238c0df51aed5c9c5ed8eee2bdd47a2ae788e562c1454af2851c3d1906"}, + {file = "rapidfuzz-3.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:f847fb0fbfb72482b1c05c59cbb275c58a55b73708a7f77a83f8035ee3c86497"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:97f2ce529d2a70a60c290f6ab269a2bbf1d3b47b9724dccc84339b85f7afb044"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e2957fdad10bb83b1982b02deb3604a3f6911a5e545f518b59c741086f92d152"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d5262383634626eb45c536017204b8163a03bc43bda880cf1bdd7885db9a163"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:364587827d7cbd41afa0782adc2d2d19e3f07d355b0750a02a8e33ad27a9c368"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecc24af7f905f3d6efb371a01680116ffea8d64e266618fb9ad1602a9b4f7934"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dc86aa6b29d174713c5f4caac35ffb7f232e3e649113e8d13812b35ab078228"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3dcfbe7266e74a707173a12a7b355a531f2dcfbdb32f09468e664330da14874"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b23806fbdd6b510ba9ac93bb72d503066263b0fba44b71b835be9f063a84025f"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5551d68264c1bb6943f542da83a4dc8940ede52c5847ef158698799cc28d14f5"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:13d8675a1fa7e2b19650ca7ef9a6ec01391d4bb12ab9e0793e8eb024538b4a34"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9b6a5de507b9be6de688dae40143b656f7a93b10995fb8bd90deb555e7875c60"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:111a20a3c090cf244d9406e60500b6c34b2375ba3a5009e2b38fd806fe38e337"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-win32.whl", hash = "sha256:22589c0b8ccc6c391ce7f776c93a8c92c96ab8d34e1a19f1bd2b12a235332632"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:6f83221db5755b8f34222e40607d87f1176a8d5d4dbda4a55a0f0b67d588a69c"}, + {file = "rapidfuzz-3.9.7-cp39-cp39-win_arm64.whl", hash = "sha256:3665b92e788578c3bb334bd5b5fa7ee1a84bafd68be438e3110861d1578c63a0"}, + {file = "rapidfuzz-3.9.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d7df9c2194c7ec930b33c991c55dbd0c10951bd25800c0b7a7b571994ebbced5"}, + {file = "rapidfuzz-3.9.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:68bd888eafd07b09585dcc8bc2716c5ecdb7eed62827470664d25588982b2873"}, + {file = "rapidfuzz-3.9.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1230e0f9026851a6a432beaa0ce575dda7b39fe689b576f99a0704fbb81fc9c"}, + {file = "rapidfuzz-3.9.7-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3b36e1c61b796ae1777f3e9e11fd39898b09d351c9384baf6e3b7e6191d8ced"}, + {file = "rapidfuzz-3.9.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dba13d86806fcf3fe9c9919f58575e0090eadfb89c058bde02bcc7ab24e4548"}, + {file = "rapidfuzz-3.9.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1f1a33e84056b7892c721d84475d3bde49a145126bc4c6efe0d6d0d59cb31c29"}, + {file = "rapidfuzz-3.9.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3492c7a42b7fa9f0051d7fcce9893e95ed91c97c9ec7fb64346f3e070dd318ed"}, + {file = "rapidfuzz-3.9.7-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:ece45eb2af8b00f90d10f7419322e8804bd42fb1129026f9bfe712c37508b514"}, + {file = "rapidfuzz-3.9.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcd14cf4876f04b488f6e54a7abd3e9b31db5f5a6aba0ce90659917aaa8c088"}, + {file = "rapidfuzz-3.9.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:521c58c72ed8a612b25cda378ff10dee17e6deb4ee99a070b723519a345527b9"}, + {file = "rapidfuzz-3.9.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18669bb6cdf7d40738526d37e550df09ba065b5a7560f3d802287988b6cb63cf"}, + {file = "rapidfuzz-3.9.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7abe2dbae81120a64bb4f8d3fcafe9122f328c9f86d7f327f174187a5af4ed86"}, + {file = "rapidfuzz-3.9.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a3c0783910911f4f24655826d007c9f4360f08107410952c01ee3df98c713eb2"}, + {file = "rapidfuzz-3.9.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:03126f9a040ff21d2a110610bfd6b93b79377ce8b4121edcb791d61b7df6eec5"}, + {file = "rapidfuzz-3.9.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:591908240f4085e2ade5b685c6e8346e2ed44932cffeaac2fb32ddac95b55c7f"}, + {file = "rapidfuzz-3.9.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9012d86c6397edbc9da4ac0132de7f8ee9d6ce857f4194d5684c4ddbcdd1c5c"}, + {file = "rapidfuzz-3.9.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df596ddd3db38aa513d4c0995611267b3946e7cbe5a8761b50e9306dfec720ee"}, + {file = "rapidfuzz-3.9.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3ed5adb752f4308fcc8f4fb6f8eb7aa4082f9d12676fda0a74fa5564242a8107"}, + {file = "rapidfuzz-3.9.7.tar.gz", hash = "sha256:f1c7296534c1afb6f495aa95871f14ccdc197c6db42965854e483100df313030"}, ] [package.extras] @@ -4341,90 +4393,105 @@ full = ["numpy"] [[package]] name = "regex" -version = "2024.5.15" +version = "2024.9.11" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" files = [ - {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"}, - {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"}, - {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"}, - {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"}, - {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"}, - {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"}, - {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"}, - {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"}, - {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"}, - {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"}, - {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014"}, - {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e"}, - {file = "regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80"}, - {file = "regex-2024.5.15-cp312-cp312-win32.whl", hash = "sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe"}, - {file = "regex-2024.5.15-cp312-cp312-win_amd64.whl", hash = "sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2"}, - {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835"}, - {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850"}, - {file = "regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741"}, - {file = "regex-2024.5.15-cp38-cp38-win32.whl", hash = "sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9"}, - {file = "regex-2024.5.15-cp38-cp38-win_amd64.whl", hash = "sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569"}, - {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"}, - {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"}, - {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"}, - {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"}, - {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"}, - {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, ] [[package]] @@ -4468,13 +4535,13 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "restrictedpython" -version = "7.2a1.dev0" +version = "7.2" description = "RestrictedPython is a defined subset of the Python language which allows to provide a program input into a trusted environment." optional = false -python-versions = ">=3.7, <3.14" +python-versions = "<3.13,>=3.7" files = [ - {file = "RestrictedPython-7.2a1.dev0-py3-none-any.whl", hash = "sha256:2e683c8d96be63b2e07d8f65051b6c4bcefd07bf06d2b91da3330aa60d7df756"}, - {file = "RestrictedPython-7.2a1.dev0.tar.gz", hash = "sha256:d489616a4bf4cb056a104a04e80e18f3747f3ca8598ec57f973c4381438e8385"}, + {file = "RestrictedPython-7.2-py3-none-any.whl", hash = "sha256:139cb41da6e57521745a566d05825f7a09e6a884f7fa922568cff0a70b84ce6b"}, + {file = "RestrictedPython-7.2.tar.gz", hash = "sha256:4d1d30f709a6621ca7c4236f08b67b732a651c8099145f137078c7dd4bed3d21"}, ] [package.extras] @@ -4483,13 +4550,13 @@ test = ["pytest", "pytest-mock"] [[package]] name = "rich" -version = "13.7.1" +version = "13.8.1" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, - {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, + {file = "rich-13.8.1-py3-none-any.whl", hash = "sha256:1760a3c0848469b97b558fc61c85233e3dafb69c7a071b4d60c38099d3cd4c06"}, + {file = "rich-13.8.1.tar.gz", hash = "sha256:8260cda28e3db6bf04d2d1ef4dbc03ba80a824c88b0e7668a0f23126a424844a"}, ] [package.dependencies] @@ -4529,22 +4596,23 @@ pyasn1 = ">=0.1.3" [[package]] name = "runpod" -version = "1.6.2" +version = "1.7.0" description = "🐍 | Python library for RunPod API and serverless worker SDK." optional = false python-versions = ">=3.8" files = [ - {file = "runpod-1.6.2-py3-none-any.whl", hash = "sha256:4b25e6f825630fd24588ea6cb1adb02cb20dda1760830ec0c17f3408e5ed3a43"}, - {file = "runpod-1.6.2.tar.gz", hash = "sha256:bcedff5111f9df1adce8fd50265b1bfe781c172290eb5b0bdc67108f137fe599"}, + {file = "runpod-1.7.0-py3-none-any.whl", hash = "sha256:1d2580fa2c6906263c686824ce25eac3edfeee6928b4e6b0690eb2a74ebb5999"}, + {file = "runpod-1.7.0.tar.gz", hash = "sha256:f340f57fcf803ed2126ecddcaa3ef51dec3d0eef63f3158852f6342123e480d6"}, ] [package.dependencies] -aiohttp = {version = "3.9.3", extras = ["speedups"]} +aiohttp = {version = ">=3.9.3", extras = ["speedups"]} aiohttp-retry = ">=2.8.3" backoff = ">=2.2.1" boto3 = ">=1.26.165" click = ">=8.1.7" colorama = ">=0.2.5,<0.4.7" +cryptography = "<43.0.0" fastapi = {version = ">=0.94.0", extras = ["all"]} inquirerpy = "0.3.4" paramiko = ">=3.3.1" @@ -4558,7 +4626,7 @@ urllib3 = ">=1.26.6" watchdog = ">=3.0.0" [package.extras] -test = ["asynctest", "nest-asyncio", "pylint", "pytest", "pytest-asyncio", "pytest-cov", "pytest-timeout"] +test = ["asynctest", "nest-asyncio", "pylint (==3.2.5)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-timeout", "pytest-watch"] [[package]] name = "s3transfer" @@ -4579,111 +4647,121 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "safetensors" -version = "0.4.3" +version = "0.4.5" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "safetensors-0.4.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:dcf5705cab159ce0130cd56057f5f3425023c407e170bca60b4868048bae64fd"}, - {file = "safetensors-0.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bb4f8c5d0358a31e9a08daeebb68f5e161cdd4018855426d3f0c23bb51087055"}, - {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70a5319ef409e7f88686a46607cbc3c428271069d8b770076feaf913664a07ac"}, - {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fb9c65bd82f9ef3ce4970dc19ee86be5f6f93d032159acf35e663c6bea02b237"}, - {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edb5698a7bc282089f64c96c477846950358a46ede85a1c040e0230344fdde10"}, - {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efcc860be094b8d19ac61b452ec635c7acb9afa77beb218b1d7784c6d41fe8ad"}, - {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d88b33980222085dd6001ae2cad87c6068e0991d4f5ccf44975d216db3b57376"}, - {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5fc6775529fb9f0ce2266edd3e5d3f10aab068e49f765e11f6f2a63b5367021d"}, - {file = "safetensors-0.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9c6ad011c1b4e3acff058d6b090f1da8e55a332fbf84695cf3100c649cc452d1"}, - {file = "safetensors-0.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c496c5401c1b9c46d41a7688e8ff5b0310a3b9bae31ce0f0ae870e1ea2b8caf"}, - {file = "safetensors-0.4.3-cp310-none-win32.whl", hash = "sha256:38e2a8666178224a51cca61d3cb4c88704f696eac8f72a49a598a93bbd8a4af9"}, - {file = "safetensors-0.4.3-cp310-none-win_amd64.whl", hash = "sha256:393e6e391467d1b2b829c77e47d726f3b9b93630e6a045b1d1fca67dc78bf632"}, - {file = "safetensors-0.4.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:22f3b5d65e440cec0de8edaa672efa888030802e11c09b3d6203bff60ebff05a"}, - {file = "safetensors-0.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c4fa560ebd4522adddb71dcd25d09bf211b5634003f015a4b815b7647d62ebe"}, - {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9afd5358719f1b2cf425fad638fc3c887997d6782da317096877e5b15b2ce93"}, - {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d8c5093206ef4b198600ae484230402af6713dab1bd5b8e231905d754022bec7"}, - {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0b2104df1579d6ba9052c0ae0e3137c9698b2d85b0645507e6fd1813b70931a"}, - {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8cf18888606dad030455d18f6c381720e57fc6a4170ee1966adb7ebc98d4d6a3"}, - {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bf4f9d6323d9f86eef5567eabd88f070691cf031d4c0df27a40d3b4aaee755b"}, - {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:585c9ae13a205807b63bef8a37994f30c917ff800ab8a1ca9c9b5d73024f97ee"}, - {file = "safetensors-0.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faefeb3b81bdfb4e5a55b9bbdf3d8d8753f65506e1d67d03f5c851a6c87150e9"}, - {file = "safetensors-0.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:befdf0167ad626f22f6aac6163477fcefa342224a22f11fdd05abb3995c1783c"}, - {file = "safetensors-0.4.3-cp311-none-win32.whl", hash = "sha256:a7cef55929dcbef24af3eb40bedec35d82c3c2fa46338bb13ecf3c5720af8a61"}, - {file = "safetensors-0.4.3-cp311-none-win_amd64.whl", hash = "sha256:840b7ac0eff5633e1d053cc9db12fdf56b566e9403b4950b2dc85393d9b88d67"}, - {file = "safetensors-0.4.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:22d21760dc6ebae42e9c058d75aa9907d9f35e38f896e3c69ba0e7b213033856"}, - {file = "safetensors-0.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d22c1a10dff3f64d0d68abb8298a3fd88ccff79f408a3e15b3e7f637ef5c980"}, - {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1648568667f820b8c48317c7006221dc40aced1869908c187f493838a1362bc"}, - {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:446e9fe52c051aeab12aac63d1017e0f68a02a92a027b901c4f8e931b24e5397"}, - {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fef5d70683643618244a4f5221053567ca3e77c2531e42ad48ae05fae909f542"}, - {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a1f4430cc0c9d6afa01214a4b3919d0a029637df8e09675ceef1ca3f0dfa0df"}, - {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d603846a8585b9432a0fd415db1d4c57c0f860eb4aea21f92559ff9902bae4d"}, - {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a844cdb5d7cbc22f5f16c7e2a0271170750763c4db08381b7f696dbd2c78a361"}, - {file = "safetensors-0.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:88887f69f7a00cf02b954cdc3034ffb383b2303bc0ab481d4716e2da51ddc10e"}, - {file = "safetensors-0.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ee463219d9ec6c2be1d331ab13a8e0cd50d2f32240a81d498266d77d07b7e71e"}, - {file = "safetensors-0.4.3-cp312-none-win32.whl", hash = "sha256:d0dd4a1db09db2dba0f94d15addc7e7cd3a7b0d393aa4c7518c39ae7374623c3"}, - {file = "safetensors-0.4.3-cp312-none-win_amd64.whl", hash = "sha256:d14d30c25897b2bf19b6fb5ff7e26cc40006ad53fd4a88244fdf26517d852dd7"}, - {file = "safetensors-0.4.3-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d1456f814655b224d4bf6e7915c51ce74e389b413be791203092b7ff78c936dd"}, - {file = "safetensors-0.4.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:455d538aa1aae4a8b279344a08136d3f16334247907b18a5c3c7fa88ef0d3c46"}, - {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf476bca34e1340ee3294ef13e2c625833f83d096cfdf69a5342475602004f95"}, - {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:02ef3a24face643456020536591fbd3c717c5abaa2737ec428ccbbc86dffa7a4"}, - {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7de32d0d34b6623bb56ca278f90db081f85fb9c5d327e3c18fd23ac64f465768"}, - {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a0deb16a1d3ea90c244ceb42d2c6c276059616be21a19ac7101aa97da448faf"}, - {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c59d51f182c729f47e841510b70b967b0752039f79f1de23bcdd86462a9b09ee"}, - {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1f598b713cc1a4eb31d3b3203557ac308acf21c8f41104cdd74bf640c6e538e3"}, - {file = "safetensors-0.4.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5757e4688f20df083e233b47de43845d1adb7e17b6cf7da5f8444416fc53828d"}, - {file = "safetensors-0.4.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fe746d03ed8d193674a26105e4f0fe6c726f5bb602ffc695b409eaf02f04763d"}, - {file = "safetensors-0.4.3-cp37-none-win32.whl", hash = "sha256:0d5ffc6a80f715c30af253e0e288ad1cd97a3d0086c9c87995e5093ebc075e50"}, - {file = "safetensors-0.4.3-cp37-none-win_amd64.whl", hash = "sha256:a11c374eb63a9c16c5ed146457241182f310902bd2a9c18255781bb832b6748b"}, - {file = "safetensors-0.4.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1e31be7945f66be23f4ec1682bb47faa3df34cb89fc68527de6554d3c4258a4"}, - {file = "safetensors-0.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:03a4447c784917c9bf01d8f2ac5080bc15c41692202cd5f406afba16629e84d6"}, - {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d244bcafeb1bc06d47cfee71727e775bca88a8efda77a13e7306aae3813fa7e4"}, - {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53c4879b9c6bd7cd25d114ee0ef95420e2812e676314300624594940a8d6a91f"}, - {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74707624b81f1b7f2b93f5619d4a9f00934d5948005a03f2c1845ffbfff42212"}, - {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d52c958dc210265157573f81d34adf54e255bc2b59ded6218500c9b15a750eb"}, - {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f9568f380f513a60139971169c4a358b8731509cc19112369902eddb33faa4d"}, - {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d9cd8e1560dfc514b6d7859247dc6a86ad2f83151a62c577428d5102d872721"}, - {file = "safetensors-0.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:89f9f17b0dacb913ed87d57afbc8aad85ea42c1085bd5de2f20d83d13e9fc4b2"}, - {file = "safetensors-0.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1139eb436fd201c133d03c81209d39ac57e129f5e74e34bb9ab60f8d9b726270"}, - {file = "safetensors-0.4.3-cp38-none-win32.whl", hash = "sha256:d9c289f140a9ae4853fc2236a2ffc9a9f2d5eae0cb673167e0f1b8c18c0961ac"}, - {file = "safetensors-0.4.3-cp38-none-win_amd64.whl", hash = "sha256:622afd28968ef3e9786562d352659a37de4481a4070f4ebac883f98c5836563e"}, - {file = "safetensors-0.4.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8651c7299cbd8b4161a36cd6a322fa07d39cd23535b144d02f1c1972d0c62f3c"}, - {file = "safetensors-0.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e375d975159ac534c7161269de24ddcd490df2157b55c1a6eeace6cbb56903f0"}, - {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:084fc436e317f83f7071fc6a62ca1c513b2103db325cd09952914b50f51cf78f"}, - {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:41a727a7f5e6ad9f1db6951adee21bbdadc632363d79dc434876369a17de6ad6"}, - {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7dbbde64b6c534548696808a0e01276d28ea5773bc9a2dfb97a88cd3dffe3df"}, - {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbae3b4b9d997971431c346edbfe6e41e98424a097860ee872721e176040a893"}, - {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01e4b22e3284cd866edeabe4f4d896229495da457229408d2e1e4810c5187121"}, - {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dd37306546b58d3043eb044c8103a02792cc024b51d1dd16bd3dd1f334cb3ed"}, - {file = "safetensors-0.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8815b5e1dac85fc534a97fd339e12404db557878c090f90442247e87c8aeaea"}, - {file = "safetensors-0.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e011cc162503c19f4b1fd63dfcddf73739c7a243a17dac09b78e57a00983ab35"}, - {file = "safetensors-0.4.3-cp39-none-win32.whl", hash = "sha256:01feb3089e5932d7e662eda77c3ecc389f97c0883c4a12b5cfdc32b589a811c3"}, - {file = "safetensors-0.4.3-cp39-none-win_amd64.whl", hash = "sha256:3f9cdca09052f585e62328c1c2923c70f46814715c795be65f0b93f57ec98a02"}, - {file = "safetensors-0.4.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1b89381517891a7bb7d1405d828b2bf5d75528299f8231e9346b8eba092227f9"}, - {file = "safetensors-0.4.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:cd6fff9e56df398abc5866b19a32124815b656613c1c5ec0f9350906fd798aac"}, - {file = "safetensors-0.4.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:840caf38d86aa7014fe37ade5d0d84e23dcfbc798b8078015831996ecbc206a3"}, - {file = "safetensors-0.4.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9650713b2cfa9537a2baf7dd9fee458b24a0aaaa6cafcea8bdd5fb2b8efdc34"}, - {file = "safetensors-0.4.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e4119532cd10dba04b423e0f86aecb96cfa5a602238c0aa012f70c3a40c44b50"}, - {file = "safetensors-0.4.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e066e8861eef6387b7c772344d1fe1f9a72800e04ee9a54239d460c400c72aab"}, - {file = "safetensors-0.4.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:90964917f5b0fa0fa07e9a051fbef100250c04d150b7026ccbf87a34a54012e0"}, - {file = "safetensors-0.4.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c41e1893d1206aa7054029681778d9a58b3529d4c807002c156d58426c225173"}, - {file = "safetensors-0.4.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae7613a119a71a497d012ccc83775c308b9c1dab454806291427f84397d852fd"}, - {file = "safetensors-0.4.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9bac020faba7f5dc481e881b14b6425265feabb5bfc552551d21189c0eddc3"}, - {file = "safetensors-0.4.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:420a98f593ff9930f5822560d14c395ccbc57342ddff3b463bc0b3d6b1951550"}, - {file = "safetensors-0.4.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f5e6883af9a68c0028f70a4c19d5a6ab6238a379be36ad300a22318316c00cb0"}, - {file = "safetensors-0.4.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:cdd0a3b5da66e7f377474599814dbf5cbf135ff059cc73694de129b58a5e8a2c"}, - {file = "safetensors-0.4.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9bfb92f82574d9e58401d79c70c716985dc049b635fef6eecbb024c79b2c46ad"}, - {file = "safetensors-0.4.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3615a96dd2dcc30eb66d82bc76cda2565f4f7bfa89fcb0e31ba3cea8a1a9ecbb"}, - {file = "safetensors-0.4.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:868ad1b6fc41209ab6bd12f63923e8baeb1a086814cb2e81a65ed3d497e0cf8f"}, - {file = "safetensors-0.4.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7ffba80aa49bd09195145a7fd233a7781173b422eeb995096f2b30591639517"}, - {file = "safetensors-0.4.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0acbe31340ab150423347e5b9cc595867d814244ac14218932a5cf1dd38eb39"}, - {file = "safetensors-0.4.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19bbdf95de2cf64f25cd614c5236c8b06eb2cfa47cbf64311f4b5d80224623a3"}, - {file = "safetensors-0.4.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b852e47eb08475c2c1bd8131207b405793bfc20d6f45aff893d3baaad449ed14"}, - {file = "safetensors-0.4.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5d07cbca5b99babb692d76d8151bec46f461f8ad8daafbfd96b2fca40cadae65"}, - {file = "safetensors-0.4.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1ab6527a20586d94291c96e00a668fa03f86189b8a9defa2cdd34a1a01acc7d5"}, - {file = "safetensors-0.4.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02318f01e332cc23ffb4f6716e05a492c5f18b1d13e343c49265149396284a44"}, - {file = "safetensors-0.4.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec4b52ce9a396260eb9731eb6aea41a7320de22ed73a1042c2230af0212758ce"}, - {file = "safetensors-0.4.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:018b691383026a2436a22b648873ed11444a364324e7088b99cd2503dd828400"}, - {file = "safetensors-0.4.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:309b10dbcab63269ecbf0e2ca10ce59223bb756ca5d431ce9c9eeabd446569da"}, - {file = "safetensors-0.4.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b277482120df46e27a58082df06a15aebda4481e30a1c21eefd0921ae7e03f65"}, - {file = "safetensors-0.4.3.tar.gz", hash = "sha256:2f85fc50c4e07a21e95c24e07460fe6f7e2859d0ce88092838352b798ce711c2"}, + {file = "safetensors-0.4.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a63eaccd22243c67e4f2b1c3e258b257effc4acd78f3b9d397edc8cf8f1298a7"}, + {file = "safetensors-0.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:23fc9b4ec7b602915cbb4ec1a7c1ad96d2743c322f20ab709e2c35d1b66dad27"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6885016f34bef80ea1085b7e99b3c1f92cb1be78a49839203060f67b40aee761"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:133620f443450429322f238fda74d512c4008621227fccf2f8cf4a76206fea7c"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4fb3e0609ec12d2a77e882f07cced530b8262027f64b75d399f1504ffec0ba56"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0f1dd769f064adc33831f5e97ad07babbd728427f98e3e1db6902e369122737"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6d156bdb26732feada84f9388a9f135528c1ef5b05fae153da365ad4319c4c5"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e347d77e2c77eb7624400ccd09bed69d35c0332f417ce8c048d404a096c593b"}, + {file = "safetensors-0.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9f556eea3aec1d3d955403159fe2123ddd68e880f83954ee9b4a3f2e15e716b6"}, + {file = "safetensors-0.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9483f42be3b6bc8ff77dd67302de8ae411c4db39f7224dec66b0eb95822e4163"}, + {file = "safetensors-0.4.5-cp310-none-win32.whl", hash = "sha256:7389129c03fadd1ccc37fd1ebbc773f2b031483b04700923c3511d2a939252cc"}, + {file = "safetensors-0.4.5-cp310-none-win_amd64.whl", hash = "sha256:e98ef5524f8b6620c8cdef97220c0b6a5c1cef69852fcd2f174bb96c2bb316b1"}, + {file = "safetensors-0.4.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:21f848d7aebd5954f92538552d6d75f7c1b4500f51664078b5b49720d180e47c"}, + {file = "safetensors-0.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb07000b19d41e35eecef9a454f31a8b4718a185293f0d0b1c4b61d6e4487971"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09dedf7c2fda934ee68143202acff6e9e8eb0ddeeb4cfc24182bef999efa9f42"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:59b77e4b7a708988d84f26de3ebead61ef1659c73dcbc9946c18f3b1786d2688"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d3bc83e14d67adc2e9387e511097f254bd1b43c3020440e708858c684cbac68"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39371fc551c1072976073ab258c3119395294cf49cdc1f8476794627de3130df"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6c19feda32b931cae0acd42748a670bdf56bee6476a046af20181ad3fee4090"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a659467495de201e2f282063808a41170448c78bada1e62707b07a27b05e6943"}, + {file = "safetensors-0.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bad5e4b2476949bcd638a89f71b6916fa9a5cae5c1ae7eede337aca2100435c0"}, + {file = "safetensors-0.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a3a315a6d0054bc6889a17f5668a73f94f7fe55121ff59e0a199e3519c08565f"}, + {file = "safetensors-0.4.5-cp311-none-win32.whl", hash = "sha256:a01e232e6d3d5cf8b1667bc3b657a77bdab73f0743c26c1d3c5dd7ce86bd3a92"}, + {file = "safetensors-0.4.5-cp311-none-win_amd64.whl", hash = "sha256:cbd39cae1ad3e3ef6f63a6f07296b080c951f24cec60188378e43d3713000c04"}, + {file = "safetensors-0.4.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:473300314e026bd1043cef391bb16a8689453363381561b8a3e443870937cc1e"}, + {file = "safetensors-0.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:801183a0f76dc647f51a2d9141ad341f9665602a7899a693207a82fb102cc53e"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1524b54246e422ad6fb6aea1ac71edeeb77666efa67230e1faf6999df9b2e27f"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3139098e3e8b2ad7afbca96d30ad29157b50c90861084e69fcb80dec7430461"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65573dc35be9059770808e276b017256fa30058802c29e1038eb1c00028502ea"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd33da8e9407559f8779c82a0448e2133737f922d71f884da27184549416bfed"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3685ce7ed036f916316b567152482b7e959dc754fcc4a8342333d222e05f407c"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dde2bf390d25f67908278d6f5d59e46211ef98e44108727084d4637ee70ab4f1"}, + {file = "safetensors-0.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7469d70d3de970b1698d47c11ebbf296a308702cbaae7fcb993944751cf985f4"}, + {file = "safetensors-0.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a6ba28118636a130ccbb968bc33d4684c48678695dba2590169d5ab03a45646"}, + {file = "safetensors-0.4.5-cp312-none-win32.whl", hash = "sha256:c859c7ed90b0047f58ee27751c8e56951452ed36a67afee1b0a87847d065eec6"}, + {file = "safetensors-0.4.5-cp312-none-win_amd64.whl", hash = "sha256:b5a8810ad6a6f933fff6c276eae92c1da217b39b4d8b1bc1c0b8af2d270dc532"}, + {file = "safetensors-0.4.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:25e5f8e2e92a74f05b4ca55686234c32aac19927903792b30ee6d7bd5653d54e"}, + {file = "safetensors-0.4.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81efb124b58af39fcd684254c645e35692fea81c51627259cdf6d67ff4458916"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:585f1703a518b437f5103aa9cf70e9bd437cb78eea9c51024329e4fb8a3e3679"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b99fbf72e3faf0b2f5f16e5e3458b93b7d0a83984fe8d5364c60aa169f2da89"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b17b299ca9966ca983ecda1c0791a3f07f9ca6ab5ded8ef3d283fff45f6bcd5f"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76ded72f69209c9780fdb23ea89e56d35c54ae6abcdec67ccb22af8e696e449a"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2783956926303dcfeb1de91a4d1204cd4089ab441e622e7caee0642281109db3"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d94581aab8c6b204def4d7320f07534d6ee34cd4855688004a4354e63b639a35"}, + {file = "safetensors-0.4.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:67e1e7cb8678bb1b37ac48ec0df04faf689e2f4e9e81e566b5c63d9f23748523"}, + {file = "safetensors-0.4.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:dbd280b07e6054ea68b0cb4b16ad9703e7d63cd6890f577cb98acc5354780142"}, + {file = "safetensors-0.4.5-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:77d9b228da8374c7262046a36c1f656ba32a93df6cc51cd4453af932011e77f1"}, + {file = "safetensors-0.4.5-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:500cac01d50b301ab7bb192353317035011c5ceeef0fca652f9f43c000bb7f8d"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75331c0c746f03158ded32465b7d0b0e24c5a22121743662a2393439c43a45cf"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:670e95fe34e0d591d0529e5e59fd9d3d72bc77b1444fcaa14dccda4f36b5a38b"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:098923e2574ff237c517d6e840acada8e5b311cb1fa226019105ed82e9c3b62f"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ca0902d2648775089fa6a0c8fc9e6390c5f8ee576517d33f9261656f851e3f"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f0032bedc869c56f8d26259fe39cd21c5199cd57f2228d817a0e23e8370af25"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4b15f51b4f8f2a512341d9ce3475cacc19c5fdfc5db1f0e19449e75f95c7dc8"}, + {file = "safetensors-0.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f6594d130d0ad933d885c6a7b75c5183cb0e8450f799b80a39eae2b8508955eb"}, + {file = "safetensors-0.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:60c828a27e852ded2c85fc0f87bf1ec20e464c5cd4d56ff0e0711855cc2e17f8"}, + {file = "safetensors-0.4.5-cp37-none-win32.whl", hash = "sha256:6d3de65718b86c3eeaa8b73a9c3d123f9307a96bbd7be9698e21e76a56443af5"}, + {file = "safetensors-0.4.5-cp37-none-win_amd64.whl", hash = "sha256:5a2d68a523a4cefd791156a4174189a4114cf0bf9c50ceb89f261600f3b2b81a"}, + {file = "safetensors-0.4.5-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:e7a97058f96340850da0601a3309f3d29d6191b0702b2da201e54c6e3e44ccf0"}, + {file = "safetensors-0.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:63bfd425e25f5c733f572e2246e08a1c38bd6f2e027d3f7c87e2e43f228d1345"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3664ac565d0e809b0b929dae7ccd74e4d3273cd0c6d1220c6430035befb678e"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:313514b0b9b73ff4ddfb4edd71860696dbe3c1c9dc4d5cc13dbd74da283d2cbf"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31fa33ee326f750a2f2134a6174773c281d9a266ccd000bd4686d8021f1f3dac"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09566792588d77b68abe53754c9f1308fadd35c9f87be939e22c623eaacbed6b"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309aaec9b66cbf07ad3a2e5cb8a03205663324fea024ba391594423d0f00d9fe"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:53946c5813b8f9e26103c5efff4a931cc45d874f45229edd68557ffb35ffb9f8"}, + {file = "safetensors-0.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:868f9df9e99ad1e7f38c52194063a982bc88fedc7d05096f4f8160403aaf4bd6"}, + {file = "safetensors-0.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9cc9449bd0b0bc538bd5e268221f0c5590bc5c14c1934a6ae359d44410dc68c4"}, + {file = "safetensors-0.4.5-cp38-none-win32.whl", hash = "sha256:83c4f13a9e687335c3928f615cd63a37e3f8ef072a3f2a0599fa09f863fb06a2"}, + {file = "safetensors-0.4.5-cp38-none-win_amd64.whl", hash = "sha256:b98d40a2ffa560653f6274e15b27b3544e8e3713a44627ce268f419f35c49478"}, + {file = "safetensors-0.4.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cf727bb1281d66699bef5683b04d98c894a2803442c490a8d45cd365abfbdeb2"}, + {file = "safetensors-0.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96f1d038c827cdc552d97e71f522e1049fef0542be575421f7684756a748e457"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:139fbee92570ecea774e6344fee908907db79646d00b12c535f66bc78bd5ea2c"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c36302c1c69eebb383775a89645a32b9d266878fab619819ce660309d6176c9b"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d641f5b8149ea98deb5ffcf604d764aad1de38a8285f86771ce1abf8e74c4891"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b4db6a61d968de73722b858038c616a1bebd4a86abe2688e46ca0cc2d17558f2"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b75a616e02f21b6f1d5785b20cecbab5e2bd3f6358a90e8925b813d557666ec1"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:788ee7d04cc0e0e7f944c52ff05f52a4415b312f5efd2ee66389fb7685ee030c"}, + {file = "safetensors-0.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:87bc42bd04fd9ca31396d3ca0433db0be1411b6b53ac5a32b7845a85d01ffc2e"}, + {file = "safetensors-0.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4037676c86365a721a8c9510323a51861d703b399b78a6b4486a54a65a975fca"}, + {file = "safetensors-0.4.5-cp39-none-win32.whl", hash = "sha256:1500418454529d0ed5c1564bda376c4ddff43f30fce9517d9bee7bcce5a8ef50"}, + {file = "safetensors-0.4.5-cp39-none-win_amd64.whl", hash = "sha256:9d1a94b9d793ed8fe35ab6d5cea28d540a46559bafc6aae98f30ee0867000cab"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdadf66b5a22ceb645d5435a0be7a0292ce59648ca1d46b352f13cff3ea80410"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d42ffd4c2259f31832cb17ff866c111684c87bd930892a1ba53fed28370c918c"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd8a1f6d2063a92cd04145c7fd9e31a1c7d85fbec20113a14b487563fdbc0597"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:951d2fcf1817f4fb0ef0b48f6696688a4e852a95922a042b3f96aaa67eedc920"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ac85d9a8c1af0e3132371d9f2d134695a06a96993c2e2f0bbe25debb9e3f67a"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e3cec4a29eb7fe8da0b1c7988bc3828183080439dd559f720414450de076fcab"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:21742b391b859e67b26c0b2ac37f52c9c0944a879a25ad2f9f9f3cd61e7fda8f"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7db3006a4915151ce1913652e907cdede299b974641a83fbc092102ac41b644"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f68bf99ea970960a237f416ea394e266e0361895753df06e3e06e6ea7907d98b"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8158938cf3324172df024da511839d373c40fbfaa83e9abf467174b2910d7b4c"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:540ce6c4bf6b58cb0fd93fa5f143bc0ee341c93bb4f9287ccd92cf898cc1b0dd"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bfeaa1a699c6b9ed514bd15e6a91e74738b71125a9292159e3d6b7f0a53d2cde"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:01c8f00da537af711979e1b42a69a8ec9e1d7112f208e0e9b8a35d2c381085ef"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a0dd565f83b30f2ca79b5d35748d0d99dd4b3454f80e03dfb41f0038e3bdf180"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:023b6e5facda76989f4cba95a861b7e656b87e225f61811065d5c501f78cdb3f"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9633b663393d5796f0b60249549371e392b75a0b955c07e9c6f8708a87fc841f"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78dd8adfb48716233c45f676d6e48534d34b4bceb50162c13d1f0bdf6f78590a"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e8deb16c4321d61ae72533b8451ec4a9af8656d1c61ff81aa49f966406e4b68"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:52452fa5999dc50c4decaf0c53aa28371f7f1e0fe5c2dd9129059fbe1e1599c7"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d5f23198821e227cfc52d50fa989813513db381255c6d100927b012f0cfec63d"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f4beb84b6073b1247a773141a6331117e35d07134b3bb0383003f39971d414bb"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:68814d599d25ed2fdd045ed54d370d1d03cf35e02dce56de44c651f828fb9b7b"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b6453c54c57c1781292c46593f8a37254b8b99004c68d6c3ce229688931a22"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adaa9c6dead67e2dd90d634f89131e43162012479d86e25618e821a03d1eb1dc"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73e7d408e9012cd17511b382b43547850969c7979efc2bc353f317abaf23c84c"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:775409ce0fcc58b10773fdb4221ed1eb007de10fe7adbdf8f5e8a56096b6f0bc"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:834001bed193e4440c4a3950a31059523ee5090605c907c66808664c932b549c"}, + {file = "safetensors-0.4.5.tar.gz", hash = "sha256:d73de19682deabb02524b3d5d1f8b3aaba94c72f1bbfc7911b9b9d5d391c0310"}, ] [package.extras] @@ -4701,32 +4779,32 @@ torch = ["safetensors[numpy]", "torch (>=1.10)"] [[package]] name = "scikit-learn" -version = "1.5.1" +version = "1.5.2" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" files = [ - {file = "scikit_learn-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:781586c414f8cc58e71da4f3d7af311e0505a683e112f2f62919e3019abd3745"}, - {file = "scikit_learn-1.5.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5b213bc29cc30a89a3130393b0e39c847a15d769d6e59539cd86b75d276b1a7"}, - {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff4ba34c2abff5ec59c803ed1d97d61b036f659a17f55be102679e88f926fac"}, - {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:161808750c267b77b4a9603cf9c93579c7a74ba8486b1336034c2f1579546d21"}, - {file = "scikit_learn-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:10e49170691514a94bb2e03787aa921b82dbc507a4ea1f20fd95557862c98dc1"}, - {file = "scikit_learn-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:154297ee43c0b83af12464adeab378dee2d0a700ccd03979e2b821e7dd7cc1c2"}, - {file = "scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b5e865e9bd59396220de49cb4a57b17016256637c61b4c5cc81aaf16bc123bbe"}, - {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:909144d50f367a513cee6090873ae582dba019cb3fca063b38054fa42704c3a4"}, - {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b6f74b2c880276e365fe84fe4f1befd6a774f016339c65655eaff12e10cbf"}, - {file = "scikit_learn-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a07f90846313a7639af6a019d849ff72baadfa4c74c778821ae0fad07b7275b"}, - {file = "scikit_learn-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5944ce1faada31c55fb2ba20a5346b88e36811aab504ccafb9f0339e9f780395"}, - {file = "scikit_learn-1.5.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0828673c5b520e879f2af6a9e99eee0eefea69a2188be1ca68a6121b809055c1"}, - {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508907e5f81390e16d754e8815f7497e52139162fd69c4fdbd2dfa5d6cc88915"}, - {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97625f217c5c0c5d0505fa2af28ae424bd37949bb2f16ace3ff5f2f81fb4498b"}, - {file = "scikit_learn-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:da3f404e9e284d2b0a157e1b56b6566a34eb2798205cba35a211df3296ab7a74"}, - {file = "scikit_learn-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88e0672c7ac21eb149d409c74cc29f1d611d5158175846e7a9c2427bd12b3956"}, - {file = "scikit_learn-1.5.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7b073a27797a283187a4ef4ee149959defc350b46cbf63a84d8514fe16b69855"}, - {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b59e3e62d2be870e5c74af4e793293753565c7383ae82943b83383fdcf5cc5c1"}, - {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd8d3a19d4bd6dc5a7d4f358c8c3a60934dc058f363c34c0ac1e9e12a31421d"}, - {file = "scikit_learn-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:5f57428de0c900a98389c4a433d4a3cf89de979b3aa24d1c1d251802aa15e44d"}, - {file = "scikit_learn-1.5.1.tar.gz", hash = "sha256:0ea5d40c0e3951df445721927448755d3fe1d80833b0b7308ebff5d2a45e6414"}, + {file = "scikit_learn-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:299406827fb9a4f862626d0fe6c122f5f87f8910b86fe5daa4c32dcd742139b6"}, + {file = "scikit_learn-1.5.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2d4cad1119c77930b235579ad0dc25e65c917e756fe80cab96aa3b9428bd3fb0"}, + {file = "scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c412ccc2ad9bf3755915e3908e677b367ebc8d010acbb3f182814524f2e5540"}, + {file = "scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a686885a4b3818d9e62904d91b57fa757fc2bed3e465c8b177be652f4dd37c8"}, + {file = "scikit_learn-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:c15b1ca23d7c5f33cc2cb0a0d6aaacf893792271cddff0edbd6a40e8319bc113"}, + {file = "scikit_learn-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03b6158efa3faaf1feea3faa884c840ebd61b6484167c711548fce208ea09445"}, + {file = "scikit_learn-1.5.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1ff45e26928d3b4eb767a8f14a9a6efbf1cbff7c05d1fb0f95f211a89fd4f5de"}, + {file = "scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f763897fe92d0e903aa4847b0aec0e68cadfff77e8a0687cabd946c89d17e675"}, + {file = "scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8b0ccd4a902836493e026c03256e8b206656f91fbcc4fde28c57a5b752561f1"}, + {file = "scikit_learn-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:6c16d84a0d45e4894832b3c4d0bf73050939e21b99b01b6fd59cbb0cf39163b6"}, + {file = "scikit_learn-1.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f932a02c3f4956dfb981391ab24bda1dbd90fe3d628e4b42caef3e041c67707a"}, + {file = "scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3b923d119d65b7bd555c73be5423bf06c0105678ce7e1f558cb4b40b0a5502b1"}, + {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, + {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, + {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, + {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, + {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, + {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca64b3089a6d9b9363cd3546f8978229dcbb737aceb2c12144ee3f70f95684b7"}, + {file = "scikit_learn-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:3bed4909ba187aca80580fe2ef370d9180dcf18e621a27c4cf2ef10d279a7efe"}, + {file = "scikit_learn-1.5.2.tar.gz", hash = "sha256:b4237ed7b3fdd0a4882792e68ef2545d5baa50aca3bb45aa7df468138ad8f94d"}, ] [package.dependencies] @@ -4738,44 +4816,52 @@ threadpoolctl = ">=3.1.0" [package.extras] benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-design (>=0.6.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] maintenance = ["conda-lock (==2.5.6)"] -tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] +tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" -version = "1.14.0" +version = "1.14.1" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "scipy-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7e911933d54ead4d557c02402710c2396529540b81dd554fc1ba270eb7308484"}, - {file = "scipy-1.14.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:687af0a35462402dd851726295c1a5ae5f987bd6e9026f52e9505994e2f84ef6"}, - {file = "scipy-1.14.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:07e179dc0205a50721022344fb85074f772eadbda1e1b3eecdc483f8033709b7"}, - {file = "scipy-1.14.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a9c9a9b226d9a21e0a208bdb024c3982932e43811b62d202aaf1bb59af264b1"}, - {file = "scipy-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076c27284c768b84a45dcf2e914d4000aac537da74236a0d45d82c6fa4b7b3c0"}, - {file = "scipy-1.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42470ea0195336df319741e230626b6225a740fd9dce9642ca13e98f667047c0"}, - {file = "scipy-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:176c6f0d0470a32f1b2efaf40c3d37a24876cebf447498a4cefb947a79c21e9d"}, - {file = "scipy-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:ad36af9626d27a4326c8e884917b7ec321d8a1841cd6dacc67d2a9e90c2f0359"}, - {file = "scipy-1.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6d056a8709ccda6cf36cdd2eac597d13bc03dba38360f418560a93050c76a16e"}, - {file = "scipy-1.14.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f0a50da861a7ec4573b7c716b2ebdcdf142b66b756a0d392c236ae568b3a93fb"}, - {file = "scipy-1.14.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:94c164a9e2498e68308e6e148646e486d979f7fcdb8b4cf34b5441894bdb9caf"}, - {file = "scipy-1.14.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a7d46c3e0aea5c064e734c3eac5cf9eb1f8c4ceee756262f2c7327c4c2691c86"}, - {file = "scipy-1.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eee2989868e274aae26125345584254d97c56194c072ed96cb433f32f692ed8"}, - {file = "scipy-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3154691b9f7ed73778d746da2df67a19d046a6c8087c8b385bc4cdb2cfca74"}, - {file = "scipy-1.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c40003d880f39c11c1edbae8144e3813904b10514cd3d3d00c277ae996488cdb"}, - {file = "scipy-1.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:5b083c8940028bb7e0b4172acafda6df762da1927b9091f9611b0bcd8676f2bc"}, - {file = "scipy-1.14.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff2438ea1330e06e53c424893ec0072640dac00f29c6a43a575cbae4c99b2b9"}, - {file = "scipy-1.14.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bbc0471b5f22c11c389075d091d3885693fd3f5e9a54ce051b46308bc787e5d4"}, - {file = "scipy-1.14.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:64b2ff514a98cf2bb734a9f90d32dc89dc6ad4a4a36a312cd0d6327170339eb0"}, - {file = "scipy-1.14.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:7d3da42fbbbb860211a811782504f38ae7aaec9de8764a9bef6b262de7a2b50f"}, - {file = "scipy-1.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d91db2c41dd6c20646af280355d41dfa1ec7eead235642178bd57635a3f82209"}, - {file = "scipy-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a01cc03bcdc777c9da3cfdcc74b5a75caffb48a6c39c8450a9a05f82c4250a14"}, - {file = "scipy-1.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:65df4da3c12a2bb9ad52b86b4dcf46813e869afb006e58be0f516bc370165159"}, - {file = "scipy-1.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:4c4161597c75043f7154238ef419c29a64ac4a7c889d588ea77690ac4d0d9b20"}, - {file = "scipy-1.14.0.tar.gz", hash = "sha256:b5923f48cb840380f9854339176ef21763118a7300a88203ccd0bdd26e58527b"}, + {file = "scipy-1.14.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:b28d2ca4add7ac16ae8bb6632a3c86e4b9e4d52d3e34267f6e1b0c1f8d87e389"}, + {file = "scipy-1.14.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d0d2821003174de06b69e58cef2316a6622b60ee613121199cb2852a873f8cf3"}, + {file = "scipy-1.14.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8bddf15838ba768bb5f5083c1ea012d64c9a444e16192762bd858f1e126196d0"}, + {file = "scipy-1.14.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:97c5dddd5932bd2a1a31c927ba5e1463a53b87ca96b5c9bdf5dfd6096e27efc3"}, + {file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ff0a7e01e422c15739ecd64432743cf7aae2b03f3084288f399affcefe5222d"}, + {file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e32dced201274bf96899e6491d9ba3e9a5f6b336708656466ad0522d8528f69"}, + {file = "scipy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8426251ad1e4ad903a4514712d2fa8fdd5382c978010d1c6f5f37ef286a713ad"}, + {file = "scipy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:a49f6ed96f83966f576b33a44257d869756df6cf1ef4934f59dd58b25e0327e5"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8475230e55549ab3f207bff11ebfc91c805dc3463ef62eda3ccf593254524ce8"}, + {file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:278266012eb69f4a720827bdd2dc54b2271c97d84255b2faaa8f161a158c3b37"}, + {file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fef8c87f8abfb884dac04e97824b61299880c43f4ce675dd2cbeadd3c9b466d2"}, + {file = "scipy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b05d43735bb2f07d689f56f7b474788a13ed8adc484a85aa65c0fd931cf9ccd2"}, + {file = "scipy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:716e389b694c4bb564b4fc0c51bc84d381735e0d39d3f26ec1af2556ec6aad94"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:631f07b3734d34aced009aaf6fedfd0eb3498a97e581c3b1e5f14a04164a456d"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:af29a935803cc707ab2ed7791c44288a682f9c8107bc00f0eccc4f92c08d6e07"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2843f2d527d9eebec9a43e6b406fb7266f3af25a751aa91d62ff416f54170bc5"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:eb58ca0abd96911932f688528977858681a59d61a7ce908ffd355957f7025cfc"}, + {file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ac8812c1d2aab7131a79ba62933a2a76f582d5dbbc695192453dae67ad6310"}, + {file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9ea80f2e65bdaa0b7627fb00cbeb2daf163caa015e59b7516395fe3bd1e066"}, + {file = "scipy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:edaf02b82cd7639db00dbff629995ef185c8df4c3ffa71a5562a595765a06ce1"}, + {file = "scipy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:2ff38e22128e6c03ff73b6bb0f85f897d2362f8c052e3b8ad00532198fbdae3f"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1729560c906963fc8389f6aac023739ff3983e727b1a4d87696b7bf108316a79"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:4079b90df244709e675cdc8b93bfd8a395d59af40b72e339c2287c91860deb8e"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e0cf28db0f24a38b2a0ca33a85a54852586e43cf6fd876365c86e0657cfe7d73"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0c2f95de3b04e26f5f3ad5bb05e74ba7f68b837133a4492414b3afd79dfe540e"}, + {file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99722ea48b7ea25e8e015e8341ae74624f72e5f21fc2abd45f3a93266de4c5d"}, + {file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5149e3fd2d686e42144a093b206aef01932a0059c2a33ddfa67f5f035bdfe13e"}, + {file = "scipy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4f5a7c49323533f9103d4dacf4e4f07078f360743dec7f7596949149efeec06"}, + {file = "scipy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:baff393942b550823bfce952bb62270ee17504d02a1801d7fd0719534dfb9c84"}, + {file = "scipy-1.14.1.tar.gz", hash = "sha256:5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417"}, ] [package.dependencies] @@ -4783,151 +4869,102 @@ numpy = ">=1.23.5,<2.3" [package.extras] dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"] -doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.13.1)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] -test = ["Cython", "array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.13.1)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<=7.3.7)", "sphinx-design (>=0.4.0)"] +test = ["Cython", "array-api-strict (>=2.0)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "sentence-transformers" -version = "2.2.2" -description = "Multilingual text embeddings" +version = "3.1.1" +description = "State-of-the-Art Text Embeddings" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.8" files = [ - {file = "sentence-transformers-2.2.2.tar.gz", hash = "sha256:dbc60163b27de21076c9a30d24b5b7b6fa05141d68cf2553fa9a77bf79a29136"}, + {file = "sentence_transformers-3.1.1-py3-none-any.whl", hash = "sha256:c73bf6f17e3676bb9372a6133a254ebfb5907586b470f2bac5a840c64c3cf97e"}, + {file = "sentence_transformers-3.1.1.tar.gz", hash = "sha256:8f00020ef4ad6b918475c38af545c22f61403b67eb22d994860bab06902db160"}, ] [package.dependencies] -huggingface-hub = ">=0.4.0" -nltk = "*" -numpy = "*" +huggingface-hub = ">=0.19.3" +Pillow = "*" scikit-learn = "*" scipy = "*" -sentencepiece = "*" -torch = ">=1.6.0" -torchvision = "*" +torch = ">=1.11.0" tqdm = "*" -transformers = ">=4.6.0,<5.0.0" +transformers = ">=4.38.0,<5.0.0" -[[package]] -name = "sentencepiece" -version = "0.2.0" -description = "SentencePiece python wrapper" -optional = false -python-versions = "*" -files = [ - {file = "sentencepiece-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:188779e1298a1c8b8253c7d3ad729cb0a9891e5cef5e5d07ce4592c54869e227"}, - {file = "sentencepiece-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bed9cf85b296fa2b76fc2547b9cbb691a523864cebaee86304c43a7b4cb1b452"}, - {file = "sentencepiece-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d7b67e724bead13f18db6e1d10b6bbdc454af574d70efbb36f27d90387be1ca3"}, - {file = "sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fde4b08cfe237be4484c6c7c2e2c75fb862cfeab6bd5449ce4caeafd97b767a"}, - {file = "sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c378492056202d1c48a4979650981635fd97875a00eabb1f00c6a236b013b5e"}, - {file = "sentencepiece-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1380ce6540a368de2ef6d7e6ba14ba8f3258df650d39ba7d833b79ee68a52040"}, - {file = "sentencepiece-0.2.0-cp310-cp310-win32.whl", hash = "sha256:a1151d6a6dd4b43e552394aed0edfe9292820272f0194bd56c7c1660a0c06c3d"}, - {file = "sentencepiece-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:d490142b0521ef22bc1085f061d922a2a6666175bb6b42e588ff95c0db6819b2"}, - {file = "sentencepiece-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17982700c4f6dbb55fa3594f3d7e5dd1c8659a274af3738e33c987d2a27c9d5c"}, - {file = "sentencepiece-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7c867012c0e8bcd5bdad0f791609101cb5c66acb303ab3270218d6debc68a65e"}, - {file = "sentencepiece-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fd6071249c74f779c5b27183295b9202f8dedb68034e716784364443879eaa6"}, - {file = "sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f90c55a65013cbb8f4d7aab0599bf925cde4adc67ae43a0d323677b5a1c6cb"}, - {file = "sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b293734059ef656dcd65be62ff771507bea8fed0a711b6733976e1ed3add4553"}, - {file = "sentencepiece-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e58b47f933aca74c6a60a79dcb21d5b9e47416256c795c2d58d55cec27f9551d"}, - {file = "sentencepiece-0.2.0-cp311-cp311-win32.whl", hash = "sha256:c581258cf346b327c62c4f1cebd32691826306f6a41d8c4bec43b010dee08e75"}, - {file = "sentencepiece-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:0993dbc665f4113017892f1b87c3904a44d0640eda510abcacdfb07f74286d36"}, - {file = "sentencepiece-0.2.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ea5f536e32ea8ec96086ee00d7a4a131ce583a1b18d130711707c10e69601cb2"}, - {file = "sentencepiece-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0cb51f53b6aae3c36bafe41e86167c71af8370a039f542c43b0cce5ef24a68c"}, - {file = "sentencepiece-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3212121805afc58d8b00ab4e7dd1f8f76c203ddb9dc94aa4079618a31cf5da0f"}, - {file = "sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a3149e3066c2a75e0d68a43eb632d7ae728c7925b517f4c05c40f6f7280ce08"}, - {file = "sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632f3594d3e7ac8b367bca204cb3fd05a01d5b21455acd097ea4c0e30e2f63d7"}, - {file = "sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f295105c6bdbb05bd5e1b0cafbd78ff95036f5d3641e7949455a3f4e5e7c3109"}, - {file = "sentencepiece-0.2.0-cp312-cp312-win32.whl", hash = "sha256:fb89f811e5efd18bab141afc3fea3de141c3f69f3fe9e898f710ae7fe3aab251"}, - {file = "sentencepiece-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a673a72aab81fef5ebe755c6e0cc60087d1f3a4700835d40537183c1703a45f"}, - {file = "sentencepiece-0.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4547683f330289ec4f093027bfeb87f9ef023b2eb6f879fdc4a8187c7e0ffb90"}, - {file = "sentencepiece-0.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd6175f7eaec7142d2bf6f6597ce7db4c9ac89acf93fcdb17410c3a8b781eeb"}, - {file = "sentencepiece-0.2.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:859ba1acde782609a0910a26a60e16c191a82bf39b5621107552c0cd79fad00f"}, - {file = "sentencepiece-0.2.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcbbef6cc277f8f18f36959e305f10b1c620442d75addc79c21d7073ae581b50"}, - {file = "sentencepiece-0.2.0-cp36-cp36m-win32.whl", hash = "sha256:536b934e244829e3fe6c4f198652cd82da48adb9aa145c9f00889542726dee3d"}, - {file = "sentencepiece-0.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:0a91aaa3c769b52440df56fafda683b3aa48e3f2169cf7ee5b8c8454a7f3ae9b"}, - {file = "sentencepiece-0.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:787e480ca4c1d08c9985a7eb1eae4345c107729c99e9b5a9a00f2575fc7d4b4b"}, - {file = "sentencepiece-0.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4d158189eb2ecffea3a51edf6d25e110b3678ec47f1a40f2d541eafbd8f6250"}, - {file = "sentencepiece-0.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1e5ca43013e8935f25457a4fca47e315780172c3e821b4b13a890668911c792"}, - {file = "sentencepiece-0.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7140d9e5a74a0908493bb4a13f1f16a401297bd755ada4c707e842fbf6f0f5bf"}, - {file = "sentencepiece-0.2.0-cp37-cp37m-win32.whl", hash = "sha256:6cf333625234f247ab357b0bd9836638405ea9082e1543d5b8408f014979dcbf"}, - {file = "sentencepiece-0.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ff88712338b01031910e8e61e7239aff3ce8869ee31a47df63cb38aadd591bea"}, - {file = "sentencepiece-0.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20813a68d4c221b1849c62c30e1281ea81687894d894b8d4a0f4677d9311e0f5"}, - {file = "sentencepiece-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:926ef920ae2e8182db31d3f5d081ada57804e3e1d3a8c4ef8b117f9d9fb5a945"}, - {file = "sentencepiece-0.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:89f65f69636b7e9c015b79dff9c9985a9bc7d19ded6f79ef9f1ec920fdd73ecf"}, - {file = "sentencepiece-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f67eae0dbe6f2d7d6ba50a354623d787c99965f068b81e145d53240198021b0"}, - {file = "sentencepiece-0.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:98501e075f35dd1a1d5a20f65be26839fcb1938752ec61539af008a5aa6f510b"}, - {file = "sentencepiece-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3d1d2cc4882e8d6a1adf9d5927d7716f80617fc693385661caff21888972269"}, - {file = "sentencepiece-0.2.0-cp38-cp38-win32.whl", hash = "sha256:b99a308a2e5e569031ab164b74e6fab0b6f37dfb493c32f7816225f4d411a6dd"}, - {file = "sentencepiece-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:cdb701eec783d3ec86b7cd4c763adad8eaf6b46db37ee1c36e5e6c44b3fe1b5f"}, - {file = "sentencepiece-0.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1e0f9c4d0a6b0af59b613175f019916e28ade076e21242fd5be24340d8a2f64a"}, - {file = "sentencepiece-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:298f21cc1366eb60311aedba3169d30f885c363ddbf44214b0a587d2908141ad"}, - {file = "sentencepiece-0.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3f1ec95aa1e5dab11f37ac7eff190493fd87770f7a8b81ebc9dd768d1a3c8704"}, - {file = "sentencepiece-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b06b70af54daa4b4904cbb90b4eb6d35c9f3252fdc86c9c32d5afd4d30118d8"}, - {file = "sentencepiece-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e37bac44dd6603388cb598c64ff7a76e41ca774646f21c23aadfbf5a2228ab"}, - {file = "sentencepiece-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0461324897735512a32d222e3d886e24ad6a499761952b6bda2a9ee6e4313ea5"}, - {file = "sentencepiece-0.2.0-cp39-cp39-win32.whl", hash = "sha256:38aed822fb76435fa1f12185f10465a94ab9e51d5e8a9159e9a540ce926f0ffd"}, - {file = "sentencepiece-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:d8cf876516548b5a1d6ac4745d8b554f5c07891d55da557925e5c13ff0b4e6ad"}, - {file = "sentencepiece-0.2.0.tar.gz", hash = "sha256:a52c19171daaf2e697dc6cbe67684e0fa341b1248966f6aebb541de654d15843"}, -] +[package.extras] +dev = ["accelerate (>=0.20.3)", "datasets", "pre-commit", "pytest", "pytest-cov"] +train = ["accelerate (>=0.20.3)", "datasets"] [[package]] name = "setuptools" -version = "70.3.0" +version = "75.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, - {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, + {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, + {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, ] [package.extras] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] [[package]] name = "shapely" -version = "2.0.5" +version = "2.0.6" description = "Manipulation and analysis of geometric objects" optional = false python-versions = ">=3.7" files = [ - {file = "shapely-2.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:89d34787c44f77a7d37d55ae821f3a784fa33592b9d217a45053a93ade899375"}, - {file = "shapely-2.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:798090b426142df2c5258779c1d8d5734ec6942f778dab6c6c30cfe7f3bf64ff"}, - {file = "shapely-2.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45211276900c4790d6bfc6105cbf1030742da67594ea4161a9ce6812a6721e68"}, - {file = "shapely-2.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e119444bc27ca33e786772b81760f2028d930ac55dafe9bc50ef538b794a8e1"}, - {file = "shapely-2.0.5-cp310-cp310-win32.whl", hash = "sha256:9a4492a2b2ccbeaebf181e7310d2dfff4fdd505aef59d6cb0f217607cb042fb3"}, - {file = "shapely-2.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:1e5cb5ee72f1bc7ace737c9ecd30dc174a5295fae412972d3879bac2e82c8fae"}, - {file = "shapely-2.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5bbfb048a74cf273db9091ff3155d373020852805a37dfc846ab71dde4be93ec"}, - {file = "shapely-2.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93be600cbe2fbaa86c8eb70656369f2f7104cd231f0d6585c7d0aa555d6878b8"}, - {file = "shapely-2.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8e71bb9a46814019f6644c4e2560a09d44b80100e46e371578f35eaaa9da1c"}, - {file = "shapely-2.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5251c28a29012e92de01d2e84f11637eb1d48184ee8f22e2df6c8c578d26760"}, - {file = "shapely-2.0.5-cp311-cp311-win32.whl", hash = "sha256:35110e80070d664781ec7955c7de557456b25727a0257b354830abb759bf8311"}, - {file = "shapely-2.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c6b78c0007a34ce7144f98b7418800e0a6a5d9a762f2244b00ea560525290c9"}, - {file = "shapely-2.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:03bd7b5fa5deb44795cc0a503999d10ae9d8a22df54ae8d4a4cd2e8a93466195"}, - {file = "shapely-2.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ff9521991ed9e201c2e923da014e766c1aa04771bc93e6fe97c27dcf0d40ace"}, - {file = "shapely-2.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b65365cfbf657604e50d15161ffcc68de5cdb22a601bbf7823540ab4918a98d"}, - {file = "shapely-2.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21f64e647a025b61b19585d2247137b3a38a35314ea68c66aaf507a1c03ef6fe"}, - {file = "shapely-2.0.5-cp312-cp312-win32.whl", hash = "sha256:3ac7dc1350700c139c956b03d9c3df49a5b34aaf91d024d1510a09717ea39199"}, - {file = "shapely-2.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:30e8737983c9d954cd17feb49eb169f02f1da49e24e5171122cf2c2b62d65c95"}, - {file = "shapely-2.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ff7731fea5face9ec08a861ed351734a79475631b7540ceb0b66fb9732a5f529"}, - {file = "shapely-2.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff9e520af0c5a578e174bca3c18713cd47a6c6a15b6cf1f50ac17dc8bb8db6a2"}, - {file = "shapely-2.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b299b91557b04acb75e9732645428470825061f871a2edc36b9417d66c1fc5"}, - {file = "shapely-2.0.5-cp37-cp37m-win32.whl", hash = "sha256:b5870633f8e684bf6d1ae4df527ddcb6f3895f7b12bced5c13266ac04f47d231"}, - {file = "shapely-2.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:401cb794c5067598f50518e5a997e270cd7642c4992645479b915c503866abed"}, - {file = "shapely-2.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e91ee179af539100eb520281ba5394919067c6b51824e6ab132ad4b3b3e76dd0"}, - {file = "shapely-2.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8af6f7260f809c0862741ad08b1b89cb60c130ae30efab62320bbf4ee9cc71fa"}, - {file = "shapely-2.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5456dd522800306ba3faef77c5ba847ec30a0bd73ab087a25e0acdd4db2514f"}, - {file = "shapely-2.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b714a840402cde66fd7b663bb08cacb7211fa4412ea2a209688f671e0d0631fd"}, - {file = "shapely-2.0.5-cp38-cp38-win32.whl", hash = "sha256:7e8cf5c252fac1ea51b3162be2ec3faddedc82c256a1160fc0e8ddbec81b06d2"}, - {file = "shapely-2.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:4461509afdb15051e73ab178fae79974387f39c47ab635a7330d7fee02c68a3f"}, - {file = "shapely-2.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7545a39c55cad1562be302d74c74586f79e07b592df8ada56b79a209731c0219"}, - {file = "shapely-2.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c83a36f12ec8dee2066946d98d4d841ab6512a6ed7eb742e026a64854019b5f"}, - {file = "shapely-2.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89e640c2cd37378480caf2eeda9a51be64201f01f786d127e78eaeff091ec897"}, - {file = "shapely-2.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06efe39beafde3a18a21dde169d32f315c57da962826a6d7d22630025200c5e6"}, - {file = "shapely-2.0.5-cp39-cp39-win32.whl", hash = "sha256:8203a8b2d44dcb366becbc8c3d553670320e4acf0616c39e218c9561dd738d92"}, - {file = "shapely-2.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:7fed9dbfbcfec2682d9a047b9699db8dcc890dfca857ecba872c42185fc9e64e"}, - {file = "shapely-2.0.5.tar.gz", hash = "sha256:bff2366bc786bfa6cb353d6b47d0443c570c32776612e527ee47b6df63fcfe32"}, + {file = "shapely-2.0.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29a34e068da2d321e926b5073539fd2a1d4429a2c656bd63f0bd4c8f5b236d0b"}, + {file = "shapely-2.0.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c84c3f53144febf6af909d6b581bc05e8785d57e27f35ebaa5c1ab9baba13b"}, + {file = "shapely-2.0.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ad2fae12dca8d2b727fa12b007e46fbc522148a584f5d6546c539f3464dccde"}, + {file = "shapely-2.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3304883bd82d44be1b27a9d17f1167fda8c7f5a02a897958d86c59ec69b705e"}, + {file = "shapely-2.0.6-cp310-cp310-win32.whl", hash = "sha256:3ec3a0eab496b5e04633a39fa3d5eb5454628228201fb24903d38174ee34565e"}, + {file = "shapely-2.0.6-cp310-cp310-win_amd64.whl", hash = "sha256:28f87cdf5308a514763a5c38de295544cb27429cfa655d50ed8431a4796090c4"}, + {file = "shapely-2.0.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5aeb0f51a9db176da9a30cb2f4329b6fbd1e26d359012bb0ac3d3c7781667a9e"}, + {file = "shapely-2.0.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a7a78b0d51257a367ee115f4d41ca4d46edbd0dd280f697a8092dd3989867b2"}, + {file = "shapely-2.0.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f32c23d2f43d54029f986479f7c1f6e09c6b3a19353a3833c2ffb226fb63a855"}, + {file = "shapely-2.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3dc9fb0eb56498912025f5eb352b5126f04801ed0e8bdbd867d21bdbfd7cbd0"}, + {file = "shapely-2.0.6-cp311-cp311-win32.whl", hash = "sha256:d93b7e0e71c9f095e09454bf18dad5ea716fb6ced5df3cb044564a00723f339d"}, + {file = "shapely-2.0.6-cp311-cp311-win_amd64.whl", hash = "sha256:c02eb6bf4cfb9fe6568502e85bb2647921ee49171bcd2d4116c7b3109724ef9b"}, + {file = "shapely-2.0.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cec9193519940e9d1b86a3b4f5af9eb6910197d24af02f247afbfb47bcb3fab0"}, + {file = "shapely-2.0.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83b94a44ab04a90e88be69e7ddcc6f332da7c0a0ebb1156e1c4f568bbec983c3"}, + {file = "shapely-2.0.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:537c4b2716d22c92036d00b34aac9d3775e3691f80c7aa517c2c290351f42cd8"}, + {file = "shapely-2.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98fea108334be345c283ce74bf064fa00cfdd718048a8af7343c59eb40f59726"}, + {file = "shapely-2.0.6-cp312-cp312-win32.whl", hash = "sha256:42fd4cd4834747e4990227e4cbafb02242c0cffe9ce7ef9971f53ac52d80d55f"}, + {file = "shapely-2.0.6-cp312-cp312-win_amd64.whl", hash = "sha256:665990c84aece05efb68a21b3523a6b2057e84a1afbef426ad287f0796ef8a48"}, + {file = "shapely-2.0.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:42805ef90783ce689a4dde2b6b2f261e2c52609226a0438d882e3ced40bb3013"}, + {file = "shapely-2.0.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6d2cb146191a47bd0cee8ff5f90b47547b82b6345c0d02dd8b25b88b68af62d7"}, + {file = "shapely-2.0.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3fdef0a1794a8fe70dc1f514440aa34426cc0ae98d9a1027fb299d45741c381"}, + {file = "shapely-2.0.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c665a0301c645615a107ff7f52adafa2153beab51daf34587170d85e8ba6805"}, + {file = "shapely-2.0.6-cp313-cp313-win32.whl", hash = "sha256:0334bd51828f68cd54b87d80b3e7cee93f249d82ae55a0faf3ea21c9be7b323a"}, + {file = "shapely-2.0.6-cp313-cp313-win_amd64.whl", hash = "sha256:d37d070da9e0e0f0a530a621e17c0b8c3c9d04105655132a87cfff8bd77cc4c2"}, + {file = "shapely-2.0.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fa7468e4f5b92049c0f36d63c3e309f85f2775752e076378e36c6387245c5462"}, + {file = "shapely-2.0.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed5867e598a9e8ac3291da6cc9baa62ca25706eea186117034e8ec0ea4355653"}, + {file = "shapely-2.0.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81d9dfe155f371f78c8d895a7b7f323bb241fb148d848a2bf2244f79213123fe"}, + {file = "shapely-2.0.6-cp37-cp37m-win32.whl", hash = "sha256:fbb7bf02a7542dba55129062570211cfb0defa05386409b3e306c39612e7fbcc"}, + {file = "shapely-2.0.6-cp37-cp37m-win_amd64.whl", hash = "sha256:837d395fac58aa01aa544495b97940995211e3e25f9aaf87bc3ba5b3a8cd1ac7"}, + {file = "shapely-2.0.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c6d88ade96bf02f6bfd667ddd3626913098e243e419a0325ebef2bbd481d1eb6"}, + {file = "shapely-2.0.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8b3b818c4407eaa0b4cb376fd2305e20ff6df757bf1356651589eadc14aab41b"}, + {file = "shapely-2.0.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bbc783529a21f2bd50c79cef90761f72d41c45622b3e57acf78d984c50a5d13"}, + {file = "shapely-2.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2423f6c0903ebe5df6d32e0066b3d94029aab18425ad4b07bf98c3972a6e25a1"}, + {file = "shapely-2.0.6-cp38-cp38-win32.whl", hash = "sha256:2de00c3bfa80d6750832bde1d9487e302a6dd21d90cb2f210515cefdb616e5f5"}, + {file = "shapely-2.0.6-cp38-cp38-win_amd64.whl", hash = "sha256:3a82d58a1134d5e975f19268710e53bddd9c473743356c90d97ce04b73e101ee"}, + {file = "shapely-2.0.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:392f66f458a0a2c706254f473290418236e52aa4c9b476a072539d63a2460595"}, + {file = "shapely-2.0.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eba5bae271d523c938274c61658ebc34de6c4b33fdf43ef7e938b5776388c1be"}, + {file = "shapely-2.0.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7060566bc4888b0c8ed14b5d57df8a0ead5c28f9b69fb6bed4476df31c51b0af"}, + {file = "shapely-2.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b02154b3e9d076a29a8513dffcb80f047a5ea63c897c0cd3d3679f29363cf7e5"}, + {file = "shapely-2.0.6-cp39-cp39-win32.whl", hash = "sha256:44246d30124a4f1a638a7d5419149959532b99dfa25b54393512e6acc9c211ac"}, + {file = "shapely-2.0.6-cp39-cp39-win_amd64.whl", hash = "sha256:2b542d7f1dbb89192d3512c52b679c822ba916f93479fa5d4fc2fe4fa0b3c9e8"}, + {file = "shapely-2.0.6.tar.gz", hash = "sha256:997f6159b1484059ec239cacaa53467fd8b5564dabe186cd84ac2944663b0bf6"}, ] [package.dependencies] @@ -4972,24 +5009,24 @@ files = [ [[package]] name = "soupsieve" -version = "2.5" +version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" files = [ - {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, - {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, + {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, + {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, ] [[package]] name = "starlette" -version = "0.37.2" +version = "0.38.6" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, - {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, + {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"}, + {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"}, ] [package.dependencies] @@ -5017,13 +5054,13 @@ typing = ["mypy (>=1.4)", "rich", "twisted"] [[package]] name = "sympy" -version = "1.13.0" +version = "1.13.3" description = "Computer algebra system (CAS) in Python" optional = false python-versions = ">=3.8" files = [ - {file = "sympy-1.13.0-py3-none-any.whl", hash = "sha256:6b0b32a4673fb91bd3cac3b55406c8e01d53ae22780be467301cc452f6680c92"}, - {file = "sympy-1.13.0.tar.gz", hash = "sha256:3b6af8f4d008b9a1a6a4268b335b984b23835f26d1d60b0526ebc71d48a25f57"}, + {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"}, + {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"}, ] [package.dependencies] @@ -5032,28 +5069,15 @@ mpmath = ">=1.1.0,<1.4" [package.extras] dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"] -[[package]] -name = "tbb" -version = "2021.13.0" -description = "Intel® oneAPI Threading Building Blocks (oneTBB)" -optional = false -python-versions = "*" -files = [ - {file = "tbb-2021.13.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:a2567725329639519d46d92a2634cf61e76601dac2f777a05686fea546c4fe4f"}, - {file = "tbb-2021.13.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:aaf667e92849adb012b8874d6393282afc318aca4407fc62f912ee30a22da46a"}, - {file = "tbb-2021.13.0-py3-none-win32.whl", hash = "sha256:6669d26703e9943f6164c6407bd4a237a45007e79b8d3832fe6999576eaaa9ef"}, - {file = "tbb-2021.13.0-py3-none-win_amd64.whl", hash = "sha256:3528a53e4bbe64b07a6112b4c5a00ff3c61924ee46c9c68e004a1ac7ad1f09c3"}, -] - [[package]] name = "tenacity" -version = "8.5.0" +version = "9.0.0" description = "Retry code until it succeeds" optional = false python-versions = ">=3.8" files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, + {file = "tenacity-9.0.0-py3-none-any.whl", hash = "sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539"}, + {file = "tenacity-9.0.0.tar.gz", hash = "sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b"}, ] [package.extras] @@ -5278,147 +5302,110 @@ files = [ [[package]] name = "tomlkit" -version = "0.13.0" +version = "0.13.2" description = "Style preserving TOML library" optional = false python-versions = ">=3.8" files = [ - {file = "tomlkit-0.13.0-py3-none-any.whl", hash = "sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264"}, - {file = "tomlkit-0.13.0.tar.gz", hash = "sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72"}, + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, ] [[package]] name = "torch" -version = "2.3.1" +version = "2.4.1" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.3.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:605a25b23944be5ab7c3467e843580e1d888b8066e5aaf17ff7bf9cc30001cc3"}, - {file = "torch-2.3.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f2357eb0965583a0954d6f9ad005bba0091f956aef879822274b1bcdb11bd308"}, - {file = "torch-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:32b05fe0d1ada7f69c9f86c14ff69b0ef1957a5a54199bacba63d22d8fab720b"}, - {file = "torch-2.3.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:7c09a94362778428484bcf995f6004b04952106aee0ef45ff0b4bab484f5498d"}, - {file = "torch-2.3.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:b2ec81b61bb094ea4a9dee1cd3f7b76a44555375719ad29f05c0ca8ef596ad39"}, - {file = "torch-2.3.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:490cc3d917d1fe0bd027057dfe9941dc1d6d8e3cae76140f5dd9a7e5bc7130ab"}, - {file = "torch-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:5802530783bd465fe66c2df99123c9a54be06da118fbd785a25ab0a88123758a"}, - {file = "torch-2.3.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:a7dd4ed388ad1f3d502bf09453d5fe596c7b121de7e0cfaca1e2017782e9bbac"}, - {file = "torch-2.3.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:a486c0b1976a118805fc7c9641d02df7afbb0c21e6b555d3bb985c9f9601b61a"}, - {file = "torch-2.3.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:224259821fe3e4c6f7edf1528e4fe4ac779c77addaa74215eb0b63a5c474d66c"}, - {file = "torch-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5fdccbf6f1334b2203a61a0e03821d5845f1421defe311dabeae2fc8fbeac2d"}, - {file = "torch-2.3.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:3c333dc2ebc189561514eda06e81df22bf8fb64e2384746b2cb9f04f96d1d4c8"}, - {file = "torch-2.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:07e9ba746832b8d069cacb45f312cadd8ad02b81ea527ec9766c0e7404bb3feb"}, - {file = "torch-2.3.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:462d1c07dbf6bb5d9d2f3316fee73a24f3d12cd8dacf681ad46ef6418f7f6626"}, - {file = "torch-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff60bf7ce3de1d43ad3f6969983f321a31f0a45df3690921720bcad6a8596cc4"}, - {file = "torch-2.3.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:bee0bd33dc58aa8fc8a7527876e9b9a0e812ad08122054a5bff2ce5abf005b10"}, - {file = "torch-2.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:aaa872abde9a3d4f91580f6396d54888620f4a0b92e3976a6034759df4b961ad"}, - {file = "torch-2.3.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:3d7a7f7ef21a7520510553dc3938b0c57c116a7daee20736a9e25cbc0e832bdc"}, - {file = "torch-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:4777f6cefa0c2b5fa87223c213e7b6f417cf254a45e5829be4ccd1b2a4ee1011"}, - {file = "torch-2.3.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:2bb5af780c55be68fe100feb0528d2edebace1d55cb2e351de735809ba7391eb"}, + {file = "torch-2.4.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:362f82e23a4cd46341daabb76fba08f04cd646df9bfaf5da50af97cb60ca4971"}, + {file = "torch-2.4.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:e8ac1985c3ff0f60d85b991954cfc2cc25f79c84545aead422763148ed2759e3"}, + {file = "torch-2.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:91e326e2ccfb1496e3bee58f70ef605aeb27bd26be07ba64f37dcaac3d070ada"}, + {file = "torch-2.4.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:d36a8ef100f5bff3e9c3cea934b9e0d7ea277cb8210c7152d34a9a6c5830eadd"}, + {file = "torch-2.4.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:0b5f88afdfa05a335d80351e3cea57d38e578c8689f751d35e0ff36bce872113"}, + {file = "torch-2.4.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:ef503165f2341942bfdf2bd520152f19540d0c0e34961232f134dc59ad435be8"}, + {file = "torch-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:092e7c2280c860eff762ac08c4bdcd53d701677851670695e0c22d6d345b269c"}, + {file = "torch-2.4.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:ddddbd8b066e743934a4200b3d54267a46db02106876d21cf31f7da7a96f98ea"}, + {file = "torch-2.4.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:fdc4fe11db3eb93c1115d3e973a27ac7c1a8318af8934ffa36b0370efe28e042"}, + {file = "torch-2.4.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:18835374f599207a9e82c262153c20ddf42ea49bc76b6eadad8e5f49729f6e4d"}, + {file = "torch-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:ebea70ff30544fc021d441ce6b219a88b67524f01170b1c538d7d3ebb5e7f56c"}, + {file = "torch-2.4.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:72b484d5b6cec1a735bf3fa5a1c4883d01748698c5e9cfdbeb4ffab7c7987e0d"}, + {file = "torch-2.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c99e1db4bf0c5347107845d715b4aa1097e601bdc36343d758963055e9599d93"}, + {file = "torch-2.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:b57f07e92858db78c5b72857b4f0b33a65b00dc5d68e7948a8494b0314efb880"}, + {file = "torch-2.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:f18197f3f7c15cde2115892b64f17c80dbf01ed72b008020e7da339902742cf6"}, + {file = "torch-2.4.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:5fc1d4d7ed265ef853579caf272686d1ed87cebdcd04f2a498f800ffc53dab71"}, + {file = "torch-2.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:40f6d3fe3bae74efcf08cb7f8295eaddd8a838ce89e9d26929d4edd6d5e4329d"}, + {file = "torch-2.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:c9299c16c9743001ecef515536ac45900247f4338ecdf70746f2461f9e4831db"}, + {file = "torch-2.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:6bce130f2cd2d52ba4e2c6ada461808de7e5eccbac692525337cfb4c19421846"}, + {file = "torch-2.4.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:a38de2803ee6050309aac032676536c3d3b6a9804248537e38e098d0e14817ec"}, ] [package.dependencies] filelock = "*" fsspec = "*" jinja2 = "*" -mkl = {version = ">=2021.1.1,<=2021.4.0", markers = "platform_system == \"Windows\""} networkx = "*" nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} -nvidia-cudnn-cu12 = {version = "8.9.2.26", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cudnn-cu12 = {version = "9.1.0.70", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-nccl-cu12 = {version = "2.20.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +setuptools = "*" sympy = "*" -triton = {version = "2.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""} +triton = {version = "3.0.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.13\""} typing-extensions = ">=4.8.0" [package.extras] opt-einsum = ["opt-einsum (>=3.3)"] -optree = ["optree (>=0.9.1)"] +optree = ["optree (>=0.11.0)"] [[package]] name = "torchaudio" -version = "2.3.1" +version = "2.4.1" description = "An audio package for PyTorch" optional = false python-versions = "*" files = [ - {file = "torchaudio-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1f9134b27e5a7f0c1e33382fc0fe278e53695768cb0af02e8d22b5006c74a2ad"}, - {file = "torchaudio-2.3.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:88796183c12631dbc3dca58a74625e2fb6c5c7e50a54649df14239439d874ba6"}, - {file = "torchaudio-2.3.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:6b57e773aad72743d50a64a7402a06cb8bdfcc709efc6d8c26429d940e6788e2"}, - {file = "torchaudio-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:5b1224f944d1a3fc9755bd2876df6824a42c60cf4f32a05426dfdcd9668466da"}, - {file = "torchaudio-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01984f38398ca5e98ecfbfeafb72ae5b2131d0bb8aa464b5777addb3e4826877"}, - {file = "torchaudio-2.3.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:68815815e09105fe1171f0541681a7ebaf6d5d52b8e095ccde94b8064b107002"}, - {file = "torchaudio-2.3.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:c8c727c8341825bd18d91017c4c00f36b53b08f2176cdb9bdcb0def1c450b21d"}, - {file = "torchaudio-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:341e33450831146bc4c4cc8191d94484f1acc8bb566c2463a57c4133f792464e"}, - {file = "torchaudio-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5e36685420a07a176146e9d6e0fa8225198f126e167a00785538f853807e2d43"}, - {file = "torchaudio-2.3.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:07b72d76fa108ac0f3400a759456ba96bdaa2b8649fd9588cc93295a532b01d9"}, - {file = "torchaudio-2.3.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:42af6c7a430e6268f2c028e06078d413912b5ec6efa28a097ebdd3c3c79659df"}, - {file = "torchaudio-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:25bd1137e47de96b48ef0dc4865bc620a0b759e44c009c7e78e92d7bfdf257ba"}, - {file = "torchaudio-2.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ce45e05acd544696c6a6f023d4fe8614ade57515799a1103b2418e854838d4a5"}, - {file = "torchaudio-2.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6f8bc958ce1f24346dabe00d42e816f9b51698c00afe52492914761103e617a9"}, - {file = "torchaudio-2.3.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:9fd0f4bbc3fd585fbd7d976a988fe6e783fcb2e0db9d70dac60f40be072c6504"}, - {file = "torchaudio-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:d4982f4c520e49628507e968fb29c5db707108a8580b11593f049a932c8f2b98"}, - {file = "torchaudio-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:36e8c0b6532571c27a08a40dae428cd34af225007f15bcd77272643b6266b81d"}, - {file = "torchaudio-2.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:ae22a402fa862f7c3c177916f1b17482641d96b8bec56937e7df10739f3e3947"}, - {file = "torchaudio-2.3.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:4e3bca232f820c6a0fa5394424076cc519fae32288e7ff6f6d68bd71794dc354"}, - {file = "torchaudio-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7e0758b217e397bf2addfdc2df7c21f7dc34641968597a2a7e279c16e7c6d0b"}, + {file = "torchaudio-2.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:661909751909340b24f637410dfec02a888867816c3db19ed4f4102ae105244a"}, + {file = "torchaudio-2.4.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:bfc234cef1d03092ea27440fb79e486722ccb41cff94ebaf9d5a1082436395fe"}, + {file = "torchaudio-2.4.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:54431179d9a9ccf3feeae98aace07d89fae9fd728e2bc8656efbd70e7edcc6f8"}, + {file = "torchaudio-2.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:dec97872215c3122b7718ec47ac63e143565c3cced06444d0225e98bf4dd4b5f"}, + {file = "torchaudio-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:60af1531815d22659e5412ea401bed552a16c389938c49664e446e4cfd5ddc06"}, + {file = "torchaudio-2.4.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:95a0968569f7f4455bfd242bfcd489ec47ad37d2ba0f3d9f738cd1128a5f775c"}, + {file = "torchaudio-2.4.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:7640aaffb2056e12f2906187b03a22228a0908c87d0295fddf4b0b92334a290b"}, + {file = "torchaudio-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:3c08b42a0c296c8eeee6c533bcae5cfbc0ceae86a34f24fe6bbbb5faa7a7bea1"}, + {file = "torchaudio-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:953946cf610ffd57bb3fdd228effa2112fa51c5dfe36a96611effc9074a3d3be"}, + {file = "torchaudio-2.4.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:1796a8961decb522c47daab0fbe27c057d6d143ee22bb6ae0d5eb9b2a038c7b6"}, + {file = "torchaudio-2.4.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:5b62fc7b16ed708b0c07d4393137797e92f63fc3bd5705607d97ba6a9a7cf3f0"}, + {file = "torchaudio-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:d721b186aae7bd8752c9ad95213f5d650926597bb9060728dfe476986a1ff570"}, + {file = "torchaudio-2.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4ea0fd00142fe795c75bcc20a303981b56f2327c7f7d321b42a8fef1d78aafa9"}, + {file = "torchaudio-2.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:375d8740c8035a50faca7a5afe2fbdb712aa8733715b971b2af61b4003fa1c41"}, + {file = "torchaudio-2.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:74d19cf9ca3dad394afcabb7e6f7ed9ab9f59f2540d502826c7ec3e33985251d"}, + {file = "torchaudio-2.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:40e9fa8fdc8d328ea4aa90be65fd34c5ef975610dbd707545e3664393a8a2497"}, + {file = "torchaudio-2.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3adce550850902b9aa6cd2378ccd720ac9ec8cf31e2eba9743ccc84ffcbe76d6"}, + {file = "torchaudio-2.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:98d8e03703f96b13a8d172d1ccdc7badb338227fd762985fdcea6b30f6697bdb"}, + {file = "torchaudio-2.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:36c7e7bc6b358cbf42b769c80206780fa1497d141a985c6b3e7768de44524e9a"}, + {file = "torchaudio-2.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:f46e34ab3866ad8d8ace0673cd11e697c5cde6a3b7a4d8d789207d4d8badbb6e"}, ] [package.dependencies] -torch = "2.3.1" - -[[package]] -name = "torchvision" -version = "0.18.1" -description = "image and video datasets and models for torch deep learning" -optional = false -python-versions = ">=3.8" -files = [ - {file = "torchvision-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3e694e54b0548dad99c12af6bf0c8e4f3350137d391dcd19af22a1c5f89322b3"}, - {file = "torchvision-0.18.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:0b3bda0aa5b416eeb547143b8eeaf17720bdba9cf516dc991aacb81811aa96a5"}, - {file = "torchvision-0.18.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:573ff523c739405edb085f65cb592f482d28a30e29b0be4c4ba08040b3ae785f"}, - {file = "torchvision-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:ef7bbbc60b38e831a75e547c66ca1784f2ac27100f9e4ddbe9614cef6cbcd942"}, - {file = "torchvision-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80b5d794dd0fdba787adc22f1a367a5ead452327686473cb260dd94364bc56a6"}, - {file = "torchvision-0.18.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:9077cf590cdb3a5e8fdf5cdb71797f8c67713f974cf0228ecb17fcd670ab42f9"}, - {file = "torchvision-0.18.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:ceb993a882f1ae7ae373ed39c28d7e3e802205b0e59a7ed84ef4028f0bba8d7f"}, - {file = "torchvision-0.18.1-cp311-cp311-win_amd64.whl", hash = "sha256:52f7436140045dc2239cdc502aa76b2bd8bd676d64244ff154d304aa69852046"}, - {file = "torchvision-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2be6f0bf7c455c89a51a1dbb6f668d36c6edc479f49ac912d745d10df5715657"}, - {file = "torchvision-0.18.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:f118d887bfde3a948a41d56587525401e5cac1b7db2eaca203324d6ed2b1caca"}, - {file = "torchvision-0.18.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:13d24d904f65e62d66a1e0c41faec630bc193867b8a4a01166769e8a8e8df8e9"}, - {file = "torchvision-0.18.1-cp312-cp312-win_amd64.whl", hash = "sha256:ed6340b69a63a625e512a66127210d412551d9c5f2ad2978130c6a45bf56cd4a"}, - {file = "torchvision-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b1c3864fa9378c88bce8ad0ef3599f4f25397897ce612e1c245c74b97092f35e"}, - {file = "torchvision-0.18.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:02085a2ffc7461f5c0edb07d6f3455ee1806561f37736b903da820067eea58c7"}, - {file = "torchvision-0.18.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:9726c316a2501df8503e5a5dc46a631afd4c515a958972e5b7f7b9c87d2125c0"}, - {file = "torchvision-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:64a2662dbf30db9055d8b201d6e56f312a504e5ccd9d144c57c41622d3c524cb"}, - {file = "torchvision-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:975b8594c0f5288875408acbb74946eea786c5b008d129c0d045d0ead23742bc"}, - {file = "torchvision-0.18.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:da83c8bbd34d8bee48bfa1d1b40e0844bc3cba10ed825a5a8cbe3ce7b62264cd"}, - {file = "torchvision-0.18.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:54bfcd352abb396d5c9c237d200167c178bd136051b138e1e8ef46ce367c2773"}, - {file = "torchvision-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:5c8366a1aeee49e9ea9e64b30d199debdf06b1bd7610a76165eb5d7869c3bde5"}, -] - -[package.dependencies] -numpy = "*" -pillow = ">=5.3.0,<8.3.dev0 || >=8.4.dev0" -torch = "2.3.1" - -[package.extras] -scipy = ["scipy"] +torch = "2.4.1" [[package]] name = "tqdm" -version = "4.66.4" +version = "4.66.5" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, - {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, ] [package.dependencies] @@ -5446,19 +5433,19 @@ tqdm = ">4.64" [[package]] name = "transformers" -version = "4.42.4" +version = "4.44.2" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false python-versions = ">=3.8.0" files = [ - {file = "transformers-4.42.4-py3-none-any.whl", hash = "sha256:6d59061392d0f1da312af29c962df9017ff3c0108c681a56d1bc981004d16d24"}, - {file = "transformers-4.42.4.tar.gz", hash = "sha256:f956e25e24df851f650cb2c158b6f4352dfae9d702f04c113ed24fc36ce7ae2d"}, + {file = "transformers-4.44.2-py3-none-any.whl", hash = "sha256:1c02c65e7bfa5e52a634aff3da52138b583fc6f263c1f28d547dc144ba3d412d"}, + {file = "transformers-4.44.2.tar.gz", hash = "sha256:36aa17cc92ee154058e426d951684a2dab48751b35b49437896f898931270826"}, ] [package.dependencies] filelock = "*" huggingface-hub = ">=0.23.2,<1.0" -numpy = ">=1.17,<2.0" +numpy = ">=1.17" packaging = ">=20.0" pyyaml = ">=5.1" regex = "!=2019.12.17" @@ -5470,15 +5457,15 @@ tqdm = ">=4.27" [package.extras] accelerate = ["accelerate (>=0.21.0)"] agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"] -all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision"] +all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision"] audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] benchmark = ["optimum-benchmark (>=0.2.0)"] codecarbon = ["codecarbon (==1.2.0)"] deepspeed = ["accelerate (>=0.21.0)", "deepspeed (>=0.9.3)"] -deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.21.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.4.4)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] -dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.4.4)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] -dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.4.4)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.19,<0.20)", "urllib3 (<2.0.0)"] -dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.4.4)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.21.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] +dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.19,<0.20)", "urllib3 (<2.0.0)"] +dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)", "scipy (<1.13.0)"] flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] ftfy = ["ftfy"] @@ -5489,42 +5476,46 @@ natten = ["natten (>=0.14.6,<0.15.0)"] onnx = ["onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "tf2onnx"] onnxruntime = ["onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)"] optuna = ["optuna"] -quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "isort (>=5.5.4)", "ruff (==0.4.4)", "urllib3 (<2.0.0)"] +quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "isort (>=5.5.4)", "ruff (==0.5.1)", "urllib3 (<2.0.0)"] ray = ["ray[tune] (>=2.7.0)"] retrieval = ["datasets (!=2.5.0)", "faiss-cpu"] -ruff = ["ruff (==0.4.4)"] +ruff = ["ruff (==0.5.1)"] sagemaker = ["sagemaker (>=2.31.0)"] sentencepiece = ["protobuf", "sentencepiece (>=0.1.91,!=0.1.92)"] serving = ["fastapi", "pydantic", "starlette", "uvicorn"] sigopt = ["sigopt"] sklearn = ["scikit-learn"] speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] -testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "parameterized", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.4.4)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] -tf = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] -tf-cpu = ["keras (>2.9,<2.16)", "keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow-cpu (>2.9,<2.16)", "tensorflow-probability (<0.24)", "tensorflow-text (<2.16)", "tf2onnx"] +testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "parameterized", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] +tf = ["keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] +tf-cpu = ["keras (>2.9,<2.16)", "keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow-cpu (>2.9,<2.16)", "tensorflow-probability (<0.24)", "tensorflow-text (<2.16)", "tf2onnx"] tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] timm = ["timm (<=0.9.16)"] tokenizers = ["tokenizers (>=0.19,<0.20)"] torch = ["accelerate (>=0.21.0)", "torch"] torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"] -torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", "numpy (>=1.17,<2.0)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.19,<0.20)", "torch", "tqdm (>=4.27)"] +torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.19,<0.20)", "torch", "tqdm (>=4.27)"] video = ["av (==9.2.0)", "decord (==0.6.0)"] vision = ["Pillow (>=10.0.1,<=15.0)"] [[package]] name = "triton" -version = "2.3.1" +version = "3.0.0" description = "A language and compiler for custom Deep Learning operations" optional = false python-versions = "*" files = [ - {file = "triton-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c84595cbe5e546b1b290d2a58b1494df5a2ef066dd890655e5b8a8a92205c33"}, - {file = "triton-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9d64ae33bcb3a7a18081e3a746e8cf87ca8623ca13d2c362413ce7a486f893e"}, - {file = "triton-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf80e8761a9e3498aa92e7bf83a085b31959c61f5e8ac14eedd018df6fccd10"}, - {file = "triton-2.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b13bf35a2b659af7159bf78e92798dc62d877aa991de723937329e2d382f1991"}, - {file = "triton-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63381e35ded3304704ea867ffde3b7cfc42c16a55b3062d41e017ef510433d66"}, - {file = "triton-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d968264523c7a07911c8fb51b4e0d1b920204dae71491b1fe7b01b62a31e124"}, + {file = "triton-3.0.0-1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e1efef76935b2febc365bfadf74bcb65a6f959a9872e5bddf44cc9e0adce1e1a"}, + {file = "triton-3.0.0-1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ce8520437c602fb633f1324cc3871c47bee3b67acf9756c1a66309b60e3216c"}, + {file = "triton-3.0.0-1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:34e509deb77f1c067d8640725ef00c5cbfcb2052a1a3cb6a6d343841f92624eb"}, + {file = "triton-3.0.0-1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bcbf3b1c48af6a28011a5c40a5b3b9b5330530c3827716b5fbf6d7adcc1e53e9"}, + {file = "triton-3.0.0-1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6e5727202f7078c56f91ff13ad0c1abab14a0e7f2c87e91b12b6f64f3e8ae609"}, + {file = "triton-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39b052da883351fdf6be3d93cedae6db3b8e3988d3b09ed221bccecfa9612230"}, + {file = "triton-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd34f19a8582af96e6291d4afce25dac08cb2a5d218c599163761e8e0827208e"}, + {file = "triton-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d5e10de8c011adeb7c878c6ce0dd6073b14367749e34467f1cff2bde1b78253"}, + {file = "triton-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8903767951bf86ec960b4fe4e21bc970055afc65e9d57e916d79ae3c93665e3"}, + {file = "triton-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41004fb1ae9a53fcb3e970745feb87f0e3c94c6ce1ba86e95fa3b8537894bef7"}, ] [package.dependencies] @@ -5532,18 +5523,18 @@ filelock = "*" [package.extras] build = ["cmake (>=3.20)", "lit"] -tests = ["autopep8", "flake8", "isort", "numpy", "pytest", "scipy (>=1.7.1)", "torch"] -tutorials = ["matplotlib", "pandas", "tabulate", "torch"] +tests = ["autopep8", "flake8", "isort", "llnl-hatchet", "numpy", "pytest", "scipy (>=1.7.1)"] +tutorials = ["matplotlib", "pandas", "tabulate"] [[package]] name = "typer" -version = "0.12.3" +version = "0.12.5" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false python-versions = ">=3.7" files = [ - {file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"}, - {file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"}, + {file = "typer-0.12.5-py3-none-any.whl", hash = "sha256:62fe4e471711b147e3365034133904df3e235698399bc4de2b36c8579298d52b"}, + {file = "typer-0.12.5.tar.gz", hash = "sha256:f592f089bedcc8ec1b974125d64851029c3b1af145f04aca64d69410f0c9b722"}, ] [package.dependencies] @@ -5554,13 +5545,13 @@ typing-extensions = ">=3.7.4.3" [[package]] name = "types-requests" -version = "2.32.0.20240712" +version = "2.32.0.20240914" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"}, - {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"}, + {file = "types-requests-2.32.0.20240914.tar.gz", hash = "sha256:2850e178db3919d9bf809e434eef65ba49d0e7e33ac92d588f4a5e295fffd405"}, + {file = "types_requests-2.32.0.20240914-py3-none-any.whl", hash = "sha256:59c2f673eb55f32a99b2894faf6020e1a9f4a402ad0f192bfee0b64469054310"}, ] [package.dependencies] @@ -5681,13 +5672,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -5724,42 +5715,42 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", [[package]] name = "uvloop" -version = "0.19.0" +version = "0.20.0" description = "Fast implementation of asyncio event loop on top of libuv" optional = false python-versions = ">=3.8.0" files = [ - {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"}, - {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"}, - {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"}, - {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"}, - {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"}, - {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"}, - {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"}, - {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"}, - {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"}, - {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"}, - {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"}, - {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"}, - {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, - {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"}, - {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"}, - {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"}, - {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"}, - {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"}, - {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"}, - {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"}, - {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"}, - {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"}, - {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"}, - {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"}, - {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"}, - {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"}, - {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"}, - {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"}, - {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"}, - {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"}, - {file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"}, + {file = "uvloop-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9ebafa0b96c62881d5cafa02d9da2e44c23f9f0cd829f3a32a6aff771449c996"}, + {file = "uvloop-0.20.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:35968fc697b0527a06e134999eef859b4034b37aebca537daeb598b9d45a137b"}, + {file = "uvloop-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b16696f10e59d7580979b420eedf6650010a4a9c3bd8113f24a103dfdb770b10"}, + {file = "uvloop-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b04d96188d365151d1af41fa2d23257b674e7ead68cfd61c725a422764062ae"}, + {file = "uvloop-0.20.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94707205efbe809dfa3a0d09c08bef1352f5d3d6612a506f10a319933757c006"}, + {file = "uvloop-0.20.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:89e8d33bb88d7263f74dc57d69f0063e06b5a5ce50bb9a6b32f5fcbe655f9e73"}, + {file = "uvloop-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e50289c101495e0d1bb0bfcb4a60adde56e32f4449a67216a1ab2750aa84f037"}, + {file = "uvloop-0.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e237f9c1e8a00e7d9ddaa288e535dc337a39bcbf679f290aee9d26df9e72bce9"}, + {file = "uvloop-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:746242cd703dc2b37f9d8b9f173749c15e9a918ddb021575a0205ec29a38d31e"}, + {file = "uvloop-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82edbfd3df39fb3d108fc079ebc461330f7c2e33dbd002d146bf7c445ba6e756"}, + {file = "uvloop-0.20.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:80dc1b139516be2077b3e57ce1cb65bfed09149e1d175e0478e7a987863b68f0"}, + {file = "uvloop-0.20.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4f44af67bf39af25db4c1ac27e82e9665717f9c26af2369c404be865c8818dcf"}, + {file = "uvloop-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4b75f2950ddb6feed85336412b9a0c310a2edbcf4cf931aa5cfe29034829676d"}, + {file = "uvloop-0.20.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:77fbc69c287596880ecec2d4c7a62346bef08b6209749bf6ce8c22bbaca0239e"}, + {file = "uvloop-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6462c95f48e2d8d4c993a2950cd3d31ab061864d1c226bbf0ee2f1a8f36674b9"}, + {file = "uvloop-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:649c33034979273fa71aa25d0fe120ad1777c551d8c4cd2c0c9851d88fcb13ab"}, + {file = "uvloop-0.20.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a609780e942d43a275a617c0839d85f95c334bad29c4c0918252085113285b5"}, + {file = "uvloop-0.20.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aea15c78e0d9ad6555ed201344ae36db5c63d428818b4b2a42842b3870127c00"}, + {file = "uvloop-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0e94b221295b5e69de57a1bd4aeb0b3a29f61be6e1b478bb8a69a73377db7ba"}, + {file = "uvloop-0.20.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fee6044b64c965c425b65a4e17719953b96e065c5b7e09b599ff332bb2744bdf"}, + {file = "uvloop-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:265a99a2ff41a0fd56c19c3838b29bf54d1d177964c300dad388b27e84fd7847"}, + {file = "uvloop-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10c2956efcecb981bf9cfb8184d27d5d64b9033f917115a960b83f11bfa0d6b"}, + {file = "uvloop-0.20.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e7d61fe8e8d9335fac1bf8d5d82820b4808dd7a43020c149b63a1ada953d48a6"}, + {file = "uvloop-0.20.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2beee18efd33fa6fdb0976e18475a4042cd31c7433c866e8a09ab604c7c22ff2"}, + {file = "uvloop-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d8c36fdf3e02cec92aed2d44f63565ad1522a499c654f07935c8f9d04db69e95"}, + {file = "uvloop-0.20.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0fac7be202596c7126146660725157d4813aa29a4cc990fe51346f75ff8fde7"}, + {file = "uvloop-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d0fba61846f294bce41eb44d60d58136090ea2b5b99efd21cbdf4e21927c56a"}, + {file = "uvloop-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95720bae002ac357202e0d866128eb1ac82545bcf0b549b9abe91b5178d9b541"}, + {file = "uvloop-0.20.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:36c530d8fa03bfa7085af54a48f2ca16ab74df3ec7108a46ba82fd8b411a2315"}, + {file = "uvloop-0.20.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e97152983442b499d7a71e44f29baa75b3b02e65d9c44ba53b10338e98dedb66"}, + {file = "uvloop-0.20.0.tar.gz", hash = "sha256:4603ca714a754fc8d9b197e325db25b2ea045385e8a3ad05d3463de725fdf469"}, ] [package.extras] @@ -5768,43 +5759,41 @@ test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)" [[package]] name = "watchdog" -version = "4.0.1" +version = "5.0.2" description = "Filesystem events monitoring" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"}, - {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"}, - {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"}, - {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"}, - {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, + {file = "watchdog-5.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d961f4123bb3c447d9fcdcb67e1530c366f10ab3a0c7d1c0c9943050936d4877"}, + {file = "watchdog-5.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72990192cb63872c47d5e5fefe230a401b87fd59d257ee577d61c9e5564c62e5"}, + {file = "watchdog-5.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bec703ad90b35a848e05e1b40bf0050da7ca28ead7ac4be724ae5ac2653a1a0"}, + {file = "watchdog-5.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:dae7a1879918f6544201d33666909b040a46421054a50e0f773e0d870ed7438d"}, + {file = "watchdog-5.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c4a440f725f3b99133de610bfec93d570b13826f89616377715b9cd60424db6e"}, + {file = "watchdog-5.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8b2918c19e0d48f5f20df458c84692e2a054f02d9df25e6c3c930063eca64c1"}, + {file = "watchdog-5.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:aa9cd6e24126d4afb3752a3e70fce39f92d0e1a58a236ddf6ee823ff7dba28ee"}, + {file = "watchdog-5.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f627c5bf5759fdd90195b0c0431f99cff4867d212a67b384442c51136a098ed7"}, + {file = "watchdog-5.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7594a6d32cda2b49df3fd9abf9b37c8d2f3eab5df45c24056b4a671ac661619"}, + {file = "watchdog-5.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba32efcccfe2c58f4d01115440d1672b4eb26cdd6fc5b5818f1fb41f7c3e1889"}, + {file = "watchdog-5.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:963f7c4c91e3f51c998eeff1b3fb24a52a8a34da4f956e470f4b068bb47b78ee"}, + {file = "watchdog-5.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8c47150aa12f775e22efff1eee9f0f6beee542a7aa1a985c271b1997d340184f"}, + {file = "watchdog-5.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:14dd4ed023d79d1f670aa659f449bcd2733c33a35c8ffd88689d9d243885198b"}, + {file = "watchdog-5.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b84bff0391ad4abe25c2740c7aec0e3de316fdf7764007f41e248422a7760a7f"}, + {file = "watchdog-5.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e8d5ff39f0a9968952cce548e8e08f849141a4fcc1290b1c17c032ba697b9d7"}, + {file = "watchdog-5.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fb223456db6e5f7bd9bbd5cd969f05aae82ae21acc00643b60d81c770abd402b"}, + {file = "watchdog-5.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9814adb768c23727a27792c77812cf4e2fd9853cd280eafa2bcfa62a99e8bd6e"}, + {file = "watchdog-5.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:901ee48c23f70193d1a7bc2d9ee297df66081dd5f46f0ca011be4f70dec80dab"}, + {file = "watchdog-5.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:638bcca3d5b1885c6ec47be67bf712b00a9ab3d4b22ec0881f4889ad870bc7e8"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5597c051587f8757798216f2485e85eac583c3b343e9aa09127a3a6f82c65ee8"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:53ed1bf71fcb8475dd0ef4912ab139c294c87b903724b6f4a8bd98e026862e6d"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:29e4a2607bd407d9552c502d38b45a05ec26a8e40cc7e94db9bb48f861fa5abc"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:b6dc8f1d770a8280997e4beae7b9a75a33b268c59e033e72c8a10990097e5fde"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:d2ab34adc9bf1489452965cdb16a924e97d4452fcf88a50b21859068b50b5c3b"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:7d1aa7e4bb0f0c65a1a91ba37c10e19dabf7eaaa282c5787e51371f090748f4b"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:726eef8f8c634ac6584f86c9c53353a010d9f311f6c15a034f3800a7a891d941"}, + {file = "watchdog-5.0.2-py3-none-win32.whl", hash = "sha256:bda40c57115684d0216556671875e008279dea2dc00fcd3dde126ac8e0d7a2fb"}, + {file = "watchdog-5.0.2-py3-none-win_amd64.whl", hash = "sha256:d010be060c996db725fbce7e3ef14687cdcc76f4ca0e4339a68cc4532c382a73"}, + {file = "watchdog-5.0.2-py3-none-win_ia64.whl", hash = "sha256:3960136b2b619510569b90f0cd96408591d6c251a75c97690f4553ca88889769"}, + {file = "watchdog-5.0.2.tar.gz", hash = "sha256:dcebf7e475001d2cdeb020be630dc5b687e9acdd60d16fea6bb4508e7b94cf76"}, ] [package.extras] @@ -5812,86 +5801,94 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "watchfiles" -version = "0.22.0" +version = "0.24.0" description = "Simple, modern and high performance file watching and code reload in python." optional = false python-versions = ">=3.8" files = [ - {file = "watchfiles-0.22.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:da1e0a8caebf17976e2ffd00fa15f258e14749db5e014660f53114b676e68538"}, - {file = "watchfiles-0.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61af9efa0733dc4ca462347becb82e8ef4945aba5135b1638bfc20fad64d4f0e"}, - {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d9188979a58a096b6f8090e816ccc3f255f137a009dd4bbec628e27696d67c1"}, - {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2bdadf6b90c099ca079d468f976fd50062905d61fae183f769637cb0f68ba59a"}, - {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:067dea90c43bf837d41e72e546196e674f68c23702d3ef80e4e816937b0a3ffd"}, - {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbf8a20266136507abf88b0df2328e6a9a7c7309e8daff124dda3803306a9fdb"}, - {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1235c11510ea557fe21be5d0e354bae2c655a8ee6519c94617fe63e05bca4171"}, - {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2444dc7cb9d8cc5ab88ebe792a8d75709d96eeef47f4c8fccb6df7c7bc5be71"}, - {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c5af2347d17ab0bd59366db8752d9e037982e259cacb2ba06f2c41c08af02c39"}, - {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9624a68b96c878c10437199d9a8b7d7e542feddda8d5ecff58fdc8e67b460848"}, - {file = "watchfiles-0.22.0-cp310-none-win32.whl", hash = "sha256:4b9f2a128a32a2c273d63eb1fdbf49ad64852fc38d15b34eaa3f7ca2f0d2b797"}, - {file = "watchfiles-0.22.0-cp310-none-win_amd64.whl", hash = "sha256:2627a91e8110b8de2406d8b2474427c86f5a62bf7d9ab3654f541f319ef22bcb"}, - {file = "watchfiles-0.22.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8c39987a1397a877217be1ac0fb1d8b9f662c6077b90ff3de2c05f235e6a8f96"}, - {file = "watchfiles-0.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a927b3034d0672f62fb2ef7ea3c9fc76d063c4b15ea852d1db2dc75fe2c09696"}, - {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052d668a167e9fc345c24203b104c313c86654dd6c0feb4b8a6dfc2462239249"}, - {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e45fb0d70dda1623a7045bd00c9e036e6f1f6a85e4ef2c8ae602b1dfadf7550"}, - {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c49b76a78c156979759d759339fb62eb0549515acfe4fd18bb151cc07366629c"}, - {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4a65474fd2b4c63e2c18ac67a0c6c66b82f4e73e2e4d940f837ed3d2fd9d4da"}, - {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc0cba54f47c660d9fa3218158b8963c517ed23bd9f45fe463f08262a4adae1"}, - {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94ebe84a035993bb7668f58a0ebf998174fb723a39e4ef9fce95baabb42b787f"}, - {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e0f0a874231e2839abbf473256efffe577d6ee2e3bfa5b540479e892e47c172d"}, - {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:213792c2cd3150b903e6e7884d40660e0bcec4465e00563a5fc03f30ea9c166c"}, - {file = "watchfiles-0.22.0-cp311-none-win32.whl", hash = "sha256:b44b70850f0073b5fcc0b31ede8b4e736860d70e2dbf55701e05d3227a154a67"}, - {file = "watchfiles-0.22.0-cp311-none-win_amd64.whl", hash = "sha256:00f39592cdd124b4ec5ed0b1edfae091567c72c7da1487ae645426d1b0ffcad1"}, - {file = "watchfiles-0.22.0-cp311-none-win_arm64.whl", hash = "sha256:3218a6f908f6a276941422b035b511b6d0d8328edd89a53ae8c65be139073f84"}, - {file = "watchfiles-0.22.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c7b978c384e29d6c7372209cbf421d82286a807bbcdeb315427687f8371c340a"}, - {file = "watchfiles-0.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd4c06100bce70a20c4b81e599e5886cf504c9532951df65ad1133e508bf20be"}, - {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:425440e55cd735386ec7925f64d5dde392e69979d4c8459f6bb4e920210407f2"}, - {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68fe0c4d22332d7ce53ad094622b27e67440dacefbaedd29e0794d26e247280c"}, - {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8a31bfd98f846c3c284ba694c6365620b637debdd36e46e1859c897123aa232"}, - {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc2e8fe41f3cac0660197d95216c42910c2b7e9c70d48e6d84e22f577d106fc1"}, - {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b7cc10261c2786c41d9207193a85c1db1b725cf87936df40972aab466179b6"}, - {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28585744c931576e535860eaf3f2c0ec7deb68e3b9c5a85ca566d69d36d8dd27"}, - {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00095dd368f73f8f1c3a7982a9801190cc88a2f3582dd395b289294f8975172b"}, - {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:52fc9b0dbf54d43301a19b236b4a4614e610605f95e8c3f0f65c3a456ffd7d35"}, - {file = "watchfiles-0.22.0-cp312-none-win32.whl", hash = "sha256:581f0a051ba7bafd03e17127735d92f4d286af941dacf94bcf823b101366249e"}, - {file = "watchfiles-0.22.0-cp312-none-win_amd64.whl", hash = "sha256:aec83c3ba24c723eac14225194b862af176d52292d271c98820199110e31141e"}, - {file = "watchfiles-0.22.0-cp312-none-win_arm64.whl", hash = "sha256:c668228833c5619f6618699a2c12be057711b0ea6396aeaece4ded94184304ea"}, - {file = "watchfiles-0.22.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d47e9ef1a94cc7a536039e46738e17cce058ac1593b2eccdede8bf72e45f372a"}, - {file = "watchfiles-0.22.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:28f393c1194b6eaadcdd8f941307fc9bbd7eb567995232c830f6aef38e8a6e88"}, - {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd64f3a4db121bc161644c9e10a9acdb836853155a108c2446db2f5ae1778c3d"}, - {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2abeb79209630da981f8ebca30a2c84b4c3516a214451bfc5f106723c5f45843"}, - {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cc382083afba7918e32d5ef12321421ef43d685b9a67cc452a6e6e18920890e"}, - {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d048ad5d25b363ba1d19f92dcf29023988524bee6f9d952130b316c5802069cb"}, - {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:103622865599f8082f03af4214eaff90e2426edff5e8522c8f9e93dc17caee13"}, - {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3e1f3cf81f1f823e7874ae563457828e940d75573c8fbf0ee66818c8b6a9099"}, - {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8597b6f9dc410bdafc8bb362dac1cbc9b4684a8310e16b1ff5eee8725d13dcd6"}, - {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0b04a2cbc30e110303baa6d3ddce8ca3664bc3403be0f0ad513d1843a41c97d1"}, - {file = "watchfiles-0.22.0-cp38-none-win32.whl", hash = "sha256:b610fb5e27825b570554d01cec427b6620ce9bd21ff8ab775fc3a32f28bba63e"}, - {file = "watchfiles-0.22.0-cp38-none-win_amd64.whl", hash = "sha256:fe82d13461418ca5e5a808a9e40f79c1879351fcaeddbede094028e74d836e86"}, - {file = "watchfiles-0.22.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3973145235a38f73c61474d56ad6199124e7488822f3a4fc97c72009751ae3b0"}, - {file = "watchfiles-0.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:280a4afbc607cdfc9571b9904b03a478fc9f08bbeec382d648181c695648202f"}, - {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a0d883351a34c01bd53cfa75cd0292e3f7e268bacf2f9e33af4ecede7e21d1d"}, - {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9165bcab15f2b6d90eedc5c20a7f8a03156b3773e5fb06a790b54ccecdb73385"}, - {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc1b9b56f051209be458b87edb6856a449ad3f803315d87b2da4c93b43a6fe72"}, - {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dc1fc25a1dedf2dd952909c8e5cb210791e5f2d9bc5e0e8ebc28dd42fed7562"}, - {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc92d2d2706d2b862ce0568b24987eba51e17e14b79a1abcd2edc39e48e743c8"}, - {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97b94e14b88409c58cdf4a8eaf0e67dfd3ece7e9ce7140ea6ff48b0407a593ec"}, - {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96eec15e5ea7c0b6eb5bfffe990fc7c6bd833acf7e26704eb18387fb2f5fd087"}, - {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:28324d6b28bcb8d7c1041648d7b63be07a16db5510bea923fc80b91a2a6cbed6"}, - {file = "watchfiles-0.22.0-cp39-none-win32.whl", hash = "sha256:8c3e3675e6e39dc59b8fe5c914a19d30029e36e9f99468dddffd432d8a7b1c93"}, - {file = "watchfiles-0.22.0-cp39-none-win_amd64.whl", hash = "sha256:25c817ff2a86bc3de3ed2df1703e3d24ce03479b27bb4527c57e722f8554d971"}, - {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b810a2c7878cbdecca12feae2c2ae8af59bea016a78bc353c184fa1e09f76b68"}, - {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f7e1f9c5d1160d03b93fc4b68a0aeb82fe25563e12fbcdc8507f8434ab6f823c"}, - {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:030bc4e68d14bcad2294ff68c1ed87215fbd9a10d9dea74e7cfe8a17869785ab"}, - {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace7d060432acde5532e26863e897ee684780337afb775107c0a90ae8dbccfd2"}, - {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5834e1f8b71476a26df97d121c0c0ed3549d869124ed2433e02491553cb468c2"}, - {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0bc3b2f93a140df6806c8467c7f51ed5e55a931b031b5c2d7ff6132292e803d6"}, - {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fdebb655bb1ba0122402352b0a4254812717a017d2dc49372a1d47e24073795"}, - {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c8e0aa0e8cc2a43561e0184c0513e291ca891db13a269d8d47cb9841ced7c71"}, - {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2f350cbaa4bb812314af5dab0eb8d538481e2e2279472890864547f3fe2281ed"}, - {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7a74436c415843af2a769b36bf043b6ccbc0f8d784814ba3d42fc961cdb0a9dc"}, - {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00ad0bcd399503a84cc688590cdffbe7a991691314dde5b57b3ed50a41319a31"}, - {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72a44e9481afc7a5ee3291b09c419abab93b7e9c306c9ef9108cb76728ca58d2"}, - {file = "watchfiles-0.22.0.tar.gz", hash = "sha256:988e981aaab4f3955209e7e28c7794acdb690be1efa7f16f8ea5aba7ffdadacb"}, + {file = "watchfiles-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:083dc77dbdeef09fa44bb0f4d1df571d2e12d8a8f985dccde71ac3ac9ac067a0"}, + {file = "watchfiles-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e94e98c7cb94cfa6e071d401ea3342767f28eb5a06a58fafdc0d2a4974f4f35c"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82ae557a8c037c42a6ef26c494d0631cacca040934b101d001100ed93d43f361"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acbfa31e315a8f14fe33e3542cbcafc55703b8f5dcbb7c1eecd30f141df50db3"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b74fdffce9dfcf2dc296dec8743e5b0332d15df19ae464f0e249aa871fc1c571"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:449f43f49c8ddca87c6b3980c9284cab6bd1f5c9d9a2b00012adaaccd5e7decd"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4abf4ad269856618f82dee296ac66b0cd1d71450fc3c98532d93798e73399b7a"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f895d785eb6164678ff4bb5cc60c5996b3ee6df3edb28dcdeba86a13ea0465e"}, + {file = "watchfiles-0.24.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ae3e208b31be8ce7f4c2c0034f33406dd24fbce3467f77223d10cd86778471c"}, + {file = "watchfiles-0.24.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2efec17819b0046dde35d13fb8ac7a3ad877af41ae4640f4109d9154ed30a188"}, + {file = "watchfiles-0.24.0-cp310-none-win32.whl", hash = "sha256:6bdcfa3cd6fdbdd1a068a52820f46a815401cbc2cb187dd006cb076675e7b735"}, + {file = "watchfiles-0.24.0-cp310-none-win_amd64.whl", hash = "sha256:54ca90a9ae6597ae6dc00e7ed0a040ef723f84ec517d3e7ce13e63e4bc82fa04"}, + {file = "watchfiles-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:bdcd5538e27f188dd3c804b4a8d5f52a7fc7f87e7fd6b374b8e36a4ca03db428"}, + {file = "watchfiles-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2dadf8a8014fde6addfd3c379e6ed1a981c8f0a48292d662e27cabfe4239c83c"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6509ed3f467b79d95fc62a98229f79b1a60d1b93f101e1c61d10c95a46a84f43"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8360f7314a070c30e4c976b183d1d8d1585a4a50c5cb603f431cebcbb4f66327"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:316449aefacf40147a9efaf3bd7c9bdd35aaba9ac5d708bd1eb5763c9a02bef5"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73bde715f940bea845a95247ea3e5eb17769ba1010efdc938ffcb967c634fa61"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3770e260b18e7f4e576edca4c0a639f704088602e0bc921c5c2e721e3acb8d15"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa0fd7248cf533c259e59dc593a60973a73e881162b1a2f73360547132742823"}, + {file = "watchfiles-0.24.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d7a2e3b7f5703ffbd500dabdefcbc9eafeff4b9444bbdd5d83d79eedf8428fab"}, + {file = "watchfiles-0.24.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d831ee0a50946d24a53821819b2327d5751b0c938b12c0653ea5be7dea9c82ec"}, + {file = "watchfiles-0.24.0-cp311-none-win32.whl", hash = "sha256:49d617df841a63b4445790a254013aea2120357ccacbed00253f9c2b5dc24e2d"}, + {file = "watchfiles-0.24.0-cp311-none-win_amd64.whl", hash = "sha256:d3dcb774e3568477275cc76554b5a565024b8ba3a0322f77c246bc7111c5bb9c"}, + {file = "watchfiles-0.24.0-cp311-none-win_arm64.whl", hash = "sha256:9301c689051a4857d5b10777da23fafb8e8e921bcf3abe6448a058d27fb67633"}, + {file = "watchfiles-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7211b463695d1e995ca3feb38b69227e46dbd03947172585ecb0588f19b0d87a"}, + {file = "watchfiles-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b8693502d1967b00f2fb82fc1e744df128ba22f530e15b763c8d82baee15370"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdab9555053399318b953a1fe1f586e945bc8d635ce9d05e617fd9fe3a4687d6"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:34e19e56d68b0dad5cff62273107cf5d9fbaf9d75c46277aa5d803b3ef8a9e9b"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41face41f036fee09eba33a5b53a73e9a43d5cb2c53dad8e61fa6c9f91b5a51e"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5148c2f1ea043db13ce9b0c28456e18ecc8f14f41325aa624314095b6aa2e9ea"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e4bd963a935aaf40b625c2499f3f4f6bbd0c3776f6d3bc7c853d04824ff1c9f"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c79d7719d027b7a42817c5d96461a99b6a49979c143839fc37aa5748c322f234"}, + {file = "watchfiles-0.24.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:32aa53a9a63b7f01ed32e316e354e81e9da0e6267435c7243bf8ae0f10b428ef"}, + {file = "watchfiles-0.24.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce72dba6a20e39a0c628258b5c308779b8697f7676c254a845715e2a1039b968"}, + {file = "watchfiles-0.24.0-cp312-none-win32.whl", hash = "sha256:d9018153cf57fc302a2a34cb7564870b859ed9a732d16b41a9b5cb2ebed2d444"}, + {file = "watchfiles-0.24.0-cp312-none-win_amd64.whl", hash = "sha256:551ec3ee2a3ac9cbcf48a4ec76e42c2ef938a7e905a35b42a1267fa4b1645896"}, + {file = "watchfiles-0.24.0-cp312-none-win_arm64.whl", hash = "sha256:b52a65e4ea43c6d149c5f8ddb0bef8d4a1e779b77591a458a893eb416624a418"}, + {file = "watchfiles-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2e3ab79a1771c530233cadfd277fcc762656d50836c77abb2e5e72b88e3a48"}, + {file = "watchfiles-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327763da824817b38ad125dcd97595f942d720d32d879f6c4ddf843e3da3fe90"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd82010f8ab451dabe36054a1622870166a67cf3fce894f68895db6f74bbdc94"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d64ba08db72e5dfd5c33be1e1e687d5e4fcce09219e8aee893a4862034081d4e"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1cf1f6dd7825053f3d98f6d33f6464ebdd9ee95acd74ba2c34e183086900a827"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43e3e37c15a8b6fe00c1bce2473cfa8eb3484bbeecf3aefbf259227e487a03df"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88bcd4d0fe1d8ff43675360a72def210ebad3f3f72cabfeac08d825d2639b4ab"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:999928c6434372fde16c8f27143d3e97201160b48a614071261701615a2a156f"}, + {file = "watchfiles-0.24.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:30bbd525c3262fd9f4b1865cb8d88e21161366561cd7c9e1194819e0a33ea86b"}, + {file = "watchfiles-0.24.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:edf71b01dec9f766fb285b73930f95f730bb0943500ba0566ae234b5c1618c18"}, + {file = "watchfiles-0.24.0-cp313-none-win32.whl", hash = "sha256:f4c96283fca3ee09fb044f02156d9570d156698bc3734252175a38f0e8975f07"}, + {file = "watchfiles-0.24.0-cp313-none-win_amd64.whl", hash = "sha256:a974231b4fdd1bb7f62064a0565a6b107d27d21d9acb50c484d2cdba515b9366"}, + {file = "watchfiles-0.24.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ee82c98bed9d97cd2f53bdb035e619309a098ea53ce525833e26b93f673bc318"}, + {file = "watchfiles-0.24.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fd92bbaa2ecdb7864b7600dcdb6f2f1db6e0346ed425fbd01085be04c63f0b05"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f83df90191d67af5a831da3a33dd7628b02a95450e168785586ed51e6d28943c"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fca9433a45f18b7c779d2bae7beeec4f740d28b788b117a48368d95a3233ed83"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b995bfa6bf01a9e09b884077a6d37070464b529d8682d7691c2d3b540d357a0c"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed9aba6e01ff6f2e8285e5aa4154e2970068fe0fc0998c4380d0e6278222269b"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5171ef898299c657685306d8e1478a45e9303ddcd8ac5fed5bd52ad4ae0b69b"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4933a508d2f78099162da473841c652ad0de892719043d3f07cc83b33dfd9d91"}, + {file = "watchfiles-0.24.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95cf3b95ea665ab03f5a54765fa41abf0529dbaf372c3b83d91ad2cfa695779b"}, + {file = "watchfiles-0.24.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:01def80eb62bd5db99a798d5e1f5f940ca0a05986dcfae21d833af7a46f7ee22"}, + {file = "watchfiles-0.24.0-cp38-none-win32.whl", hash = "sha256:4d28cea3c976499475f5b7a2fec6b3a36208656963c1a856d328aeae056fc5c1"}, + {file = "watchfiles-0.24.0-cp38-none-win_amd64.whl", hash = "sha256:21ab23fdc1208086d99ad3f69c231ba265628014d4aed31d4e8746bd59e88cd1"}, + {file = "watchfiles-0.24.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b665caeeda58625c3946ad7308fbd88a086ee51ccb706307e5b1fa91556ac886"}, + {file = "watchfiles-0.24.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5c51749f3e4e269231510da426ce4a44beb98db2dce9097225c338f815b05d4f"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b2509f08761f29a0fdad35f7e1638b8ab1adfa2666d41b794090361fb8b855"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a60e2bf9dc6afe7f743e7c9b149d1fdd6dbf35153c78fe3a14ae1a9aee3d98b"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7d9b87c4c55e3ea8881dfcbf6d61ea6775fffed1fedffaa60bd047d3c08c430"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:78470906a6be5199524641f538bd2c56bb809cd4bf29a566a75051610bc982c3"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07cdef0c84c03375f4e24642ef8d8178e533596b229d32d2bbd69e5128ede02a"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d337193bbf3e45171c8025e291530fb7548a93c45253897cd764a6a71c937ed9"}, + {file = "watchfiles-0.24.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ec39698c45b11d9694a1b635a70946a5bad066b593af863460a8e600f0dff1ca"}, + {file = "watchfiles-0.24.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e28d91ef48eab0afb939fa446d8ebe77e2f7593f5f463fd2bb2b14132f95b6e"}, + {file = "watchfiles-0.24.0-cp39-none-win32.whl", hash = "sha256:7138eff8baa883aeaa074359daabb8b6c1e73ffe69d5accdc907d62e50b1c0da"}, + {file = "watchfiles-0.24.0-cp39-none-win_amd64.whl", hash = "sha256:b3ef2c69c655db63deb96b3c3e587084612f9b1fa983df5e0c3379d41307467f"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:632676574429bee8c26be8af52af20e0c718cc7f5f67f3fb658c71928ccd4f7f"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a2a9891723a735d3e2540651184be6fd5b96880c08ffe1a98bae5017e65b544b"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7fa2bc0efef3e209a8199fd111b8969fe9db9c711acc46636686331eda7dd4"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01550ccf1d0aed6ea375ef259706af76ad009ef5b0203a3a4cce0f6024f9b68a"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:96619302d4374de5e2345b2b622dc481257a99431277662c30f606f3e22f42be"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:85d5f0c7771dcc7a26c7a27145059b6bb0ce06e4e751ed76cdf123d7039b60b5"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951088d12d339690a92cef2ec5d3cfd957692834c72ffd570ea76a6790222777"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49fb58bcaa343fedc6a9e91f90195b20ccb3135447dc9e4e2570c3a39565853e"}, + {file = "watchfiles-0.24.0.tar.gz", hash = "sha256:afb72325b74fa7a428c009c1b8be4b4d7c2afedafb2982827ef2156646df2fe1"}, ] [package.dependencies] @@ -5899,13 +5896,13 @@ anyio = ">=3.0.0" [[package]] name = "wcmatch" -version = "8.5.2" +version = "9.0" description = "Wildcard/glob file name matcher." optional = false python-versions = ">=3.8" files = [ - {file = "wcmatch-8.5.2-py3-none-any.whl", hash = "sha256:17d3ad3758f9d0b5b4dedc770b65420d4dac62e680229c287bf24c9db856a478"}, - {file = "wcmatch-8.5.2.tar.gz", hash = "sha256:a70222b86dea82fb382dd87b73278c10756c138bd6f8f714e2183128887b9eb2"}, + {file = "wcmatch-9.0-py3-none-any.whl", hash = "sha256:af25922e2b6dbd1550fa37a4c8de7dd558d6c1bb330c641de9b907b9776cb3c4"}, + {file = "wcmatch-9.0.tar.gz", hash = "sha256:567d66b11ad74384954c8af86f607857c3bdf93682349ad32066231abd556c92"}, ] [package.dependencies] @@ -6098,101 +6095,103 @@ files = [ [[package]] name = "yarl" -version = "1.9.4" +version = "1.11.1" description = "Yet another URL library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:400cd42185f92de559d29eeb529e71d80dfbd2f45c36844914a4a34297ca6f00"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8258c86f47e080a258993eed877d579c71da7bda26af86ce6c2d2d072c11320d"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2164cd9725092761fed26f299e3f276bb4b537ca58e6ff6b252eae9631b5c96e"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08ea567c16f140af8ddc7cb58e27e9138a1386e3e6e53982abaa6f2377b38cc"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:768ecc550096b028754ea28bf90fde071c379c62c43afa574edc6f33ee5daaec"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2909fa3a7d249ef64eeb2faa04b7957e34fefb6ec9966506312349ed8a7e77bf"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01a8697ec24f17c349c4f655763c4db70eebc56a5f82995e5e26e837c6eb0e49"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e286580b6511aac7c3268a78cdb861ec739d3e5a2a53b4809faef6b49778eaff"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4179522dc0305c3fc9782549175c8e8849252fefeb077c92a73889ccbcd508ad"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:27fcb271a41b746bd0e2a92182df507e1c204759f460ff784ca614e12dd85145"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f61db3b7e870914dbd9434b560075e0366771eecbe6d2b5561f5bc7485f39efd"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:c92261eb2ad367629dc437536463dc934030c9e7caca861cc51990fe6c565f26"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d95b52fbef190ca87d8c42f49e314eace4fc52070f3dfa5f87a6594b0c1c6e46"}, + {file = "yarl-1.11.1-cp310-cp310-win32.whl", hash = "sha256:489fa8bde4f1244ad6c5f6d11bb33e09cf0d1d0367edb197619c3e3fc06f3d91"}, + {file = "yarl-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:476e20c433b356e16e9a141449f25161e6b69984fb4cdbd7cd4bd54c17844998"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:946eedc12895873891aaceb39bceb484b4977f70373e0122da483f6c38faaa68"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21a7c12321436b066c11ec19c7e3cb9aec18884fe0d5b25d03d756a9e654edfe"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c35f493b867912f6fda721a59cc7c4766d382040bdf1ddaeeaa7fa4d072f4675"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25861303e0be76b60fddc1250ec5986c42f0a5c0c50ff57cc30b1be199c00e63"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4b53f73077e839b3f89c992223f15b1d2ab314bdbdf502afdc7bb18e95eae27"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:327c724b01b8641a1bf1ab3b232fb638706e50f76c0b5bf16051ab65c868fac5"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4307d9a3417eea87715c9736d050c83e8c1904e9b7aada6ce61b46361b733d92"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a28bed68ab8fb7e380775f0029a079f08a17799cb3387a65d14ace16c12e2b"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:067b961853c8e62725ff2893226fef3d0da060656a9827f3f520fb1d19b2b68a"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8215f6f21394d1f46e222abeb06316e77ef328d628f593502d8fc2a9117bde83"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:498442e3af2a860a663baa14fbf23fb04b0dd758039c0e7c8f91cb9279799bff"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:69721b8effdb588cb055cc22f7c5105ca6fdaa5aeb3ea09021d517882c4a904c"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e969fa4c1e0b1a391f3fcbcb9ec31e84440253325b534519be0d28f4b6b533e"}, + {file = "yarl-1.11.1-cp311-cp311-win32.whl", hash = "sha256:7d51324a04fc4b0e097ff8a153e9276c2593106a811704025bbc1d6916f45ca6"}, + {file = "yarl-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:15061ce6584ece023457fb8b7a7a69ec40bf7114d781a8c4f5dcd68e28b5c53b"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a4264515f9117be204935cd230fb2a052dd3792789cc94c101c535d349b3dab0"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f41fa79114a1d2eddb5eea7b912d6160508f57440bd302ce96eaa384914cd265"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02da8759b47d964f9173c8675710720b468aa1c1693be0c9c64abb9d8d9a4867"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9361628f28f48dcf8b2f528420d4d68102f593f9c2e592bfc842f5fb337e44fd"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b91044952da03b6f95fdba398d7993dd983b64d3c31c358a4c89e3c19b6f7aef"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74db2ef03b442276d25951749a803ddb6e270d02dda1d1c556f6ae595a0d76a8"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e975a2211952a8a083d1b9d9ba26472981ae338e720b419eb50535de3c02870"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aef97ba1dd2138112890ef848e17d8526fe80b21f743b4ee65947ea184f07a2"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a7915ea49b0c113641dc4d9338efa9bd66b6a9a485ffe75b9907e8573ca94b84"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:504cf0d4c5e4579a51261d6091267f9fd997ef58558c4ffa7a3e1460bd2336fa"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3de5292f9f0ee285e6bd168b2a77b2a00d74cbcfa420ed078456d3023d2f6dff"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a34e1e30f1774fa35d37202bbeae62423e9a79d78d0874e5556a593479fdf239"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:66b63c504d2ca43bf7221a1f72fbe981ff56ecb39004c70a94485d13e37ebf45"}, + {file = "yarl-1.11.1-cp312-cp312-win32.whl", hash = "sha256:a28b70c9e2213de425d9cba5ab2e7f7a1c8ca23a99c4b5159bf77b9c31251447"}, + {file = "yarl-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:17b5a386d0d36fb828e2fb3ef08c8829c1ebf977eef88e5367d1c8c94b454639"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1fa2e7a406fbd45b61b4433e3aa254a2c3e14c4b3186f6e952d08a730807fa0c"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:750f656832d7d3cb0c76be137ee79405cc17e792f31e0a01eee390e383b2936e"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b8486f322d8f6a38539136a22c55f94d269addb24db5cb6f61adc61eabc9d93"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fce4da3703ee6048ad4138fe74619c50874afe98b1ad87b2698ef95bf92c96d"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed653638ef669e0efc6fe2acb792275cb419bf9cb5c5049399f3556995f23c7"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18ac56c9dd70941ecad42b5a906820824ca72ff84ad6fa18db33c2537ae2e089"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:688654f8507464745ab563b041d1fb7dab5d9912ca6b06e61d1c4708366832f5"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4973eac1e2ff63cf187073cd4e1f1148dcd119314ab79b88e1b3fad74a18c9d5"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:964a428132227edff96d6f3cf261573cb0f1a60c9a764ce28cda9525f18f7786"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6d23754b9939cbab02c63434776df1170e43b09c6a517585c7ce2b3d449b7318"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c2dc4250fe94d8cd864d66018f8344d4af50e3758e9d725e94fecfa27588ff82"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09696438cb43ea6f9492ef237761b043f9179f455f405279e609f2bc9100212a"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:999bfee0a5b7385a0af5ffb606393509cfde70ecca4f01c36985be6d33e336da"}, + {file = "yarl-1.11.1-cp313-cp313-win32.whl", hash = "sha256:ce928c9c6409c79e10f39604a7e214b3cb69552952fbda8d836c052832e6a979"}, + {file = "yarl-1.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:501c503eed2bb306638ccb60c174f856cc3246c861829ff40eaa80e2f0330367"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dae7bd0daeb33aa3e79e72877d3d51052e8b19c9025ecf0374f542ea8ec120e4"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3ff6b1617aa39279fe18a76c8d165469c48b159931d9b48239065767ee455b2b"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3257978c870728a52dcce8c2902bf01f6c53b65094b457bf87b2644ee6238ddc"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f351fa31234699d6084ff98283cb1e852270fe9e250a3b3bf7804eb493bd937"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8aef1b64da41d18026632d99a06b3fefe1d08e85dd81d849fa7c96301ed22f1b"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7175a87ab8f7fbde37160a15e58e138ba3b2b0e05492d7351314a250d61b1591"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba444bdd4caa2a94456ef67a2f383710928820dd0117aae6650a4d17029fa25e"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ea9682124fc062e3d931c6911934a678cb28453f957ddccf51f568c2f2b5e05"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8418c053aeb236b20b0ab8fa6bacfc2feaaf7d4683dd96528610989c99723d5f"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:61a5f2c14d0a1adfdd82258f756b23a550c13ba4c86c84106be4c111a3a4e413"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f3a6d90cab0bdf07df8f176eae3a07127daafcf7457b997b2bf46776da2c7eb7"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:077da604852be488c9a05a524068cdae1e972b7dc02438161c32420fb4ec5e14"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:15439f3c5c72686b6c3ff235279630d08936ace67d0fe5c8d5bbc3ef06f5a420"}, + {file = "yarl-1.11.1-cp38-cp38-win32.whl", hash = "sha256:238a21849dd7554cb4d25a14ffbfa0ef380bb7ba201f45b144a14454a72ffa5a"}, + {file = "yarl-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:67459cf8cf31da0e2cbdb4b040507e535d25cfbb1604ca76396a3a66b8ba37a6"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:884eab2ce97cbaf89f264372eae58388862c33c4f551c15680dd80f53c89a269"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a336eaa7ee7e87cdece3cedb395c9657d227bfceb6781295cf56abcd3386a26"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87f020d010ba80a247c4abc335fc13421037800ca20b42af5ae40e5fd75e7909"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:637c7ddb585a62d4469f843dac221f23eec3cbad31693b23abbc2c366ad41ff4"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:48dfd117ab93f0129084577a07287376cc69c08138694396f305636e229caa1a"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e0ae31fb5ccab6eda09ba1494e87eb226dcbd2372dae96b87800e1dcc98804"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f46f81501160c28d0c0b7333b4f7be8983dbbc161983b6fb814024d1b4952f79"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04293941646647b3bfb1719d1d11ff1028e9c30199509a844da3c0f5919dc520"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:250e888fa62d73e721f3041e3a9abf427788a1934b426b45e1b92f62c1f68366"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e8f63904df26d1a66aabc141bfd258bf738b9bc7bc6bdef22713b4f5ef789a4c"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:aac44097d838dda26526cffb63bdd8737a2dbdf5f2c68efb72ad83aec6673c7e"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:267b24f891e74eccbdff42241c5fb4f974de2d6271dcc7d7e0c9ae1079a560d9"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6907daa4b9d7a688063ed098c472f96e8181733c525e03e866fb5db480a424df"}, + {file = "yarl-1.11.1-cp39-cp39-win32.whl", hash = "sha256:14438dfc5015661f75f85bc5adad0743678eefee266ff0c9a8e32969d5d69f74"}, + {file = "yarl-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:94d0caaa912bfcdc702a4204cd5e2bb01eb917fc4f5ea2315aa23962549561b0"}, + {file = "yarl-1.11.1-py3-none-any.whl", hash = "sha256:72bf26f66456baa0584eff63e44545c9f0eaed9b73cb6601b647c91f14c11f38"}, + {file = "yarl-1.11.1.tar.gz", hash = "sha256:1bb2d9e212fb7449b8fb73bc461b51eaa17cc8430b4a87d87be7b25052d92f53"}, ] [package.dependencies] @@ -6201,20 +6200,24 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.19.2" +version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, - {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.12" -content-hash = "f3108ded19670863623e47d636f328112b0d27ee63c80f2b2926b9ee97bfb561" +content-hash = "a30452317409c38854150bb8aa5dcda7d091ca99e28fd0fbcaebbe8ceb96fc2d" diff --git a/pyproject.toml b/pyproject.toml index 06de9b6b..022d1cb1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.masonry.api" [tool.poetry] name = "talemate" -version = "0.25.6" +version = "0.27.0" description = "AI-backed roleplay and narrative tools" authors = ["FinalWombat"] license = "GNU Affero General Public License v3.0" @@ -50,10 +50,11 @@ numpy = "^1" # ChromaDB chromadb = ">=0.4.17,<1" InstructorEmbedding = "^1.0.1" -torch = ">=2.1.0" -torchaudio = ">=2.3.0" +torch = "^2.4.0" +torchaudio = "^2.4.0" # locked for instructor embeddings -sentence-transformers="==2.2.2" +#sentence-transformers="==2.2.2" +sentence_transformers=">=2.7.0" [tool.poetry.dev-dependencies] pytest = "^6.2" diff --git a/scenes/simulation-suite/game.py b/scenes/simulation-suite/game.py index 61de456a..978c5f33 100644 --- a/scenes/simulation-suite/game.py +++ b/scenes/simulation-suite/game.py @@ -448,7 +448,7 @@ def game(TM): def call_remove_ai_character(self, call:str, inject:str) -> str: TM.signals.status("busy", "Simulation suite removing character.", as_scene_message=True) - character_name = TM.agents.creator.determine_character_name(instructions=f"{inject} - what is the name of the character being removed?", allowed_names=TM.scene.npc_character_names()) + character_name = TM.agents.creator.determine_character_name(instructions=f"{inject} - what is the name of the character being removed?", allowed_names=TM.scene.npc_character_names) npc = TM.scene.get_character(character_name) @@ -466,7 +466,7 @@ def game(TM): def call_change_ai_character(self, call:str, inject:str) -> str: TM.signals.status("busy", "Simulation suite altering character.", as_scene_message=True) - character_name = TM.agents.creator.determine_character_name(instructions=f"{inject} - what is the name of the character receiving the changes (before the change)?", allowed_names=TM.scene.npc_character_names()) + character_name = TM.agents.creator.determine_character_name(instructions=f"{inject} - what is the name of the character receiving the changes (before the change)?", allowed_names=TM.scene.npc_character_names) if character_name in self.added_npcs: # we dont want to change the character if it was just added @@ -577,4 +577,14 @@ def game(TM): TM.signals.status("success", "Simulation suite updated world state.", as_scene_message=True) SimulationSuite().run() - \ No newline at end of file + +def on_generation_cancelled(TM, exc): + + """ + Called when user pressed the cancel button during the simulation suite + loop. + """ + + TM.signals.status("success", "Simulation suite instructions cancelled", as_scene_message=True) + rounds = TM.game_state.get_var("instr.rounds", 0) + TM.log.debug("SIMULATION SUITE: command cancelled", rounds=rounds) \ No newline at end of file diff --git a/src/talemate/__init__.py b/src/talemate/__init__.py index 745ce85c..c654332d 100644 --- a/src/talemate/__init__.py +++ b/src/talemate/__init__.py @@ -2,4 +2,6 @@ from .agents import Agent from .client import TextGeneratorWebuiClient from .tale_mate import * -VERSION = "0.26.0" +from .version import VERSION + +__version__ = VERSION \ No newline at end of file diff --git a/src/talemate/agents/base.py b/src/talemate/agents/base.py index 83a8ad79..1197e35d 100644 --- a/src/talemate/agents/base.py +++ b/src/talemate/agents/base.py @@ -17,6 +17,10 @@ import talemate.util as util from talemate.agents.context import ActiveAgent from talemate.emit import emit from talemate.events import GameLoopStartEvent +from talemate.context import active_scene +from talemate.client.context import ( + ClientContext +) __all__ = [ "Agent", @@ -81,17 +85,23 @@ def set_processing(fn): @wraps(fn) async def wrapper(self, *args, **kwargs): - with ActiveAgent(self, fn): - try: - await self.emit_status(processing=True) - return await fn(self, *args, **kwargs) - finally: + with ClientContext(): + scene = active_scene.get() + + if scene: + scene.continue_actions() + + with ActiveAgent(self, fn): try: - await self.emit_status(processing=False) - except RuntimeError as exc: - # not sure why this happens - # some concurrency error? - log.error("error emitting agent status", exc=exc) + await self.emit_status(processing=True) + return await fn(self, *args, **kwargs) + finally: + try: + await self.emit_status(processing=False) + except RuntimeError as exc: + # not sure why this happens + # some concurrency error? + log.error("error emitting agent status", exc=exc) return wrapper diff --git a/src/talemate/agents/context.py b/src/talemate/agents/context.py index b4896151..60115123 100644 --- a/src/talemate/agents/context.py +++ b/src/talemate/agents/context.py @@ -1,4 +1,5 @@ import contextvars +import uuid from typing import TYPE_CHECKING, Callable import pydantic @@ -14,6 +15,7 @@ class ActiveAgentContext(pydantic.BaseModel): agent: object fn: Callable agent_stack: list = pydantic.Field(default_factory=list) + agent_stack_uid: str | None = None class Config: arbitrary_types_allowed = True @@ -36,8 +38,10 @@ class ActiveAgent: if previous_agent: self.agent.agent_stack = previous_agent.agent_stack + [str(self.agent)] + self.agent.agent_stack_uid = previous_agent.agent_stack_uid else: self.agent.agent_stack = [str(self.agent)] + self.agent.agent_stack_uid = str(uuid.uuid4()) self.token = active_agent.set(self.agent) diff --git a/src/talemate/agents/conversation.py b/src/talemate/agents/conversation.py index af6e7a3a..6a8d491f 100644 --- a/src/talemate/agents/conversation.py +++ b/src/talemate/agents/conversation.py @@ -106,7 +106,7 @@ class ConversationAgent(Agent): min=32, max=512, step=32, - ), # + ), "instructions": AgentActionConfig( type="text", label="Instructions", diff --git a/src/talemate/agents/memory.py b/src/talemate/agents/memory/__init__.py similarity index 67% rename from src/talemate/agents/memory.py rename to src/talemate/agents/memory/__init__.py index a89e8f73..49f00267 100644 --- a/src/talemate/agents/memory.py +++ b/src/talemate/agents/memory/__init__.py @@ -2,20 +2,31 @@ from __future__ import annotations import asyncio import functools -import os -import shutil -from typing import TYPE_CHECKING, Callable, List, Optional, Union +import hashlib +import uuid +from typing import Callable import structlog from chromadb.config import Settings import talemate.events as events import talemate.util as util -from talemate.agents.base import set_processing +from talemate.agents.base import ( + Agent, + AgentAction, + AgentActionConfig, + AgentDetail, + set_processing, +) from talemate.config import load_config -from talemate.context import scene_is_loading +from talemate.context import scene_is_loading, active_scene from talemate.emit import emit from talemate.emit.signals import handlers +from talemate.agents.memory.context import memory_request, MemoryRequest +from talemate.agents.memory.exceptions import ( + EmbeddingsModelLoadError, + SetDBError, +) try: import chromadb @@ -30,8 +41,7 @@ if not chromadb: log.info("ChromaDB not found, disabling Chroma agent") -from .base import Agent, AgentDetail - +from talemate.agents.registry import register class MemoryDocument(str): def __new__(cls, text, meta, id, raw): @@ -51,7 +61,44 @@ class MemoryAgent(Agent): """ agent_type = "memory" - verbose_name = "Long-term memory" + verbose_name = "Memory" + + def __init__(self, scene, **kwargs): + self.db = None + self.scene = scene + self.memory_tracker = {} + self.config = load_config() + self._ready_to_add = False + + handlers["config_saved"].connect(self.on_config_saved) + + self.actions = { + "_config": AgentAction( + enabled=True, + label="Configure", + description="Memory agent configuration", + config={ + "embeddings": AgentActionConfig( + type="text", + value="default", + label="Embeddings", + choices=self.get_presets, + description="Which embeddings to use", + ), + "device": AgentActionConfig( + type="text", + value="cpu", + label="Device", + description="Which device to use for embeddings (for local embeddings)", + note="Making changes to the embeddings or the device while a scene is loaded will cause the memory database to be re-imported. Depending on the size of the model and scene this may take a while.", + choices=[ + {"value": "cpu", "label": "CPU"}, + {"value": "cuda", "label": "CUDA"}, + ] + ), + }, + ), + } @property def readonly(self): @@ -65,29 +112,130 @@ class MemoryAgent(Agent): @property def db_name(self): raise NotImplementedError() + + @property + def get_presets(self): + return [ + {"value": k, "label": f"{v['embeddings']}: {v['model']}"} for k,v in self.config.get("presets", {}).get("embeddings", {}).items() + ] + + @property + def embeddings_config(self): + _embeddings = self.actions["_config"].config["embeddings"].value + return self.config.get("presets", {}).get("embeddings", {}).get(_embeddings, {}) + + @property + def embeddings(self): + return self.embeddings_config.get("embeddings", "sentence-transformer") + + @property + def using_openai_embeddings(self): + return self.embeddings == "openai" - @classmethod - def config_options(cls, agent=None): - return {} + @property + def using_instructor_embeddings(self): + return self.embeddings == "instructor" + + @property + def using_sentence_transformer_embeddings(self): + return self.embeddings == "default" or self.embeddings == "sentence-transformer" + + @property + def using_local_embeddings(self): + return self.embeddings in [ + "instructor", + "sentence-transformer", + "default" + ] + + @property + def max_distance(self) -> float: + distance = float(self.embeddings_config.get("distance", 1.0)) + distance_mod = float(self.embeddings_config.get("distance_mod", 1.0)) + + return distance * distance_mod + + @property + def model(self): + return self.embeddings_config.get("model") + + @property + def distance_function(self): + return self.embeddings_config.get("distance_function", "l2") - def __init__(self, scene, **kwargs): - self.db = None - self.scene = scene - self.memory_tracker = {} - self.config = load_config() - self._ready_to_add = False + @property + def device(self) -> str: + return self.actions["_config"].config["device"].value - handlers["config_saved"].connect(self.on_config_saved) + @property + def trust_remote_code(self) -> bool: + return self.embeddings_config.get("trust_remote_code", False) + + @property + def fingerprint(self) -> str: + """ + Returns a unique fingerprint for the current configuration + """ + return f"{self.embeddings}-{self.model.replace('/','-')}-{self.distance_function}-{self.device}-{self.trust_remote_code}".lower() + + async def apply_config(self, *args, **kwargs): + + _fingerprint = self.fingerprint + + await super().apply_config(*args, **kwargs) + + fingerprint_changed = _fingerprint != self.fingerprint + + # have embeddings or device changed? + if fingerprint_changed: + log.warning("memory agent", status="embedding function changed", old=_fingerprint, new=self.fingerprint) + await self.handle_embeddings_change() + + + @set_processing + async def handle_embeddings_change(self): + scene = active_scene.get() + + if not scene or not scene.get_helper("memory"): + return + + self.close_db(scene) + emit("status", "Re-importing context database", status="busy") + await scene.commit_to_memory() + if not scene.immutable_save: + await scene.save(auto=True) + emit("status", "Context database re-imported", status="success") def on_config_saved(self, event): + loop = asyncio.get_running_loop() openai_key = self.openai_api_key + + fingerprint = self.fingerprint + self.config = load_config() + + if fingerprint != self.fingerprint: + log.warning("memory agent", status="embedding function changed", old=fingerprint, new=self.fingerprint) + loop.run_until_complete(self.handle_embeddings_change()) + if openai_key != self.openai_api_key: - loop = asyncio.get_running_loop() loop.run_until_complete(self.emit_status()) + @set_processing async def set_db(self): - raise NotImplementedError() + loop = asyncio.get_running_loop() + try: + await loop.run_in_executor(None, self._set_db) + except EmbeddingsModelLoadError: + raise + except Exception as e: + log.error("memory agent", error="failed to set db", details=e) + + if "torchvision::nms does not exist" in str(e): + raise SetDBError("The embeddings you are trying to use require the `torchvision` package to be installed") + + raise SetDBError(str(e)) + def close_db(self): raise NotImplementedError() @@ -180,12 +328,6 @@ class MemoryAgent(Agent): """ raise NotImplementedError() - def _delete(self, meta: dict): - """ - Delete an object from the memory - """ - raise NotImplementedError() - @set_processing async def delete(self, meta: dict): """ @@ -201,13 +343,20 @@ class MemoryAgent(Agent): loop = asyncio.get_running_loop() await loop.run_in_executor(None, self._delete, meta) + def _delete(self, meta: dict): + """ + Delete an object from the memory + """ + raise NotImplementedError() + @set_processing async def get(self, text, character=None, **query): - loop = asyncio.get_running_loop() - - return await loop.run_in_executor( - None, functools.partial(self._get, text, character, **query) - ) + with MemoryRequest(query=text, query_params=query) as active_memory_request: + active_memory_request.max_distance = self.max_distance + return await asyncio.to_thread(self._get, text, character, **query) + #return await loop.run_in_executor( + # None, functools.partial(self._get, text, character, **query) + #) def _get(self, text, character=None, **query): raise NotImplementedError() @@ -229,22 +378,6 @@ class MemoryAgent(Agent): super().connect(scene) scene.signals["archive_add"].connect(self.on_archive_add) - def add_chunks(self, lines: list[str], chunk_size=200): - current_chunk = [] - current_size = 0 - for line in lines: - current_size += util.count_tokens(line) - - if current_size > chunk_size: - self.add("\n".join(current_chunk)) - current_chunk = [line] - current_size = util.count_tokens(line) - else: - current_chunk.append(line) - - if current_chunk: - self.add("\n".join(current_chunk)) - async def memory_context( self, name: str, @@ -274,6 +407,7 @@ class MemoryAgent(Agent): break return memory_context + @set_processing async def query( self, query: str, @@ -294,6 +428,7 @@ class MemoryAgent(Agent): except IndexError: return None + @set_processing async def multi_query( self, queries: list[str], @@ -334,9 +469,6 @@ class MemoryAgent(Agent): return memory_context -from .registry import register - - @register(condition=lambda: chromadb is not None) class ChromaDBMemoryAgent(MemoryAgent): requires_llm_client = False @@ -372,9 +504,21 @@ class ChromaDBMemoryAgent(MemoryAgent): "embeddings": AgentDetail( icon="mdi-cube-unfolded", value=self.embeddings, + description="The embeddings type.", + ).model_dump(), + "model": AgentDetail( + icon="mdi-brain", + value=self.model, description="The embeddings model.", ).model_dump(), } + + if self.using_local_embeddings: + details["device"] = AgentDetail( + icon="mdi-memory", + value=self.device, + description="The device to use for embeddings.", + ).model_dump() if self.embeddings == "openai" and not self.openai_api_key: # return "No OpenAI API key set" @@ -387,48 +531,6 @@ class ChromaDBMemoryAgent(MemoryAgent): return details - @property - def embeddings(self): - """ - Returns which embeddings to use - - will read from TM_CHROMADB_EMBEDDINGS env variable and default to 'default' using - the default embeddings specified by chromadb. - - other values are - - - openai: use openai embeddings - - instructor: use instructor embeddings - - for `openai`: - - you will also need to provide an `OPENAI_API_KEY` env variable - - for `instructor`: - - you will also need to provide which instructor model to use with the `TM_INSTRUCTOR_MODEL` env variable, which defaults to hkunlp/instructor-xl - - additionally you can provide the `TM_INSTRUCTOR_DEVICE` env variable to specify which device to use, which defaults to cpu - """ - - embeddings = self.config.get("chromadb").get("embeddings") - - assert embeddings in [ - "default", - "openai", - "instructor", - ], f"Unknown embeddings {embeddings}" - - return embeddings - - @property - def USE_OPENAI(self): - return self.embeddings == "openai" - - @property - def USE_INSTRUCTOR(self): - return self.embeddings == "instructor" - @property def db_name(self): return getattr(self, "collection_name", "") @@ -437,38 +539,25 @@ class ChromaDBMemoryAgent(MemoryAgent): def openai_api_key(self): return self.config.get("openai", {}).get("api_key") - def make_collection_name(self, scene): - if self.USE_OPENAI: - model_name = self.config.get("chromadb").get( - "openai_model", "text-embedding-3-small" - ) - if model_name == "text-embedding-ada-002": - suffix = "-openai" - else: - suffix = f"-openai-{model_name}" - elif self.USE_INSTRUCTOR: - suffix = "-instructor" - model = self.config.get("chromadb").get( - "instructor_model", "hkunlp/instructor-xl" - ) - if "xl" in model: - suffix += "-xl" - elif "large" in model: - suffix += "-large" - else: - suffix = "" - - return f"{scene.memory_id}-tm{suffix}" + def make_collection_name(self, scene) -> str: + # generate plain text collection name + collection_name = f"{self.fingerprint}" + + # chromadb collection names have the following rules: + # Expected collection name that (1) contains 3-63 characters, (2) starts and ends with an alphanumeric character, (3) otherwise contains only alphanumeric characters, underscores or hyphens (-), (4) contains no two consecutive periods (..) and (5) is not a valid IPv4 address + # Step 1: Hash the input string using MD5 + md5_hash = hashlib.md5(collection_name.encode()).hexdigest() + + # Step 2: Ensure the result is exactly 32 characters long + hashed_collection_name = md5_hash[:32] + + return f"{scene.memory_id}-tm-{hashed_collection_name}" + async def count(self): await asyncio.sleep(0) return self.db.count() - @set_processing - async def set_db(self): - loop = asyncio.get_running_loop() - await loop.run_in_executor(None, self._set_db) - def _set_db(self): self._ready_to_add = False @@ -485,20 +574,21 @@ class ChromaDBMemoryAgent(MemoryAgent): log.info( "chromadb agent", status="setting up db", collection_name=collection_name ) - - if self.USE_OPENAI: + + distance_function = self.distance_function + collection_metadata = {"hnsw:space": distance_function} + device = self.actions["_config"].config["device"].value + model_name = self.model + + if self.using_openai_embeddings: if not openai_key: raise ValueError( "You must provide an the openai ai key in the config if you want to use it for chromadb embeddings" ) - model_name = self.config.get("chromadb").get( - "openai_model", "text-embedding-3-small" - ) - log.info( - "crhomadb", - status="using openai", + "chromadb", + embeddings="OpenAI", openai_key=openai_key[:5] + "...", model=model_name, ) @@ -507,38 +597,49 @@ class ChromaDBMemoryAgent(MemoryAgent): model_name=model_name, ) self.db = self.db_client.get_or_create_collection( - collection_name, embedding_function=openai_ef + collection_name, embedding_function=openai_ef, metadata=collection_metadata ) - elif self.USE_INSTRUCTOR: - instructor_device = self.config.get("chromadb").get( - "instructor_device", "cpu" - ) - instructor_model = self.config.get("chromadb").get( - "instructor_model", "hkunlp/instructor-xl" - ) - + elif self.using_instructor_embeddings: log.info( "chromadb", - status="using instructor", - model=instructor_model, - device=instructor_device, + embeddings="Instructor-XL", + model=model_name, + device=device, ) - # ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-mpnet-base-v2") ef = embedding_functions.InstructorEmbeddingFunction( - model_name=instructor_model, device=instructor_device + model_name=model_name, device=device ) log.info("chromadb", status="embedding function ready") - self.db = self.db_client.get_or_create_collection( - collection_name, embedding_function=ef + collection_name, embedding_function=ef, metadata=collection_metadata ) - log.info("chromadb", status="instructor db ready") else: - log.info("chromadb", status="using default embeddings") - self.db = self.db_client.get_or_create_collection(collection_name) + log.info( + "chromadb", + embeddins="SentenceTransformer", + model=model_name, + device=device, + distance_function=distance_function + ) + + try: + ef = embedding_functions.SentenceTransformerEmbeddingFunction( + model_name=model_name, + trust_remote_code=self.trust_remote_code, + device=device + ) + except ValueError as e: + if "`trust_remote_code=True` to remove this error" in str(e): + raise EmbeddingsModelLoadError(model_name, "Model requires `Trust remote code` to be enabled") + raise EmbeddingsModelLoadError(model_name, str(e)) + + + self.db = self.db_client.get_or_create_collection( + collection_name, embedding_function=ef, metadata=collection_metadata + ) self.scene._memory_never_persisted = self.db.count() == 0 log.info("chromadb agent", status="db ready") @@ -698,23 +799,25 @@ class ChromaDBMemoryAgent(MemoryAgent): _results = self.db.query(query_texts=[text], where=where, n_results=limit) - # import json - # print(json.dumps(_results["ids"], indent=2)) - # print(json.dumps(_results["distances"], indent=2)) + #import json + #print(json.dumps(_results["ids"], indent=2)) + #print(json.dumps(_results["distances"], indent=2)) results = [] - max_distance = 1.5 - if self.USE_INSTRUCTOR: - max_distance = 1 - elif self.USE_OPENAI: - max_distance = 1 + max_distance = self.max_distance + + closest = None + + active_memory_request = memory_request.get() for i in range(len(_results["distances"][0])): distance = _results["distances"][0][i] doc = _results["documents"][0][i] meta = _results["metadatas"][0][i] + + active_memory_request.add_result(doc, distance, meta) if not meta: log.warning("chromadb agent get", error="no meta", doc=doc) @@ -725,6 +828,11 @@ class ChromaDBMemoryAgent(MemoryAgent): # skip pin_only entries if meta.get("pin_only", False): continue + + if closest is None: + closest = {"distance": distance, "doc": doc} + elif distance < closest["distance"]: + closest = {"distance": distance, "doc": doc} if distance < max_distance: date_prefix = self.convert_ts_to_date_prefix(ts) @@ -736,14 +844,19 @@ class ChromaDBMemoryAgent(MemoryAgent): doc = MemoryDocument(doc, meta, _results["ids"][0][i], raw) results.append(doc) - else: - break + active_memory_request.accept_result(str(doc), distance, meta) # log.debug("crhomadb agent get", result=results[-1], distance=distance) if len(results) > limit: break - + + log.debug("chromadb agent get", closest=closest, max_distance=max_distance) + self.last_query = { + "query": text, + "closest": closest, + } + return results def convert_ts_to_date_prefix(self, ts): diff --git a/src/talemate/agents/memory/context.py b/src/talemate/agents/memory/context.py new file mode 100644 index 00000000..693ba6cd --- /dev/null +++ b/src/talemate/agents/memory/context.py @@ -0,0 +1,99 @@ +""" +Context manager that collects and tracks memory agent requests +for profiling and debugging purposes +""" + +import contextvars +import pydantic +import structlog +import time + +from talemate.emit import emit +from talemate.agents.context import active_agent + +__all__ = [ + "MemoryRequest", + "start_memory_request" + "MemoryRequestState" + "memory_request" +] + +log = structlog.get_logger() + +DEBUG_MEMORY_REQUESTS = False + +class MemoryRequestResult(pydantic.BaseModel): + doc: str + distance: float + meta: dict = pydantic.Field(default_factory=dict) + +class MemoryRequestState(pydantic.BaseModel): + query:str + results: list[MemoryRequestResult] = pydantic.Field(default_factory=list) + accepted_results: list[MemoryRequestResult] = pydantic.Field(default_factory=list) + query_params: dict = pydantic.Field(default_factory=dict) + closest_distance: float | None = None + furthest_distance: float | None = None + max_distance: float | None = None + + def add_result(self, doc:str, distance:float, meta:dict): + self.results.append(MemoryRequestResult(doc=doc, distance=distance, meta=meta)) + self.closest_distance = min(self.closest_distance, distance) if self.closest_distance is not None else distance + self.furthest_distance = max(self.furthest_distance, distance) if self.furthest_distance is not None else distance + + def accept_result(self, doc:str, distance:float, meta:dict): + self.accepted_results.append(MemoryRequestResult(doc=doc, distance=distance, meta=meta)) + + @property + def closest_text(self): + return str(self.results[0].doc) if self.results else None + +memory_request = contextvars.ContextVar("memory_request", default=None) + + +class MemoryRequest: + + def __init__(self, query:str, query_params:dict=None): + self.query = query + self.query_params = query_params + + def __enter__(self): + self.state = MemoryRequestState(query=self.query, query_params=self.query_params) + self.token = memory_request.set(self.state) + self.time_start = time.time() + return self.state + + def __exit__(self, *args): + + self.time_end = time.time() + + if DEBUG_MEMORY_REQUESTS: + max_length = 50 + query = self.state.query[:max_length]+"..." if len(self.state.query) > max_length else self.state.query + log.debug("MemoryRequest", number_of_results=len(self.state.results), query=query) + log.debug("MemoryRequest", number_of_accepted_results=len(self.state.accepted_results), query=query) + + for result in self.state.results: + # distance to 2 decimal places + log.debug("MemoryRequest RESULT", distance=f"{result.distance:.2f}", doc=result.doc[:max_length]+"...") + + agent_context = active_agent.get() + + emit("memory_request", data=self.state.model_dump(), meta={ + "agent_stack": agent_context.agent_stack if agent_context else [], + "agent_stack_uid": agent_context.agent_stack_uid if agent_context else None, + "duration": self.time_end - self.time_start, + }, websocket_passthrough=True) + + memory_request.reset(self.token) + return False + + +# decorator that opens a memory request context +async def start_memory_request(query): + async def decorator(fn): + async def wrapper(*args, **kwargs): + with MemoryRequest(query): + return await fn(*args, **kwargs) + return wrapper + return decorator \ No newline at end of file diff --git a/src/talemate/agents/memory/exceptions.py b/src/talemate/agents/memory/exceptions.py new file mode 100644 index 00000000..ffe6fa17 --- /dev/null +++ b/src/talemate/agents/memory/exceptions.py @@ -0,0 +1,18 @@ +__all__ = [ + 'EmbeddingsModelLoadError', + 'MemoryAgentError', + 'SetDBError' +] + +class MemoryAgentError(Exception): + pass + +class SetDBError(OSError, MemoryAgentError): + + def __init__(self, details:str): + super().__init__(f"Memory Agent - Failed to set up the database: {details}") + +class EmbeddingsModelLoadError(ValueError, MemoryAgentError): + + def __init__(self, model_name:str, details:str): + super().__init__(f"Memory Agent - Failed to load embeddings model {model_name}: {details}") \ No newline at end of file diff --git a/src/talemate/agents/narrator.py b/src/talemate/agents/narrator.py index 6e16938a..e25ae161 100644 --- a/src/talemate/agents/narrator.py +++ b/src/talemate/agents/narrator.py @@ -8,6 +8,10 @@ from typing import TYPE_CHECKING, Callable, List, Optional, Union import structlog import talemate.client as client +from talemate.client.context import ( + client_context_attribute, + set_client_context_attribute, +) import talemate.emit.async_signals import talemate.util as util from talemate.agents.base import Agent, AgentAction, AgentActionConfig, AgentEmission @@ -18,6 +22,8 @@ from talemate.events import GameLoopActorIterEvent from talemate.prompts import Prompt from talemate.scene_message import NarratorMessage +from talemate.instance import get_agent + from .registry import register if TYPE_CHECKING: @@ -75,15 +81,32 @@ class NarratorAgent(Agent): self.actions = { "generation_override": AgentAction( enabled=True, - label="Generation Override", - description="Override generation parameters", + label="Generation Settings", config={ + "length": AgentActionConfig( + type="number", + label="Max. Generation Length (tokens)", + description="Maximum number of tokens to generate for narrative text. Some narrative actions generate longer or shorter texts. This value is used as a maximum limit.", + value=192, + min=32, + max=1024, + step=32, + ), "instructions": AgentActionConfig( type="text", label="Instructions", value="Never wax poetic.", description="Extra instructions to give to the AI for narrative generation.", ), + "jiggle": AgentActionConfig( + type="number", + label="Jiggle (Increased Randomness)", + description="If > 0.0 will cause certain generation parameters to have a slight random offset applied to them. The bigger the number, the higher the potential offset.", + value=0.0, + min=0.0, + max=1.0, + step=0.1, + ), }, ), "auto_break_repetition": AgentAction( @@ -138,12 +161,24 @@ class NarratorAgent(Agent): } @property - def extra_instructions(self): + def extra_instructions(self) -> str: if self.actions["generation_override"].enabled: return self.actions["generation_override"].config["instructions"].value return "" - def clean_result(self, result): + @property + def jiggle(self) -> float: + if self.actions["generation_override"].enabled: + return self.actions["generation_override"].config["jiggle"].value + return 0.0 + + @property + def max_generation_length(self) -> int: + if self.actions["generation_override"].enabled: + return self.actions["generation_override"].config["length"].value + return 128 + + def clean_result(self, result:str, ensure_dialog_format:bool=True, force_narrative:bool=True) -> str: """ Cleans the result of a narration """ @@ -157,13 +192,36 @@ class NarratorAgent(Agent): cleaned = [] for line in result.split("\n"): + log.debug("clean_result", line=line) + + character_dialogue_detected = False + for character_name in character_names: - if line.startswith(f"{character_name}:"): + if line.lower().startswith(f"{character_name}:"): + character_dialogue_detected = True + elif line.startswith(f"{character_name.upper()}"): + character_dialogue_detected = True + + if character_dialogue_detected: break + + if character_dialogue_detected: + break + cleaned.append(line) result = "\n".join(cleaned) - # result = util.strip_partial_sentences(result) + + result = util.strip_partial_sentences(result) + + if force_narrative: + if "*" not in result and '"' not in result: + result = f"*{result.strip()}*" + + if ensure_dialog_format: + result = util.ensure_dialog_format(result) + + return result def connect(self, scene): @@ -259,17 +317,18 @@ class NarratorAgent(Agent): }, ) - response = response.strip("*") - response = util.strip_partial_sentences(response) - - response = f"*{response.strip('*')}*" + response = self.clean_result(response.strip()) return response @set_processing - async def progress_story(self, narrative_direction: str = None): + async def progress_story(self, narrative_direction: str | None = None): """ - Narrate the scene + Narrate scene progression, moving the plot forward. + + Arguments: + + - narrative_direction: A string describing the direction the narrative should take. If not provided, will attempt to subtly move the story forward. """ scene = self.scene @@ -302,13 +361,7 @@ class NarratorAgent(Agent): self.scene.log.info("progress_story", response=response) response = self.clean_result(response.strip()) - - response = response.strip().strip("*") - response = f"*{response}*" - if response.count("*") % 2 != 0: - response = response.replace("*", "") - response = f"*{response}*" - + return response @set_processing @@ -331,11 +384,11 @@ class NarratorAgent(Agent): "extra_instructions": self.extra_instructions, }, ) - log.info("narrate_query", response=response) - response = self.clean_result(response.strip()) - log.info("narrate_query (after clean)", response=response) - if as_narrative: - response = f"*{response}*" + response = self.clean_result( + response.strip(), + ensure_dialog_format=False, + force_narrative=as_narrative + ) return response @@ -357,8 +410,7 @@ class NarratorAgent(Agent): }, ) - response = self.clean_result(response.strip()) - response = f"*{response}*" + response = self.clean_result(response.strip(), ensure_dialog_format=False, force_narrative=True) return response @@ -434,7 +486,6 @@ class NarratorAgent(Agent): log.info("narrate_time_passage", response=response) response = self.clean_result(response.strip()) - response = f"*{response}*" return response @@ -496,7 +547,6 @@ class NarratorAgent(Agent): ) response = self.clean_result(response.strip().strip("*")) - response = f"*{response}*" return response @@ -520,7 +570,6 @@ class NarratorAgent(Agent): ) response = self.clean_result(response.strip().strip("*")) - response = f"*{response}*" return response @@ -544,7 +593,6 @@ class NarratorAgent(Agent): log.info("paraphrase", narration=narration, response=response) response = self.clean_result(response.strip().strip("*")) - response = f"*{response}*" return response @@ -629,10 +677,21 @@ class NarratorAgent(Agent): kind=kind, agent_function_name=agent_function_name, ) - character_names = [f"\n{c.name}:" for c in self.scene.get_characters()] + + # depending on conversation format in the context, stopping strings + # for character names may change format + conversation_agent = get_agent("conversation") + + if conversation_agent.conversation_format == "movie_script": + character_names = [f"\n{c.name.upper()}\n" for c in self.scene.get_characters()] + else: + character_names = [f"\n{c.name}:" for c in self.scene.get_characters()] + if prompt_param.get("extra_stopping_strings") is None: prompt_param["extra_stopping_strings"] = [] prompt_param["extra_stopping_strings"] += character_names + + self.set_generation_overrides(prompt_param) def allow_repetition_break( self, kind: str, agent_function_name: str, auto: bool = False @@ -641,3 +700,17 @@ class NarratorAgent(Agent): return False return True + + def set_generation_overrides(self, prompt_param: dict): + if not self.actions["generation_override"].enabled: + return + + prompt_param["max_tokens"] = min(prompt_param.get("max_tokens", 256), self.max_generation_length) + + if self.jiggle > 0.0: + nuke_repetition = client_context_attribute("nuke_repetition") + if nuke_repetition == 0.0: + # we only apply the agent override if some other mechanism isn't already + # setting the nuke_repetition value + nuke_repetition = self.jiggle + set_client_context_attribute("nuke_repetition", nuke_repetition) \ No newline at end of file diff --git a/src/talemate/agents/visual/__init__.py b/src/talemate/agents/visual/__init__.py index c6da4a24..65042ddc 100644 --- a/src/talemate/agents/visual/__init__.py +++ b/src/talemate/agents/visual/__init__.py @@ -78,6 +78,15 @@ class VisualBase(Agent): label="Default Style", description="The default style to use for visual processing", ), + "timeout": AgentActionConfig( + type="number", + value=300, + label="Image generation timeout", + min=1, + max=900, + step=50, + description="Timeout in seconds. If the backend does not generate an image within this time, it will be considered failed.", + ), }, ), "automatic_setup": AgentAction( @@ -95,6 +104,7 @@ class VisualBase(Agent): label="Process in Background", description="Process renders in the background", ), + "_prompts": AgentAction( enabled=True, container=True, @@ -165,6 +175,10 @@ class VisualBase(Agent): self.actions["_config"].config["default_style"].value, Style() ) + @property + def generate_timeout(self): + return self.actions["_config"].config["timeout"].value + @property def ready(self): return self.backend_ready diff --git a/src/talemate/agents/visual/automatic1111.py b/src/talemate/agents/visual/automatic1111.py index 2fd8da38..22079a3c 100644 --- a/src/talemate/agents/visual/automatic1111.py +++ b/src/talemate/agents/visual/automatic1111.py @@ -21,6 +21,43 @@ from .style import STYLE_MAP, Style log = structlog.get_logger("talemate.agents.visual.automatic1111") +SAMPLING_METHODS = [ + {"value": "DPM++ 2M", "label": "DPM++ 2M"}, + {"value": "DPM++ SDE", "label": "DPM++ SDE"}, + {"value": "DPM++ 2M SDE", "label": "DPM++ 2M SDE"}, + {"value": "DPM++ 2M SDE Heun", "label": "DPM++ 2M SDE Heun"}, + {"value": "DPM++ 2S a", "label": "DPM++ 2S a"}, + {"value": "DPM++ 3M SDE", "label": "DPM++ 3M SDE"}, + {"value": "Euler a", "label": "Euler a"}, + {"value": "Euler", "label": "Euler"}, + {"value": "LMS", "label": "LMS"}, + {"value": "Heun", "label": "Heun"}, + {"value": "DPM2", "label": "DPM2"}, + {"value": "DPM2 a", "label": "DPM2 a"}, + {"value": "DPM fast", "label": "DPM fast"}, + {"value": "DPM adaptive", "label": "DPM adaptive"}, + {"value": "Restart", "label": "Restart"}, +] +SAMPLING_METHODS = sorted(SAMPLING_METHODS, key=lambda x: x["label"]) + + +SAMPLING_SCHEDULES = [ + {"value": "Automatic", "label": "Automatic"}, + {"value": "Uniform", "label": "Uniform"}, + {"value": "Karras", "label": "Karras"}, + {"value": "Exponential", "label": "Exponential"}, + {"value": "polyPolyexponentialexponential", "label": "Polyexponential"}, + {"value": "SGM Uniform", "label": "SGM Uniform"}, + {"value": "KL Optimal", "label": "KL Optimal"}, + {"value": "Align Your Steps", "label": "Align Your Steps"}, + {"value": "Simple", "label": "Simple"}, + {"value": "Normal", "label": "Normal"}, + {"value": "DDIM", "label": "DDIM"}, + {"value": "Beta", "label": "Beta"}, +] + +SAMPLING_SCHEDULES = sorted(SAMPLING_SCHEDULES, key=lambda x: x["label"]) + @register(backend_name="automatic1111", label="AUTOMATIC1111") class Automatic1111Mixin: @@ -52,6 +89,29 @@ class Automatic1111Mixin: step=1, description="number of render steps", ), + "sampling_method": AgentActionConfig( + type="text", + choices=SAMPLING_METHODS, + label="Sampling Method", + description="The sampling method to use", + value="DPM++ 2M", + ), + "schedule_type": AgentActionConfig( + type="text", + value="automatic", + choices=SAMPLING_SCHEDULES, + label="Schedule Type", + description="The sampling schedule to use", + ), + "cfg": AgentActionConfig( + type="number", + value=7, + label="CFG Scale", + description="CFG scale", + min=1, + max=30, + step=0.5, + ), "model_type": AgentActionConfig( type="text", value="sdxl", @@ -76,6 +136,18 @@ class Automatic1111Mixin: else: return self.automatic1111_default_render_settings + @property + def automatic1111_sampling_method(self): + return self.actions["automatic1111"].config["sampling_method"].value + + @property + def automatic1111_schedule_type(self): + return self.actions["automatic1111"].config["schedule_type"].value + + @property + def automatic1111_cfg(self): + return self.actions["automatic1111"].config["cfg"].value + async def automatic1111_generate(self, prompt: Style, format: str): url = self.api_url resolution = self.resolution_from_format( @@ -88,13 +160,16 @@ class Automatic1111Mixin: "steps": render_settings.steps, "width": resolution.width, "height": resolution.height, + "cfg_scale": self.automatic1111_cfg, + "sampler_name": self.automatic1111_sampling_method, + "scheduler": self.automatic1111_schedule_type } log.info("automatic1111_generate", payload=payload, url=url) async with httpx.AsyncClient() as client: response = await client.post( - url=f"{url}/sdapi/v1/txt2img", json=payload, timeout=90 + url=f"{url}/sdapi/v1/txt2img", json=payload, timeout=self.generate_timeout ) r = response.json() diff --git a/src/talemate/agents/visual/comfyui.py b/src/talemate/agents/visual/comfyui.py index f4181d37..da2d9ca0 100644 --- a/src/talemate/agents/visual/comfyui.py +++ b/src/talemate/agents/visual/comfyui.py @@ -287,7 +287,7 @@ class ComfyUIMixin: log.info("comfyui_generate", payload=payload, url=url) async with httpx.AsyncClient() as client: - response = await client.post(url=f"{url}/prompt", json=payload, timeout=90) + response = await client.post(url=f"{url}/prompt", json=payload, timeout=self.generate_timeout) log.info("comfyui_generate", response=response.text) diff --git a/src/talemate/agents/visual/openai_image.py b/src/talemate/agents/visual/openai_image.py index 81e85548..ac951059 100644 --- a/src/talemate/agents/visual/openai_image.py +++ b/src/talemate/agents/visual/openai_image.py @@ -112,6 +112,7 @@ class OpenAIImageMixin: quality=self.openai_quality, n=1, response_format="b64_json", + timeout=self.generate_timeout, ) await self.emit_image(response.data[0].b64_json) diff --git a/src/talemate/client/base.py b/src/talemate/client/base.py index f38f4fad..9c9b9037 100644 --- a/src/talemate/client/base.py +++ b/src/talemate/client/base.py @@ -6,6 +6,7 @@ import ipaddress import logging import random import time +import asyncio from typing import Callable, Union import pydantic @@ -22,7 +23,7 @@ from talemate.client.context import client_context_attribute from talemate.client.model_prompts import model_prompt from talemate.context import active_scene from talemate.emit import emit -from talemate.exceptions import SceneInactiveError +from talemate.exceptions import SceneInactiveError, GenerationCancelled # Set up logging level for httpx to WARNING to suppress debug logs. logging.getLogger("httpx").setLevel(logging.WARNING) @@ -469,12 +470,6 @@ class ClientBase: def tune_prompt_parameters(self, parameters: dict, kind: str): parameters["stream"] = False - if client_context_attribute( - "nuke_repetition" - ) > 0.0 and self.jiggle_enabled_for(kind): - self.jiggle_randomness( - parameters, offset=client_context_attribute("nuke_repetition") - ) fn_tune_kind = getattr(self, f"tune_prompt_parameters_{kind}", None) if fn_tune_kind: @@ -485,6 +480,13 @@ class ClientBase: agent_context.agent.inject_prompt_paramters( parameters, kind, agent_context.action ) + + if client_context_attribute( + "nuke_repetition" + ) > 0.0 and self.jiggle_enabled_for(kind): + self.jiggle_randomness( + parameters, offset=client_context_attribute("nuke_repetition") + ) def tune_prompt_parameters_conversation(self, parameters: dict): conversation_context = client_context_attribute("conversation") @@ -553,6 +555,59 @@ class ClientBase: "status", message="Error during generation (check logs)", status="error" ) return "" + + + def _generate_task(self, prompt: str, parameters: dict, kind: str): + """ + Creates an asyncio task to generate text from the given prompt and parameters. + """ + + return asyncio.create_task(self.generate(prompt, parameters, kind)) + + + def _poll_interrupt(self): + """ + Creatates a task that continiously checks active_scene.cancel_requested and + will complete the task if it is requested. + """ + + async def poll(): + while True: + scene = active_scene.get() + if not scene or not scene.active or scene.cancel_requested: + break + await asyncio.sleep(0.3) + return GenerationCancelled("Generation cancelled") + + return asyncio.create_task(poll()) + + async def _cancelable_generate(self, prompt: str, parameters: dict, kind: str) -> str | GenerationCancelled: + + """ + Queues the generation task and the poll task to be run concurrently. + + If the poll task completes before the generation task, the generation task + will be cancelled. + + If the generation task completes before the poll task, the poll task will + be cancelled. + """ + + task_poll = self._poll_interrupt() + task_generate = self._generate_task(prompt, parameters, kind) + + done, pending = await asyncio.wait( + [task_poll, task_generate], + return_when=asyncio.FIRST_COMPLETED + ) + + # cancel the remaining task + for task in pending: + task.cancel() + + # return the result of the completed task + return done.pop().result() + async def send_prompt( self, @@ -609,8 +664,15 @@ class ClientBase: parameters=prompt_param, ) prompt_sent = self.repetition_adjustment(finalized_prompt) - response = await self.generate(prompt_sent, prompt_param, kind) - + + response = await self._cancelable_generate(prompt_sent, prompt_param, kind) + + if isinstance(response, GenerationCancelled): + # generation was cancelled + raise response + + #response = await self.generate(prompt_sent, prompt_param, kind) + response, finalized_prompt = await self.auto_break_repetition( finalized_prompt, prompt_param, response, kind, retries ) @@ -646,8 +708,10 @@ class ClientBase: ) return response + except GenerationCancelled as e: + raise except Exception as e: - self.log.error("send_prompt error", e=e) + self.log.exception("send_prompt error", e=e) emit( "status", message="Error during generation (check logs)", status="error" ) diff --git a/src/talemate/client/context.py b/src/talemate/client/context.py index d1f842f9..e2430b92 100644 --- a/src/talemate/client/context.py +++ b/src/talemate/client/context.py @@ -22,6 +22,9 @@ def model_to_dict_without_defaults(model_instance): for field_name, field in model_instance.__class__.__fields__.items(): if field.default == model_dict.get(field_name): del model_dict[field_name] + # special case for conversation context, dont copy if talking_character is None + if field_name == "conversation" and model_dict.get(field_name).get("talking_character") is None: + del model_dict[field_name] return model_dict diff --git a/src/talemate/client/openai.py b/src/talemate/client/openai.py index ad6608a5..4471e0fa 100644 --- a/src/talemate/client/openai.py +++ b/src/talemate/client/openai.py @@ -31,6 +31,8 @@ SUPPORTED_MODELS = [ "gpt-4o-2024-05-13", "gpt-4o", "gpt-4o-mini", + "o1-preview", + "o1-mini", ] # any model starting with gpt-4- is assumed to support 'json_object' @@ -39,6 +41,8 @@ JSON_OBJECT_RESPONSE_MODELS = [ "gpt-4o", "gpt-4o-mini", "gpt-3.5-turbo-0125", + "o1-preview", + "o1-mini", ] @@ -70,7 +74,7 @@ def num_tokens_from_messages(messages: list[dict], model: str = "gpt-3.5-turbo-0 "Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613." ) return num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613") - elif "gpt-4" in model: + elif "gpt-4" in model or "o1" in model: print( "Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613." ) diff --git a/src/talemate/config.py b/src/talemate/config.py index ef2d6913..772059c2 100644 --- a/src/talemate/config.py +++ b/src/talemate/config.py @@ -6,6 +6,7 @@ from typing import TYPE_CHECKING, Any, ClassVar, Dict, Optional, TypeVar, Union import pydantic import structlog import yaml +from enum import Enum from pydantic import BaseModel, Field from typing_extensions import Annotated @@ -179,13 +180,6 @@ class TTSConfig(BaseModel): voices: list[TTSVoiceSamples] = pydantic.Field(default_factory=list) -class ChromaDB(BaseModel): - instructor_device: str = "cpu" - instructor_model: str = "default" - openai_model: str = "text-embedding-3-small" - embeddings: str = "default" - - class RecentScene(BaseModel): name: str path: str @@ -193,6 +187,66 @@ class RecentScene(BaseModel): date: str cover_image: Union[Asset, None] = None +class EmbeddingFunctionPreset(BaseModel): + embeddings: str = "sentence-transformer" + model: str = "all-MiniLM-L6-v2" + trust_remote_code: bool = False + device: str = "cpu" + distance: float = 1.5 + distance_mod: int = 1 + distance_function: str = "l2" + fast: bool = True + gpu_recommendation: bool = False + local: bool = True + custom: bool = False + + + +def generate_chromadb_presets() -> dict[str, EmbeddingFunctionPreset]: + """ + Returns a dict of default embedding presets + """ + + return { + "default": EmbeddingFunctionPreset(), + "Alibaba-NLP/gte-base-en-v1.5": EmbeddingFunctionPreset( + embeddings="sentence-transformer", + model="Alibaba-NLP/gte-base-en-v1.5", + trust_remote_code=True, + distance=1, + distance_function="cosine", + ), + "openai": EmbeddingFunctionPreset( + embeddings="openai", + model="text-embedding-3-small", + distance=1, + local=False, + ), + "hkunlp/instructor-xl": EmbeddingFunctionPreset( + embeddings="instructor", + model="hkunlp/instructor-xl", + distance=1, + local=True, + fast=False, + gpu_recommendation=True, + ), + "hkunlp/instructor-large": EmbeddingFunctionPreset( + embeddings="instructor", + model="hkunlp/instructor-large", + distance=1, + local=True, + fast=False, + gpu_recommendation=True, + ), + "hkunlp/instructor-base": EmbeddingFunctionPreset( + embeddings="instructor", + model="hkunlp/instructor-base", + distance=1, + local=True, + fast=True, + ), + } + class InferenceParameters(BaseModel): temperature: float = 1.0 @@ -247,6 +301,9 @@ class InferencePresets(BaseModel): class Presets(BaseModel): inference_defaults: InferencePresets = InferencePresets() inference: InferencePresets = InferencePresets() + + embeddings_defaults: dict[str, EmbeddingFunctionPreset] = pydantic.Field(default_factory=generate_chromadb_presets) + embeddings: dict[str, EmbeddingFunctionPreset] = pydantic.Field(default_factory=generate_chromadb_presets) def gnerate_intro_scenes(): @@ -400,8 +457,6 @@ class Config(BaseModel): google: GoogleConfig = GoogleConfig() - chromadb: ChromaDB = ChromaDB() - elevenlabs: ElevenLabsConfig = ElevenLabsConfig() coqui: CoquiConfig = CoquiConfig() @@ -474,11 +529,14 @@ def save_config(config, file_path: str = "./config.yaml"): # we dont want to persist the following, so we drop them: # - presets.inference_defaults - try: + # - presets.embeddings_defaults + + if "inference_defaults" in config["presets"]: config["presets"].pop("inference_defaults") - except KeyError: - pass - + + if "embeddings_defaults" in config["presets"]: + config["presets"].pop("embeddings_defaults") + # for normal presets we only want to persist if they have changed for preset_name, preset in list(config["presets"]["inference"].items()): if not preset.get("changed"): diff --git a/src/talemate/emit/signals.py b/src/talemate/emit/signals.py index 07c23275..b42f4834 100644 --- a/src/talemate/emit/signals.py +++ b/src/talemate/emit/signals.py @@ -20,6 +20,7 @@ AgentStatus = signal("agent_status") RequestAgentStatus = signal("request_agent_status") ClientBootstraps = signal("client_bootstraps") PromptSent = signal("prompt_sent") +MemoryRequest = signal("memory_request") RemoveMessage = signal("remove_message") @@ -71,4 +72,5 @@ handlers = { "image_generation_failed": ImageGenerationFailed, "autocomplete_suggestion": AutocompleteSuggestion, "spice_applied": SpiceApplied, + "memory_request": MemoryRequest, } diff --git a/src/talemate/exceptions.py b/src/talemate/exceptions.py index c1453cf6..88a19b42 100644 --- a/src/talemate/exceptions.py +++ b/src/talemate/exceptions.py @@ -33,6 +33,12 @@ class ResetScene(TalemateInterrupt): pass +class GenerationCancelled(TalemateInterrupt): + """ + Interrupt current scene and return action to the user + """ + pass + class RenderPromptError(TalemateError): """ @@ -68,4 +74,4 @@ class UnknownDataSpec(TalemateError): Exception to raise when the data spec is unknown """ - pass + pass \ No newline at end of file diff --git a/src/talemate/game/engine/__init__.py b/src/talemate/game/engine/__init__.py index e3159b70..a03b7381 100644 --- a/src/talemate/game/engine/__init__.py +++ b/src/talemate/game/engine/__init__.py @@ -19,8 +19,10 @@ nest_asyncio.apply() DEV_MODE = True +def empty_function(*args, **kwargs): + pass -def compile_scene_module(module_code: str, **kwargs): +def compile_scene_module(module_code: str, **kwargs) -> dict[str, callable]: # Compile the module code using RestrictedPython compiled_code = compile_restricted( module_code, filename="", mode="exec" @@ -45,7 +47,10 @@ def compile_scene_module(module_code: str, **kwargs): # Execute the compiled code with the restricted globals exec(compiled_code, restricted_globals, safe_locals) - return safe_locals.get("game") + return { + "game": safe_locals.get("game"), + "on_generation_cancelled": safe_locals.get("on_generation_cancelled", empty_function) + } class GameInstructionsMixin: @@ -153,11 +158,18 @@ class GameInstructionsMixin: # read thje file into _module property with open(module_path, "r") as f: module_code = f.read() + + scene_modules = compile_scene_module(module_code) + + if "game" not in scene_modules: + raise ValueError(f"`game` function not found in scene module {module_path}") + scene._module = GameInstructionScope( director=self, log=log, scene=scene, - module_function=compile_scene_module(module_code), + module_function=scene_modules["game"], + on_generation_cancelled=scene_modules.get("on_generation_cancelled", empty_function) ) async def scene_has_module(self, scene: "Scene"): diff --git a/src/talemate/game/scope.py b/src/talemate/game/scope.py index 5835424a..f37280cc 100644 --- a/src/talemate/game/scope.py +++ b/src/talemate/game/scope.py @@ -8,6 +8,7 @@ import talemate.game.engine.api as scoped_api from talemate.client.base import ClientBase from talemate.emit import emit from talemate.instance import get_agent +from talemate.exceptions import GenerationCancelled if TYPE_CHECKING: from talemate.agents.director import DirectorAgent @@ -53,6 +54,7 @@ class GameInstructionScope: log: object, scene: "Scene", module_function: callable, + on_generation_cancelled: callable = None, ): client = director.client @@ -73,6 +75,7 @@ class GameInstructionScope: self.agents.world_state = scoped_api.agent_world_state.create(scene) self.agents.visual = scoped_api.agent_visual.create(scene) self.module_function = module_function + self.on_generation_cancelled = on_generation_cancelled # set assert_scene_active as a method on all scoped api objects @@ -89,7 +92,11 @@ class GameInstructionScope: self.agents.visual.assert_scene_active = assert_scene_active def __call__(self): - self.module_function(self) + try: + self.module_function(self) + except GenerationCancelled as exc: + if callable(self.on_generation_cancelled): + self.on_generation_cancelled(self, exc) def emit_status(self, status: str, message: str, **kwargs): if kwargs: diff --git a/src/talemate/prompts/templates/creator/autocomplete-dialogue.jinja2 b/src/talemate/prompts/templates/creator/autocomplete-dialogue.jinja2 index 599d32f6..c750de83 100644 --- a/src/talemate/prompts/templates/creator/autocomplete-dialogue.jinja2 +++ b/src/talemate/prompts/templates/creator/autocomplete-dialogue.jinja2 @@ -11,7 +11,11 @@ {% endfor %} <|CLOSE_SECTION|> <|SECTION:TASK|> +{% if not can_coerce -%} Continue {{ character.name }}'s unfinished line in this screenplay. +{%- else -%} +Write {{ character.name }}'s next line in this screenplay. +{%- endif %} Your response MUST only be the new parts of {{ character.name }}'s dialogue, not the entire line. Your response MUST be short. (10 - 15 words) @@ -20,11 +24,12 @@ Your response MUST NOT include the provided text, only the new parts. All actions and prose must be contained within * markers. All spoken word must be contained within " markers. -Continue this text: {{ character.name }}: {{ input }} {% if not can_coerce -%} +Continue this text: {{ character.name }}: {{ input }} Continuation: <|CLOSE_SECTION|> {%- else -%} <|CLOSE_SECTION|> -{{ bot_token }}{{ input }} +{{ bot_token }}{{ character.name.upper() }} +{{ input }} {%- endif -%} \ No newline at end of file diff --git a/src/talemate/prompts/templates/creator/contextual-generate.jinja2 b/src/talemate/prompts/templates/creator/contextual-generate.jinja2 index 20e3a071..eee64fb5 100644 --- a/src/talemate/prompts/templates/creator/contextual-generate.jinja2 +++ b/src/talemate/prompts/templates/creator/contextual-generate.jinja2 @@ -96,7 +96,12 @@ You must only generate one line of example dialogue for {{ character_name }}. {% endif -%} {#- SCENE INTRO -#} {% elif context_typ == "scene intro" %} -{{ action_task }} introduction for the scene. This is the first text that is shown to {{ scene.get_player_character().name }} when they enter the scene. It must setup an interesting entry point for them to participate in the scene and interact with {% if scene.num_npc_characters() %}the other characters and the environment.{% else %}the environment.{% endif %} +{{ action_task }} introduction for the scene. This is the first text that is shown to {{ scene.get_player_character().name or "the reader" }} when they start the scene. + +It must contain enough context for the reader to dive right in. Assume that the reader has not looked at the character or scene descriptions. + +It must setup an interesting entry point for the reader to participate in the scene and interact with {% if scene.num_npc_characters() %}the other characters and the environment.{% else %}the environment.{% endif %} + {#- GENERAL CONTEXT -#} {% else %} {% if context_name.endswith("?") -%} diff --git a/src/talemate/prompts/templates/narrator/narrate-character.jinja2 b/src/talemate/prompts/templates/narrator/narrate-character.jinja2 index 48932383..7397b59f 100644 --- a/src/talemate/prompts/templates/narrator/narrate-character.jinja2 +++ b/src/talemate/prompts/templates/narrator/narrate-character.jinja2 @@ -13,9 +13,8 @@ <|SECTION:INFORMATION|> {{ query_memory("How old is {character.name}?") }} -{{ query_memory("What does {character.name} look like?") }} -{{ query_scene("Where is {character.name} and what is {character.name} doing?") }} -{{ query_scene("what is {character.name} wearing? Be explicit.") }} +{{ query_memory("What does {character.name} look like? Provide a visual description.") }} +{{ query_scene("Where is {character.name}? What is {character.name} doing? What is {character.name} wearing?") }} <|CLOSE_SECTION|> <|SECTION:TASK|> diff --git a/src/talemate/prompts/templates/narrator/narrate-progress.jinja2 b/src/talemate/prompts/templates/narrator/narrate-progress.jinja2 index 7beb50f9..4b96c4b9 100644 --- a/src/talemate/prompts/templates/narrator/narrate-progress.jinja2 +++ b/src/talemate/prompts/templates/narrator/narrate-progress.jinja2 @@ -14,28 +14,21 @@ Player Character: {{ player_character.name }} {% endfor %} <|CLOSE_SECTION|> <|SECTION:TASK|> -YOU MUST WRITE FROM THE PERSPECTIVE OF THE NARRATOR. - -Continue the current dialogue by narrating the progression of the scene. - -If the scene is over, narrate the beginning of the next scene. - -Consider the entire context and honor the sequentiality of the scene. Continue based on the final state of the dialogue. - -Progression of the scene is important. The last line is the most important, the first line is the least important. - -Be creative and generate something new and interesting, but stay true to the setting and context of the story so far. - -Use an informal and colloquial register with a conversational tone. Overall, the narrative is informal, conversational, natural, and spontaneous, with a sense of immediacy. - -Narration style should be that of a 90s point and click adventure game. You are omniscient and can describe the scene in detail. - -YOU MUST WRITE FROM THE PERSPECTIVE OF THE NARRATOR. - -Only generate new narration. Avoid including any character's internal thoughts or dialogue. +Maintain the existing writing style consistently throughout your narration. +Advance the scene through vivid narration. Focus on the protagonist's actions, thoughts, and surroundings. +Maintain continuity with the overall context. Prioritize scene progression. +Use sensory details and internal monologue for immersion. +Adopt an informal, conversational tone similar to 90s adventure games. +Narrate as an omniscient storyteller, describing scenes and characters' inner experiences. +Generate descriptive prose and internal thoughts. Avoid direct speech. +Begin the next scene if the current one has ended. +Speak only as the narrator, guiding the reader through the story world. +Remember: You are the all-seeing narrator. Immerse the reader in the story through your descriptions and insights. {% if narrative_direction %} Directions for new narration: {{ narrative_direction }} + +These are directions and the events described have not happened yet, you are writing the narrative based on the directions. {% endif %} Write 2 to 4 sentences. {{ extra_instructions }} diff --git a/src/talemate/prompts/templates/narrator/narrate-query.jinja2 b/src/talemate/prompts/templates/narrator/narrate-query.jinja2 index e4125ab4..081c4c9e 100644 --- a/src/talemate/prompts/templates/narrator/narrate-query.jinja2 +++ b/src/talemate/prompts/templates/narrator/narrate-query.jinja2 @@ -21,20 +21,20 @@ Instruction: Analyze Context, History and Dialogue and then answer the question: {% else -%} Instruction: {{ query }} {% endif %} -When evaluating both story and context, story is more important. You can fill in gaps using imagination as long as it is based on the existing context. +Answer queries about the current scene or world without advancing the plot. +Use the established context to inform your responses, anchoring them to line {{ final_line_number }}. +Provide information that maintains continuity with everything up to and including line {{ final_line_number }}. +Use vivid, descriptive language. Convey information through sensory details and implied thoughts. +Respond as an omniscient, all-seeing narrator with deep knowledge of the story world. +Maintain an informal, conversational tone similar to 90s adventure games. +Respond with 1-2 sentences of concise narration fitting the scene's context. +Avoid direct speech or dialogue. Focus on descriptive prose and implied experiences. +Embody the narrator's role completely, using a unique narrative voice. -Progression of the dialogue is important. The last line is the most important, the first line is the least important. - -Respect the scene progression and answer in the context of line {{ final_line_number }}. - -Use your imagination to fill in gaps in order to answer the question in a confident and decisive manner. Avoid uncertainty and vagueness. - -You answer as the narrator. - -Use an informal and colloquial register with a conversational tone. Overall, the narrative is informal, conversational, natural, and spontaneous, with a sense of immediacy. -Question: {{ query }} -Content Context: This is a specific scene from {{ scene.context }} -Your answer should be in the style of short, concise narration that fits the context of the scene. (1 to 2 sentences) +Remember: You are the narrator. Answer questions confidently and decisively through your perspective, without progressing beyond line {{ final_line_number }}. +Context: This scene is set within {{ scene.context }}. +Final Line Number: {{ final_line_number }} +Question(s): {{query}} {{ extra_instructions }} {% include "rerun-context.jinja2" -%} <|CLOSE_SECTION|> diff --git a/src/talemate/prompts/templates/narrator/narrate-time-passage.jinja2 b/src/talemate/prompts/templates/narrator/narrate-time-passage.jinja2 index 27a2c9bd..a74257af 100644 --- a/src/talemate/prompts/templates/narrator/narrate-time-passage.jinja2 +++ b/src/talemate/prompts/templates/narrator/narrate-time-passage.jinja2 @@ -12,10 +12,12 @@ Player Character: {{ scene.get_player_character().name }} {% endfor %} <|CLOSE_SECTION|> <|SECTION:TASK|> -Narrate the passage of time that just occured, subtly move the story forward, and set up the next scene. +Narrate the passage of time that just occured, subtly move the story forward, and set up the next scene. Your main goal is to fill in what happened during the time passage. {% if narrative %} Directions for new narration: {{ narrative }} + +These are directions and the events described have not happened yet, you are writing the narrative based on the directions. {% endif %} {{ extra_instructions }} diff --git a/src/talemate/server/api.py b/src/talemate/server/api.py index 32fd38cf..95716ae3 100644 --- a/src/talemate/server/api.py +++ b/src/talemate/server/api.py @@ -156,6 +156,9 @@ async def websocket_endpoint(websocket, path): elif action_type == "edit_message": log.info("edit_message", data=data) handler.edit_message(data.get("id"), data.get("text")) + elif action_type == "interrupt": + log.info("interrupt") + handler.scene.interrupt() elif action_type == "request_app_config": log.info("request_app_config") await message_queue.put( diff --git a/src/talemate/server/run.py b/src/talemate/server/run.py index 171eb466..3661c389 100644 --- a/src/talemate/server/run.py +++ b/src/talemate/server/run.py @@ -1,17 +1,93 @@ import argparse import asyncio import os +import signal import sys import structlog import websockets +import re import talemate.config from talemate.server.api import websocket_endpoint +from talemate.version import VERSION log = structlog.get_logger("talemate.server.run") +STARTUP_TEXT = f""" + +████████╗ █████╗ ██╗ ███████╗███╗ ███╗ █████╗ ████████╗███████╗ +╚══██╔══╝██╔══██╗██║ ██╔════╝████╗ ████║██╔══██╗╚══██╔══╝██╔════╝ + ██║ ███████║██║ █████╗ ██╔████╔██║███████║ ██║ █████╗ + ██║ ██╔══██║██║ ██╔══╝ ██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ + ██║ ██║ ██║███████╗███████╗██║ ╚═╝ ██║██║ ██║ ██║ ███████╗ + ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ +v{VERSION} +""" + +async def install_punkt(): + import nltk + + log.info("Downloading NLTK punkt tokenizer") + await asyncio.get_event_loop().run_in_executor(None, nltk.download, "punkt") + log.info("Download complete") + +async def log_stream(stream, log_func): + while True: + line = await stream.readline() + if not line: + break + decoded_line = line.decode().strip() + + # Check if the original line started with "INFO:" (Uvicorn startup messages) + if decoded_line.startswith("INFO:"): + # Use info level for Uvicorn startup messages + log.info("uvicorn", message=decoded_line) + else: + # Use the provided log_func for other messages + log_func("uvicron", message=decoded_line) + +async def run_frontend(host: str = "localhost", port: int = 8080): + if sys.platform == "win32": + activate_cmd = ".\\talemate_env\\Scripts\\activate.bat" + frontend_cmd = f"{activate_cmd} && uvicorn --host {host} --port {port} frontend_wsgi:application" + else: + frontend_cmd = f"/bin/bash -c 'source talemate_env/bin/activate && uvicorn --host {host} --port {port} frontend_wsgi:application'" + frontend_cwd = None + + process = await asyncio.create_subprocess_shell( + frontend_cmd, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + cwd=frontend_cwd, + shell=True, + preexec_fn=os.setsid if sys.platform != "win32" else None + ) + + asyncio.create_task(install_punkt()) + + log.info(f"talemate frontend started", host=host, port=port, server="uvicorn", process=process.pid) + + try: + stdout_task = asyncio.create_task(log_stream(process.stdout, log.info)) + stderr_task = asyncio.create_task(log_stream(process.stderr, log.error)) + + await asyncio.gather(stdout_task, stderr_task) + await process.wait() + finally: + if process.returncode is None: + if sys.platform == "win32": + process.terminate() + else: + os.killpg(os.getpgid(process.pid), signal.SIGTERM) + await process.wait() + +async def cancel_all_tasks(loop): + tasks = [t for t in asyncio.all_tasks(loop) if t is not asyncio.current_task()] + [task.cancel() for task in tasks] + await asyncio.gather(*tasks, return_exceptions=True) + def run_server(args): """ Run the talemate web server using the provided arguments. @@ -31,13 +107,33 @@ def run_server(args): if config.game.world_state.templates.state_reinforcement: Collection.create_from_legacy_config(config) + loop = asyncio.get_event_loop() + start_server = websockets.serve( websocket_endpoint, args.host, args.port, max_size=2**23 ) - asyncio.get_event_loop().run_until_complete(start_server) - log.info("talemate backend started", host=args.host, port=args.port) - asyncio.get_event_loop().run_forever() + + loop.run_until_complete(start_server) + + if not args.backend_only: + frontend_task = loop.create_task(run_frontend(args.frontend_host, args.frontend_port)) + else: + frontend_task = None + log.info("talemate backend started", host=args.host, port=args.port) + try: + loop.run_forever() + except KeyboardInterrupt: + pass + finally: + log.info("Shutting down...") + + if frontend_task: + frontend_task.cancel() + loop.run_until_complete(cancel_all_tasks(loop)) + loop.run_until_complete(loop.shutdown_asyncgens()) + loop.close() + log.info("Shutdown complete") def main(): parser = argparse.ArgumentParser(description="talemate server") @@ -49,8 +145,21 @@ def main(): ) runserver_parser.add_argument("--host", default="localhost", help="Hostname") runserver_parser.add_argument("--port", type=int, default=6000, help="Port") + runserver_parser.add_argument("--backend-only", action="store_true", help="Run the backend only") + + # frontend host and port + runserver_parser.add_argument("--frontend-host", default="localhost", help="Frontend Hostname") + runserver_parser.add_argument("--frontend-port", type=int, default=8080, help="Frontend Port") args = parser.parse_args() + + # wipe screen if backend only mode is not enabled + # reason: backend only is run usually in dev mode and may be worth keeping the console output + if not args.backend_only: + # this needs to work on windows and linux + os.system("cls" if os.name == "nt" else "clear") + + print(STARTUP_TEXT) if args.command == "runserver": run_server(args) @@ -60,4 +169,4 @@ def main(): if __name__ == "__main__": - main() + main() \ No newline at end of file diff --git a/src/talemate/server/websocket_server.py b/src/talemate/server/websocket_server.py index 4779972d..b79d7b4d 100644 --- a/src/talemate/server/websocket_server.py +++ b/src/talemate/server/websocket_server.py @@ -15,6 +15,7 @@ from talemate.emit import Emission, Receiver, abort_wait_for_input, emit from talemate.files import list_scenes_directory from talemate.load import load_scene from talemate.scene_assets import Asset +from talemate.agents.memory.exceptions import MemoryAgentError from talemate.server import ( assistant, character_importer, @@ -203,9 +204,15 @@ class WebsocketHandler(Receiver): scene.active = True with ActiveScene(scene): - scene = await load_scene( - scene, path_or_data, conversation_helper.agent.client, reset=reset - ) + try: + scene = await load_scene( + scene, path_or_data, conversation_helper.agent.client, reset=reset + ) + except MemoryAgentError as e: + emit("status", message=str(e), status="error") + log.error("load_scene", error=str(e)) + return + self.scene = scene @@ -375,6 +382,7 @@ class WebsocketHandler(Receiver): "type": emission.typ, "message": emission.message, "data": emission.data, + "meta": emission.meta, } ) except Exception as e: diff --git a/src/talemate/tale_mate.py b/src/talemate/tale_mate.py index 701654a9..659c1aa7 100644 --- a/src/talemate/tale_mate.py +++ b/src/talemate/tale_mate.py @@ -33,6 +33,7 @@ from talemate.exceptions import ( RestartSceneLoop, TalemateError, TalemateInterrupt, + GenerationCancelled, ) from talemate.game.state import GameState from talemate.instance import get_agent @@ -739,6 +740,15 @@ class Scene(Emitter): self.active_pins = [] # Add an attribute to store the most recent AI Actor self.most_recent_ai_actor = None + + # if the user has requested to cancel the current action + # or series of agent actions this will be true + # + # A check to self.continue_actions() will be made + # + # if self.cancel_requested is True self.continue_actions() will raise + # a GenerationCancelled exception + self.cancel_requested = False self.signals = { "ai_message": signal("ai_message"), @@ -1802,6 +1812,24 @@ class Scene(Emitter): item = f"{actor.character.name}: {actor.character.greeting_text}" emit("character", item, character=actor.character) + max_backscroll = ( + self.config.get("game", {}).get("general", {}).get("max_backscroll", 512) + ) + + # history is not empty, so we are continuing a scene + # need to emit current messages + for item in self.history[-max_backscroll:]: + char_name = item.split(":")[0] + try: + actor = self.get_character(char_name).actor + except AttributeError: + # If the character is not an actor, then it is the narrator + emit(item.typ, item) + continue + emit("character", item, character=actor.character) + if not actor.character.is_player: + self.most_recent_ai_actor = actor + async def _run_game_loop(self, init: bool = True): await self.ensure_memory_db() @@ -1966,7 +1994,11 @@ class Scene(Emitter): await self.save(auto=True) self.emit_status() - + except GenerationCancelled: + signal_game_loop = False + skip_to_player = True + self.next_actor = None + self.log.warning("Generation cancelled, skipping to player") except TalemateInterrupt: raise except LLMAccuracyError as e: @@ -2015,7 +2047,8 @@ class Scene(Emitter): self.saved = False self.emit_status() - + except GenerationCancelled: + continue except TalemateInterrupt: raise except LLMAccuracyError as e: @@ -2248,3 +2281,12 @@ class Scene(Emitter): @property def json(self): return json.dumps(self.serialize, indent=2, cls=save.SceneEncoder) + + + def interrupt(self): + self.cancel_requested = True + + def continue_actions(self): + if self.cancel_requested: + self.cancel_requested = False + raise GenerationCancelled("action cancelled") \ No newline at end of file diff --git a/src/talemate/version.py b/src/talemate/version.py new file mode 100644 index 00000000..84eb2852 --- /dev/null +++ b/src/talemate/version.py @@ -0,0 +1,3 @@ +__all__ = ["VERSION"] + +VERSION = "0.27.0" \ No newline at end of file diff --git a/start-backend.bat b/start-backend.bat index 1517a354..ea6f5309 100644 --- a/start-backend.bat +++ b/start-backend.bat @@ -1 +1 @@ -start cmd /k "cd talemate_env\Scripts && activate && cd ../../ && python src\talemate\server\run.py runserver --host 0.0.0.0 --port 5050" \ No newline at end of file +start cmd /k "cd talemate_env\Scripts && activate && cd ../../ && python src\talemate\server\run.py runserver --host 0.0.0.0 --port 5050 --backend-only" \ No newline at end of file diff --git a/start-backend.sh b/start-backend.sh index 185b78cf..a4c4dd9e 100755 --- a/start-backend.sh +++ b/start-backend.sh @@ -1,3 +1,3 @@ #!/bin/sh . talemate_env/bin/activate -python src/talemate/server/run.py runserver --host 0.0.0.0 --port 5050 \ No newline at end of file +python src/talemate/server/run.py runserver --host 0.0.0.0 --port 5050 --backend-only \ No newline at end of file diff --git a/start-developer.bat b/start-developer.bat new file mode 100644 index 00000000..db90ea8c --- /dev/null +++ b/start-developer.bat @@ -0,0 +1,2 @@ +start cmd /k "cd talemate_frontend && npm run serve" +start cmd /k "cd talemate_env\Scripts && activate && cd ../../ && python src\talemate\server\run.py runserver --host 0.0.0.0 --port 5050" \ No newline at end of file diff --git a/start-frontend.bat b/start-frontend.bat new file mode 100644 index 00000000..e69de29b diff --git a/start.bat b/start.bat index db90ea8c..1517a354 100644 --- a/start.bat +++ b/start.bat @@ -1,2 +1 @@ -start cmd /k "cd talemate_frontend && npm run serve" start cmd /k "cd talemate_env\Scripts && activate && cd ../../ && python src\talemate\server\run.py runserver --host 0.0.0.0 --port 5050" \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100755 index 00000000..185b78cf --- /dev/null +++ b/start.sh @@ -0,0 +1,3 @@ +#!/bin/sh +. talemate_env/bin/activate +python src/talemate/server/run.py runserver --host 0.0.0.0 --port 5050 \ No newline at end of file diff --git a/talemate_frontend/package-lock.json b/talemate_frontend/package-lock.json index 110592e5..f8d6176c 100644 --- a/talemate_frontend/package-lock.json +++ b/talemate_frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "talemate_frontend", - "version": "0.26.0", + "version": "0.27.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "talemate_frontend", - "version": "0.26.0", + "version": "0.27.0", "dependencies": { "@codemirror/lang-markdown": "^6.2.5", "@codemirror/theme-one-dark": "^6.1.2", @@ -2490,22 +2490,12 @@ "version": "8.56.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "devOptional": true, + "dev": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "devOptional": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -4046,9 +4036,9 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -4059,7 +4049,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -5516,9 +5506,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "engines": { "node": ">= 0.8" @@ -5534,9 +5524,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "devOptional": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6238,37 +6228,37 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -6450,13 +6440,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -8033,10 +8023,13 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-source-map": { "version": "1.1.0", @@ -8072,9 +8065,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -8536,10 +8529,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8933,9 +8929,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/path-type": { @@ -9701,12 +9697,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -10209,9 +10205,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -10247,6 +10243,15 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -10341,15 +10346,15 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -11550,12 +11555,11 @@ "dev": true }, "node_modules/webpack": { - "version": "5.92.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.0.tgz", - "integrity": "sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "devOptional": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", @@ -11564,7 +11568,7 @@ "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", diff --git a/talemate_frontend/package.json b/talemate_frontend/package.json index 351d4719..cdb079d0 100644 --- a/talemate_frontend/package.json +++ b/talemate_frontend/package.json @@ -1,6 +1,6 @@ { "name": "talemate_frontend", - "version": "0.26.0", + "version": "0.27.0", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/talemate_frontend/src/components/AIClient.vue b/talemate_frontend/src/components/AIClient.vue index 216116de..e19e9b16 100644 --- a/talemate_frontend/src/components/AIClient.vue +++ b/talemate_frontend/src/components/AIClient.vue @@ -1,92 +1,104 @@